Frederik Ramm schrieb: > Hallo, > > >> Das fände ich immens wichtig. Vor allem langfristig wird es (hoffentlich) >> immer mehr Anwendungen geben, die osm-daten referenzieren und hierfür muss >> man sinnigerweise die id ranziehen. Deswegen wär es unfein, wenn josm einen >> dazu animiert, bestehende objekte zu löschen und neu zu generieren. >> "align nodes in rectangle" wär mir auch zu wenig, es sollte schon "align >> nodes >> in 90°", also dass auch sowas da aligned werden kann: >> ---- >> | | >> | --- >> | | >> |----- >> > > Machst Du mir einen Algorithmus dafuer ;-)? "Finde diejenige > geometrische Figur, die nur rechte Winkel hat und bei der die Summe > der Entfernungen der Punkte vom Original minimal ist" oder so... ich > nehm auch Pseudocode. > > Das einzige, was mir jetzt einfiele, waere, in einer Ecke zu starten, > den naechsten Punkt auf der Linie so zu verschieben, dass es ein > rechter Winkel ist, dann den uebernaechsten undsoweiter, und dann eine > Sonderregel fuer das letzte Segment, um wieder den Anfang zu > "treffen"... > > Bye > Frederik > > Wie wäre es damit: (Ist mir grad so eingefallen, könnte aber funktionieren)
Nimm alle Linien und berechne den absoluten Winkel zur waagerechten so, dass der Winkel zwischen 0° und 180° liegt. (falls der Winkel zwischen 180° und 360° liegt muss man Anfang und Ende vertauschen. ) Speichere den resultierenden Winkel in einem Array. Probiere für alle Winkel zwischen 0° und 89° aus, wie gut die Lage der einzelnen Winkel passt. (Hierzu wird geschaut, wie groß die Summe der Abweichungen aller gespeicherten Winkel von zu testenden Winkel, bzw. dem zu testenden Winkel + 90° ist). Der am besten passende Winkel aus diesem Durchlauf wird dann als Referenz genommen. Jetzt werden alle Knoten durchlaufen, beginnend in der Mitte der Figur. Für den Knoten werden alle verbundenen Linien gewählt und so um den Knoten gedreht, dass der der resultierende Winkel entweder dem Referenzwinkel, dem Referenzwinkel + /-90° oder dem Referenzwinkel + 180° entspricht (Natürlich den Winkel mit der kleinsten Abweichung wählen) und die Länge konstant bleibt. Der Knoten ist nach dieser Operation "fixiert" und darf bei der Bearbeitung der restlichen Knoten nicht mehr verschoben werden. Das ganze wird für alle weiteren Knoten wiederholt. Der Algoritmus wird vermutlich nicht bei allen denkbaren Sonderfällen funktionieren - in diesem Fall bleiben halt nicht angepasste Segmente erhalten. Ich glaube aber dass das im großen und ganzen recht gut funktionieren würde. Gruß, Thomas _______________________________________________ Talk-de mailing list [email protected] http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de

