-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jul 2014
Jo Uwe, geht Ellipsenförmig. Habs mal noch schnell implementiert. Thanx!
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jul 2014
Stop. Du hattest völlig Recht. Ich hab's jetzt nicht mehr weiterverfolgt aber m.E. müßte man da doch (vermutlich Ellipsenförmig) interpolieren?
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jul 2014
Da kann man (hier) nicht interpolieren. Bei dem Beispiel von oben und einer 45° Ecke würde ja (MarginTop + MarginLeft) / 2 rauskommen. Das darf hier aber nicht. Die Betondeckung ist in jedem Falle einzuhalten. Das MarginPolygon macht da also einen Sprung.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jul 2014
Betondeckungen verstehen sich immer parallel zur Polygonline.
Vielleicht hierzu meine Methode CornerStyle. Die liefert das "Align" eines Knotens.
Zum Beispiel bekommt ein Polygonknoten CornerStyle = csTopLeft die Margens Top und Left.
Und in #33 ist noch ein Indexfehler drin. Punkt 0 wird nach 1 gespeichert, 1 nach 2 usw..
procedure TPolygon.Inflate(Value: double);
var
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
8. Jul 2014
"Er" weiß jetzt langsam wovon "Wir" reden. Was man zum Beispiel machen könnte wäre zuerst (auf einer Kopie) das 08/15-Inflate von #33 durchführen und dann schauen wohin sich der Punkt bewegt hat. Falls nach rechts dann MarignLeft verwenden, falls nach unten dann MarignTop verwenden usw.. Diese Margins verstehen sich für die Polygonlinien (hier) immer als ShiftV. "Er" weiß jetzt nämlich auch daß...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Das hab ich mal wieder nicht verstanden? :oops:
Ich lass es jetzt erst mal so. Der Benutzer kann ja dann mehrere Margins in das Polygon legen. Vermutlich ist es auch gar nicht möglich so wie ich wollte. Bei AutoCad muß man beim Ausrunden ja auch einen Bezugspunkt angeben.
procedure TPolygon.Inflate(const Value: double);
var
I, J: integer;
C: TFloatPoint;
Line: TFloatLine;
Lines:...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Das Allerdings kann hier nicht passieren weil der Bewehrungskorb in den Betonquerschnitt reinpassen muß (sonst wird der Statiker auf der Baustelle vom Bauleiter verprügelt). Allerdings, und das hat Jens auch nicht gelöst, woher weiß ein Punkt daß er unten rechts ist.
Beispiel T: Bezüglich des SchwerpunktsKOO ist P2 oben rechts.
0*************************1
* *...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Genau das, wobei die Offsets anhand der 4 Margins selbst bestimmt werden sollen.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Wenn du mir sagst ob der Abstand pos oder neg ist? z.B. T Querschnitt
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
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....
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Stell dir eine PolygonForm vor. Jetzt platzierst du darauf ein PolygonPanel und gibst im Objectinspector für dieses Panel Marigns an.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Leider nicht. Das ist wohl das:
procedure TPolygon.CenterZoom(const Faktor: double);
var
I: integer;
P1, P2: TFloatPoint;
begin
P1 := Center;
for I := 0 to FCount - 1 do
begin
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Im Prinzip wie InflateRect. Es muß für alle Polygone gehen. Allerdings sind die Polygone hier immer geschlossen und math. positiv. Es gibt keine negativen Anteile. Brauch ich für mein Bewehrungsmodul. Da werden vier Betondeckungen (Margins) vorgeben.
xxxxxxxxxxxxxxxxx
x ............. x
x ........ . x
xxxxxxxxx . . x
x . . x
...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Bjoerk,
7. Jul 2014
Hat jemand eine Idee für eine Polygon.Inflate?
So gehts schonmal nicht :gruebel:
procedure TPolygon.Inflate(const Top, Bottom, Left, Right: double); // positve Werte verkleinern;
var
I: integer;
dX, dY, vX, vY: double;
P: TFloatPoint;