ellipse ( : Ellipse : Row, Column, Phi, Radius1, Radius2 : )

Create an ellipse.

The operator ellipse generates one mor more ellipses with the center (Row, Column), the orientation Phi and the half-radii Radius1 and Radius2. The angle is indicated in arc measure according to the x axis in mathematically positive direction. More than one region can be created by passing tuples of parameter values. The center must be located within the image coordinates. The coordinate system runs from (0,0) (upper left corner) to (Width-1,Height-1). See in this connection get_system and init_horus. If the ellipse reaches beyond the edge of the image it is clipped to the current image format according to the value of the system flag 'clip_region' (set_system).


Parameters

Ellipse (output_object)
region(-array) -> object
Created ellipse(s).

Row (input_control)
ellipse.center.y(-array) -> real / integer
Line index of center.
Default value: 200.0
Suggested values: 0.0, 10.0, 20.0, 50.0, 100.0, 256.0, 300.0, 400.0
Range of values: 1.0 <= Row <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Column (input_control)
ellipse.center.x(-array) -> real / integer
Column index of center.
Default value: 200.0
Suggested values: 0.0, 10.0, 20.0, 50.0, 100.0, 256.0, 300.0, 400.0
Range of values: 1.0 <= Column <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Phi (input_control)
ellipse.angle.rad(-array) -> real / integer
Orientation of the longer radius (Radius1).
Default value: 0.0
Suggested values: -1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097
Range of values: -1.178097 <= Phi <= 1.178097 (lin)
Minimum increment: 0.01
Recommended increment: 0.1

Radius1 (input_control)
ellipse.radius1(-array) -> real / integer
Longer radius.
Default value: 100.0
Suggested values: 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 256.0, 300.0, 400.0
Range of values: 1.0 <= Radius1 <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0
Restriction: Radius1 > 0

Radius2 (input_control)
ellipse.radius2(-array) -> real / integer
Kürzerer Radius.
Default value: 60.0
Suggested values: 1.0, 2.0, 4.0, 5.0, 10.0, 20.0, 50.0, 100.0, 256.0, 300.0, 400.0
Range of values: 1.0 <= Radius2 <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0
Restriction: (Radius2 > 0) && (Radius2 <= Radius1)


Example
open_window(::0,0,-1,-1,'root','visible','':) >
set_insert(::'xor':) >
repeat(:::) >
  get_mbutton(:::Row,Column,Button) >
  ellipse(:Ellipse:Row,Column,Column / 300.0,
         (Row mod 100)+1,(Column mod 50) + 1:) >
  disp_region(Ellipse:::) >
  clear(Ellipse:::) >
until(::Button = 1:).

Complexity

Runtime complexity: O(Radius1 * 2) Storage complexity (byte): O(Radius1 * 8)


Result

If the parameter values are correct, the operator ellipse returns the value TRUE. Otherwise an exception is raised. The clipping of the current image format is set via the operator set_system(::'clip_region',<true/false>:).


Possible Successors

paint_region__, reduce_domain


Alternatives

circle, store_filled_polygon, draw_ellipse


See also

disp_ellipse, set_shape, smallest_circle, reduce_domain



Copyright © 1996-1997 MVTec Software GmbH