Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Polygon.Inflate (https://www.delphipraxis.net/180996-polygon-inflate.html)

Memnarch 7. Jul 2014 15:34

AW: Polygon.Inflate
 
Also wenn ich das richtig verstehe, geht es hier um eine Skalierungsmethode, die nicht nur einfach die X/Y achsen der punkte basierend zum Mittelpunkt scaliert, sondern auch entscheiden lässt, ob man auf der X achse nur die Punkte skalieren will, die relativ zum Mittelpunkt im Positiven oder Negativen Teilbereich einer Achse liegen?

In diesem Fall würde ich zuerst den Mittelpunkt und die BB(BoundingBox) berechnen und danach selbige in Quadranten aufteilen. Du hast jetzt 4 Bereiche, die bestimmen von welchen der 4 Parametern ein Punkt beeinflusst wird.

Liegt ein Punkt im oberen linken Quadranten wird er beeinflusst von
Y+ Achse(nteil?)
x- Achse

Was Top/Left entspricht.

Ein punkt der Direkt auf der X-Achse liegt(Egal ob X+ oder X- Teilbereich) kann nicht von der Y-Achse beeinflusst werden. In diesem Fall zählen nur Left oder Right Werte. Dies scheint z.B. im ersten Eintrag gar nicht berücksichtigt zu werden. Das selbe gilt natürlich auch umgekehrt für die Y-Achse

Bjoerk 7. Jul 2014 15:58

AW: Polygon.Inflate
 
Also ich hab jetzt so ziemlich je Kombination von Skalieren und Normalisieren ausprobiert. Scheiten alle daran daß man nicht weiß in welche Richtung man normaliseren muß. Und wie die Bauleute natürlich sofort gemerkt haben, in Wirklichkeit ist es noch viel komplizierter. Die Margins verstehen sich senkrecht zu Polygonline und können auch unterschiedlich sein, z.B. Untere Bewehrung Decke vs. Unterzug..

Namenloser 7. Jul 2014 16:21

AW: Polygon.Inflate
 
Zitat:

Zitat von Bjoerk (Beitrag 1264736)
Und wie die Bauleute natürlich sofort gemerkt haben, in Wirklichkeit ist es noch viel komplizierter. Die Margins verstehen sich senkrecht zu Polygonline und können auch unterschiedlich sein, z.B. Untere Bewehrung Decke vs. Unterzug..

Das muss nicht unbedingt komplizierter sein, du müsstest nur mal ganz genau beschreiben, was da passieren soll. Nicht jeder kennt sich mit irgendwelchen Bau-Richtlinien (?) aus.

Zeichne doch mal ein paar aussagekräftige Beispiele. Ein interessantes Beispiel fände ich z.B. einen (näherungsweisen) Kreis... wie soll das Ergebnis dort aussehen? Da gibt es ja nicht nur links, rechts, oben und unten, sondern ganz viele Zwischenstufen. Was genau passiert mit diesen?

Uwe Raabe 7. Jul 2014 16:37

AW: Polygon.Inflate
 
Es wäre wirklich hilfreich, wenn du dein Problem (wenn möglich ohne Verwendung von Fachbegriffen) vollständig formulieren könntest. Wenn ich das richtig sehe, ist es doch ein rein geometrisches Problem und dazu sollten einige hier was sagen können, selbst wenn sie nicht vom Bau sind. Obwohl ich selbst auch schon so einiges mit Bauleuten gemacht habe, kann ich aus deinen bisherigen Beschreibungen die eigentliche Zielsetzung nicht herauslesen.

Was ich schon mal hatte (im Kunststofffensterbau), war eine Parallelverschiebung (Offset) eines Polygons, bei dem jede Polygonlinie einen eigenen Offset mitbekommt. Ich weiß aber nicht, ob das hier das erwünschte Ziel ist.

Jens01 7. Jul 2014 16:48

AW: Polygon.Inflate
 
Ich probiere es nochmals..
Du hast ein Polygon, das vom Bauteilquerschnitt vorgegeben wird. Es gibt für jede Strecke eine parallele Strecke mit bestimmten Abstand.
Ich würde jede einzelne Strecke einfach kopieren und parallel verschieben. Die Polygonpunkte werden über die Schnittpunkte der neuen Strecken/ Geraden ermittelt.
Oder?

Bjoerk 7. Jul 2014 17:19

AW: Polygon.Inflate
 
Wenn du mir sagst ob der Abstand pos oder neg ist? z.B. T Querschnitt

Bjoerk 7. Jul 2014 17:21

AW: Polygon.Inflate
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1264743)
Was ich schon mal hatte (im Kunststofffensterbau), war eine Parallelverschiebung (Offset) eines Polygons, bei dem jede Polygonlinie einen eigenen Offset mitbekommt. Ich weiß aber nicht, ob das hier das erwünschte Ziel ist.

Genau das, wobei die Offsets anhand der 4 Margins selbst bestimmt werden sollen.

Aphton 7. Jul 2014 17:24

AW: Polygon.Inflate
 
Liste der Anhänge anzeigen (Anzahl: 1)
Dank #14 stell ich mir das grad so wie im Bild (Anhang) veranschaulicht vor.
Interessantes Problem, werd mir Gedanken darüber machen.. soferns richtig ist.

Namenloser 7. Jul 2014 17:26

AW: Polygon.Inflate
 
Zitat:

Zitat von Bjoerk (Beitrag 1264753)
Zitat:

Zitat von Uwe Raabe (Beitrag 1264743)
Was ich schon mal hatte (im Kunststofffensterbau), war eine Parallelverschiebung (Offset) eines Polygons, bei dem jede Polygonlinie einen eigenen Offset mitbekommt. Ich weiß aber nicht, ob das hier das erwünschte Ziel ist.

Genau das, wobei die Offsets anhand der 4 Margins selbst bestimmt werden sollen.

Ja, aber wie sollen die daraus bestimmt werden?

Uwe Raabe 7. Jul 2014 17:35

AW: Polygon.Inflate
 
Zitat:

Zitat von Bjoerk (Beitrag 1264753)
Zitat:

Zitat von Uwe Raabe (Beitrag 1264743)
Was ich schon mal hatte (im Kunststofffensterbau), war eine Parallelverschiebung (Offset) eines Polygons, bei dem jede Polygonlinie einen eigenen Offset mitbekommt. Ich weiß aber nicht, ob das hier das erwünschte Ziel ist.

Genau das, wobei die Offsets anhand der 4 Margins selbst bestimmt werden sollen.

Bei einer schrägen Linie dann mit dem allseits beliebten Pythagoras? (Wobei je nach Neigungswinkel der jeweils linke/rechte und obere/untere Marginwert genommen wird). Das ist im wesentlich aber auch das, was Jens vorgeschlagen hat.

Da das Polygon ja irgendwie gerichtet ist (z.B. positiv bei Umlaufsinn gegen den Uhrzeigersinn), ist auch jede einzelne Strecke im Polygon gerichtet. Anhand dieser Richtung ermittelt man den gewünschten Offsetwert und macht eine Parallelverschiebung der Linie um diesen Wert. Dann berechnet man die Schnittpunkte der benachbarten Linien und erhält somit die neuen Polygonpunkte.

Problematisch wird es allerdings, wenn durch die Parallelverschiebung einzelne Polygonsegmente oder ganze Bereiche wegfallen. Das muss man zum einen erst erkennen und dann auch noch richtig behandeln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz