gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXld — Erzeugen einer XLD-Kontur aus einem Ellipsenbogen.
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXld generiert einen oder mehrere Ellipsenbögen
bzw. geschlossene Ellipsen. Die Ellipsen werden dabei
durch ihren Mittelpunkt (RowRowRowRowRowrow, ColumnColumnColumnColumnColumncolumn), die
Orientierung der Hauptachse PhiPhiPhiPhiPhiphi und die Länge der großen
Radius1Radius1Radius1Radius1Radius1radius1 bzw. kleinen Halbachse Radius2Radius2Radius2Radius2Radius2radius2
beschrieben.
Ellipsenbögen werden zusätzlich durch den Anfangs- und Endwinkel
StartPhiStartPhiStartPhiStartPhiStartPhistartPhi und EndPhiEndPhiEndPhiEndPhiEndPhiendPhi des Start- bzw. Endpunktes,
sowie den zugehörigen Umlaufsinn PointOrderPointOrderPointOrderPointOrderPointOrderpointOrder charakterisiert.
Die Anfangs- und Endwinkel werden von der positiven großen Halbachse
aus gemessen, deren Orientierung durch PhiPhiPhiPhiPhiphi 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. 3*pi/2. 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 ContEllipseContEllipseContEllipseContEllipseContEllipsecontEllipse
wird über den Parameter ResolutionResolutionResolutionResolutionResolutionresolution 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.
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)
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)
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)
Sind die Parameterwerte korrekt, dann liefert
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXld den Wert 2 (H_MSG_TRUE). Gegebenenfalls
wird eine Fehlerbehandlung durchgeführt.