Skip to content

projection_plProjectionPlProjectionPlprojection_plprojection_pl🔗

Short description🔗

projection_plProjectionPlProjectionPlprojection_plprojection_pl — Calculate the projection of a point onto a line.

Signature🔗

projection_pl( point.y Row, point.x Column, point.y Row1, point.x Column1, point.y Row2, point.x Column2, out real RowProj, out real ColProj )void ProjectionPl( const HTuple& Row, const HTuple& Column, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, HTuple* RowProj, HTuple* ColProj )static void HOperatorSet.ProjectionPl( HTuple row, HTuple column, HTuple row1, HTuple column1, HTuple row2, HTuple column2, out HTuple rowProj, out HTuple colProj )def projection_pl( row: MaybeSequence[Union[float, int]], column: MaybeSequence[Union[float, int]], row_1: MaybeSequence[Union[float, int]], column_1: MaybeSequence[Union[float, int]], row_2: MaybeSequence[Union[float, int]], column_2: MaybeSequence[Union[float, int]] ) -> Tuple[Sequence[float], Sequence[float]]

def projection_pl_s( row: MaybeSequence[Union[float, int]], column: MaybeSequence[Union[float, int]], row_1: MaybeSequence[Union[float, int]], column_1: MaybeSequence[Union[float, int]], row_2: MaybeSequence[Union[float, int]], column_2: MaybeSequence[Union[float, int]] ) -> Tuple[float, float]Herror projection_pl( double Row, double Column, double Row1, double Column1, double Row2, double Column2, double* RowProj, double* ColProj )

Herror T_projection_pl( const Htuple Row, const Htuple Column, const Htuple Row1, const Htuple Column1, const Htuple Row2, const Htuple Column2, Htuple* RowProj, Htuple* ColProj )

static void HMisc::ProjectionPl( const HTuple& Row, const HTuple& Column, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, HTuple* RowProj, HTuple* ColProj )

static void HMisc::ProjectionPl( double Row, double Column, double Row1, double Column1, double Row2, double Column2, double* RowProj, double* ColProj )

static void HMisc.ProjectionPl( HTuple row, HTuple column, HTuple row1, HTuple column1, HTuple row2, HTuple column2, out HTuple rowProj, out HTuple colProj )

static void HMisc.ProjectionPl( double row, double column, double row1, double column1, double row2, double column2, out double rowProj, out double colProj )

Description🔗

The operator projection_plProjectionPl calculates the projection of a point (Rowrowrow,Columncolumncolumn) onto a line which is represented by the two points (Row1row1row_1,Column1column1column_1) and (Row2row2row_2,Column2column2column_2). The coordinates of the projected point are returned in RowProjrowProjrow_proj and ColProjcolProjcol_proj.

Parameter Broadcasting🔗

This operator supports parameter broadcasting. This means that each parameter can be given as a tuple of length 1 or N. Parameters with tuple length 1 will be repeated internally such that the number of projections is always N.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on internal data level.

Parameters🔗

Rowrowrow (input_control) point.y(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Row coordinate of the point.

Columncolumncolumn (input_control) point.x(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Column coordinate of the point.

Row1row1row_1 (input_control) point.y(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Row coordinate of the first point on the line.

Column1column1column_1 (input_control) point.x(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Column coordinate of the first point on the line.

Row2row2row_2 (input_control) point.y(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Row coordinate of the second point on the line.

Column2column2column_2 (input_control) point.x(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Column coordinate of the second point on the line.

RowProjrowProjrow_proj (output_control) real(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Row coordinate of the projected point.

ColProjcolProjcol_proj (output_control) real(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Column coordinate of the projected point

Example🔗

(HDevelop)

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
Row1 := 300
Column1 := 200
Row2 := 140
Column2 := 400
Rows := 300
Columns := 170
dev_set_color ('cadet blue')
gen_contour_polygon_xld (Contour, [Row1,Row2], [Column1,Column2])
Offset := 0
for Rows := 40 to 280 by 40
  dev_set_color ('red')
  gen_cross_contour_xld (Point,Rows+Offset, Columns, 6, 0)
  projection_pl (Rows+Offset, Columns, Row1, Column1, Row2, Column2, \
                 RowProj, ColProj)
  dev_set_color ('blue')
  gen_cross_contour_xld (RowP, RowProj, ColProj, 6, 0)
  Offset := Offset+30
endfor
(C)
projection_pl(row,column,row1,column1,row2,column2,
              &row_proj,&col_proj)\;

Result🔗

projection_plProjectionPl returns 2 (H_MSG_TRUE).

Module🔗

Foundation