distance_ps ( : : Row, Column, Row1, Column1, Row2, Column2 : DistanceMin, DistanceMax )

Calculate the distances between a point and a line segment.

The operator distance_ps calculates the minimal and maximal distance between a point (Row,Column) and a line segment which is represented by the start point (Row1,Column1) and the end point (Row2,Column2). DistanceMax is the maximal distance between the point and the end points of the line segment. DistanceMin is identical to distance_pl in the case that the point is ``between'' the two endpoints. Otherwise the minimal distance to one of the endpoints is used.


Parameters

Row (input_control)
point.y(-array) -> real / integer
Row of the first point.

Column (input_control)
point.x(-array) -> real / integer
Column of the first point.

Row1 (input_control)
point.y(-array) -> real / integer
Row of the first point of the line segment.

Column1 (input_control)
point.x(-array) -> real / integer
Column of the first point of the line segment.

Row2 (input_control)
point.y(-array) -> real / integer
Row of the second point of the line segment.

Column2 (input_control)
point.x(-array) -> real / integer
Column of the second point of the line segment.

DistanceMin (output_control)
number(-array) -> real
Minimal distance between the point and the line segment

DistanceMax (output_control)
number(-array) -> real
Maximal distance between the point and the line segment


Example
read_image (Image, 'mreut')
dev_open_window (0, 0, 512, 512, 'white', WindowHandle)
dev_display (Image)
dev_set_color ('black')
threshold (Image, Region, 180, 255)
dev_clear_window ()
dev_display (Region)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and',
              10000, 100000000)
get_region_contour (SelectedRegions, Rows, Columns)
RowLine1 := 400
ColLine1 := 50
RowLine2 := 50
ColLine2 := 450
NumberTuple := |Rows|
dev_set_color ('red')
disp_line (WindowHandle, RowLine1, ColLine1, RowLine2, ColLine2)
dev_set_color ('green')
for i := 1 to NumberTuple by 10
  disp_line (WindowHandle, Rows[i], Columns[i]-2, Rows[i], Columns[i]+2)
  disp_line (WindowHandle, Rows[i]-2, Columns[i], Rows[i]+2, Columns[i])
  distance_ps (Rows[i], Columns[i], RowLine1, ColLine1, RowLine2, ColLine2,
               DistanceMin, DistanceMax)
endfor

Result

distance_ps returns 2 (H_MSG_TRUE).


Parallelization Information

distance_ps is reentrant and processed without parallelization.


Alternatives

distance_pl


See also

distance_pp, distance_pr


Module

Basic operators



Copyright © 1996-2005 MVTec Software GmbH