Herror ::gen_circle (
    Hobject *Circle,
    const HTuple &Row,
    const HTuple &Column,
    const HTuple &Radius
)
HRegion HRegion::GenCircle (
    const HTuple &Row,
    const HTuple &Column,
    const HTuple &Radius
)
HRegionArray HRegionArray::GenCircle (
    const HTuple &Row,
    const HTuple &Column,
    const HTuple &Radius
)

Create a circle.

The operator ::gen_circle generates one or more circles described by the center and Radius. If several circles shall be generated the coordinates must be passed in the form of tuples.

The coordinate system runs from (0,0) (upper left corner) to (Width-1,Height-1). See ::get_system and ::reset_obj_db in this context.

If an integer value (1,2,3..) is given for the radius the result is an even-numbered diameter and thus an asymmetrical circle. In case of an odd-numbered diameter (radius = 1.5,2.5,3.5...) a symmetrical circle is obtained.

If the circle extends beyond the image edge it is clipped to the current image format according to the value of the system flag 'clip_region' (::set_system).


Parameters

Circle (output_object)
region(-array) -> Hobject * : HRegion(Array)
Generated circle.

Row (input_control)
circle.center.y(-array) -> HTuple.double / long
Line index of center.
Default value: 200.0
Suggested values: 0.0, 10.0, 50.0, 100.0, 200.0, 300.0
Typical range of values: 1.0 <= Row <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Column (input_control)
circle.center.x(-array) -> HTuple.double / long
Column index of center.
Default value: 200.0
Suggested values: 0.0, 10.0, 50.0, 100.0, 200.0, 300.0
Typical range of values: 1.0 <= Column <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Radius (input_control)
circle.radius(-array) -> HTuple.double / long
Radius of circle.
Default value: 100.5
Suggested values: 1.0, 1.5, 2.0, 2.5, 3, 3.5, 4, 4.5, 5.5, 6.5, 7.5, 9.5, 11.5, 15.5, 20.5, 25.5, 31.5, 50.5
Typical range of values: 1.0 <= Radius <= 1024.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0
Restriction: Radius > 0.0


Example
open_window(0,0,-1,-1,"root","visible","",&WindowHandle);
read_image(&Image,"meer");
gen_circle(&Circle,300.0,200.0,150.5);
reduce_domain(Image,Circle,Mask);
disp_color(Mask,WindowHandle);

Complexity

Runtime complexity: O(Radius * 2)

Storage complexity (byte): O(Radius * 8)


Result

If the parameter values are correct, the operator ::gen_circle returns the value H_MSG_TRUE. Otherwise an exception handling is raised. The clipping according to the current image format is set via the operator ::set_system('clip_region',<'true'/'false'>). If an empty region is created by clipping (the circle is completely outside of the image format) the operator ::set_system('store_gen_empty_region',<true/false>) determines whether the empty region is put out.


Possible Successors

::paint_region, ::reduce_domain


Alternatives

::gen_ellipse, ::gen_region_polygon_filled, ::gen_region_points, ::gen_region_runs, ::draw_circle


See also

::disp_circle, ::set_shape, ::smallest_circle, ::reduce_domain


Module

Region processing



Copyright © 1996-2002 MVTec Software GmbH