gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld — Create an XLD contour that corresponds to an elliptic arc.
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld creates one or more elliptic arcs or
closed ellipses. Ellipses are specified by their center
(RowRowRowrowrow, ColumnColumnColumncolumncolumn), the orientation of the main axis
PhiPhiPhiphiphi, the length of the larger half axis
Radius1Radius1Radius1radius1radius_1, and the length of the smaller half
axis Radius2Radius2Radius2radius2radius_2.
In addition to that, elliptic arcs are characterized by the angle
of the start point StartPhiStartPhiStartPhistartPhistart_phi, the angle of the end point
EndPhiEndPhiEndPhiendPhiend_phi, and the point order PointOrderPointOrderPointOrderpointOrderpoint_order along the
boundary.
Both the angle of the start point and the angle of the end point are
measured from the positive main axis specified with PhiPhiPhiphiphi.
They correspond to the smallest surrounding circle of the ellipse.
The actual start and end point of the ellipse is the intersection of
the ellipse with the orthogonal projection of the corresponding circle
point onto the main axis.
Both angles refer to the coordinate system of the ellipse, i.e.
relative to the main axis and in a mathematical positive direction.
Thus, the two main poles correspond to the angles 0 and
, the two minor poles to the angles
and . To create a closed ellipse
the values 0 and (with positive
point order) have to be passed to the operator. All angles PhiPhiPhiphiphi,
StartPhiStartPhiStartPhistartPhistart_phi, EndPhiEndPhiEndPhiendPhiend_phi take arbitrary values and are mapped
internally to the interval .
The resolution of the resulting contours ContEllipseContEllipseContEllipsecontEllipsecont_ellipse is
controlled via ResolutionResolutionResolutionresolutionresolution containing the maximum Euclidean
distance between neighboring contour points. The resolution is set
to the smallest valid value, if the input value falls below this
value.
Parameter Broadcasting
This operator supports parameter broadcasting.
This means that each parameter can be given as a tuple of length
1 or 'N'"N""N""N""N".
Parameters with tuple length 1 will be repeated internally
such that the number of created items is always 'N'"N""N""N""N".
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
List of values:
'negative'"negative""negative""negative""negative", 'positive'"positive""positive""positive""positive"
ResolutionResolutionResolutionresolutionresolution (input_control) real →HTuplefloatHTupleHtuple (real) (double) (double) (double)
Resolution: Maximum distance between neighboring
contour points.
Default:
1.5
Restriction:
Resolution >= 1.192e-7
Example (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)
Example (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)
Result
gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld returns 2 (
H_MSG_TRUE)
if all parameter values
are correct. If necessary, an exception is raised.