gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld — Erzeugen einer XLD-Kontur aus einem Ellipsenbogen.
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld generiert einen oder mehrere Ellipsenbögen
bzw. geschlossene Ellipsen. Die Ellipsen werden dabei
durch ihren Mittelpunkt (RowRowRowrowrow, ColumnColumnColumncolumncolumn), die
Orientierung der Hauptachse PhiPhiPhiphiphi und die Länge der großen
Radius1Radius1Radius1radius1radius_1 bzw. kleinen Halbachse Radius2Radius2Radius2radius2radius_2
beschrieben.
Ellipsenbögen werden zusätzlich durch den Anfangs- und Endwinkel
StartPhiStartPhiStartPhistartPhistart_phi und EndPhiEndPhiEndPhiendPhiend_phi des Start- bzw. Endpunktes,
sowie den zugehörigen Umlaufsinn PointOrderPointOrderPointOrderpointOrderpoint_order charakterisiert.
Die Anfangs- und Endwinkel werden von der positiven großen Halbachse
aus gemessen, deren Orientierung durch PhiPhiPhiphiphi gegeben ist.
Sie beziehen sich auf den kleinsten die Ellipse umgebenden Kreis.
Der tatsächliche Anfangs- und Endpunkt der Ellipse ergibt sich aus dem
Schnittpunkt der Ellipse mit der Orthogonalprojektion des
entsprechenden Kreispunktes auf die große Halbachse.
Beide Winkel werden dabei im Ellipsenkoordinatensystem bezogen auf die
Hauptachse der Ellipse mathematisch positiv angegeben.
Die beiden Hauptpole der Ellipse haben demnach die Winkel
0 bzw. , die Nebenpole die Winkel
bzw. . Um eine geschlossene Ellipse
zu erhalten, müssen die Werte 0 und
(bei positivem Umlaufsinn) übergeben werden. Für alle Winkel sind beliebige
Werte zugelassen, da diese intern auf das Intervall
abgebildet werden.
Die Auflösung der resultierenden XLD Konturen ContEllipseContEllipseContEllipsecontEllipsecont_ellipse
wird über den Parameter ResolutionResolutionResolutionresolutionresolution festgelegt: Er bestimmt den
maximalen euklidischen Abstand zwischen benachbarten Konturpunkten. Die
Auflösung wird auf den kleinsten zulässigen Wert gesetzt, wenn der
Eingabewert diesen Wert unterschreitet.
Parameter-Broadcasting
Dieser Operator unterstützt Parameter-Broadcasting.
Das bedeutet, dass für jeden Parameter ein Tupel der Länge
1 oder N übergeben werden kann.
Tupel der Länge 1 werden wiederholt verwendet,
so dass immer N Elemente erzeugt und zurückgegeben werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
ResolutionResolutionResolutionresolutionresolution (input_control) real →HTuplefloatHTupleHtuple (real) (double) (double) (double)
Auflösung: Maximaler Abstand zwischen benachbarten
Konturpunkten.
Default:
1.5
Restriktion:
Resolution >= 1.192e-7
Beispiel (HDevelop)
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse_contour_xld(Ellipse,Row,Column,Phi,Radius1,Radius2,0,6.28319, \
'positive',1.5)
length_xld(Ellipse,Length)
* Transform StartPhi so that the start point of the ellipse actually
* intersects the line through origin at the angle StartPhi measured from
* the positive main axis
affine_trans_point_2d ([1.0,0.0,0.0,0.0,1.0*Radius2/Radius1,0.0], \
sin(StartPhi), cos(StartPhi), Qx, Qy)
StartPhiEllipse := atan2(Qx,Qy)
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse_contour_xld(Ellipse,Row,Column,Phi,Radius1,Radius2,0,6.28319, \
'positive',1.5)
length_xld(Ellipse,Length)
* Transform StartPhi so that the start point of the ellipse actually
* intersects the line through origin at the angle StartPhi measured from
* the positive main axis
affine_trans_point_2d ([1.0,0.0,0.0,0.0,1.0*Radius2/Radius1,0.0], \
sin(StartPhi), cos(StartPhi), Qx, Qy)
StartPhiEllipse := atan2(Qx,Qy)
Beispiel (HDevelop)
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse_contour_xld(Ellipse,Row,Column,Phi,Radius1,Radius2,0,6.28319, \
'positive',1.5)
length_xld(Ellipse,Length)
* Transform StartPhi so that the start point of the ellipse actually
* intersects the line through origin at the angle StartPhi measured from
* the positive main axis
affine_trans_point_2d ([1.0,0.0,0.0,0.0,1.0*Radius2/Radius1,0.0], \
sin(StartPhi), cos(StartPhi), Qx, Qy)
StartPhiEllipse := atan2(Qx,Qy)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld den Wert 2 (
H_MSG_TRUE)
. Gegebenenfalls
wird eine Fehlerbehandlung durchgeführt.