测试效果
废话
projection_pl(操作员)
名字
projection_pl— 计算点在直线上的投影。
签名
projection_pl( : : Row, Column, Row1, Column1, Row2, Column2 : RowProj, ColProj)
描述
运算符计算 点 (projection_plRow,Column) 添加到一条线上,该行为 由两个点(Row1,Column1) 和 (Row2,Column2).投影的坐标 点以RowProj和ColProj.
执行信息
- 多线程类型:可重入(与非排他性运算符并行运行)。
- 多线程作用域:全局(可以从任何线程调用)。
- 在不进行并行化的情况下进行处理。
参数
Row(input_control)point.y(-数组)→ (实数/整数)
点的行坐标。
Column(input_control)point.x(-数组)→ (实数/整数)
点的列坐标。
Row1(input_control)point.y(-数组)→ (实数/整数)
线上第一个点的行坐标。
Column1(input_control)point.x(-数组)→ (实数/整数)
线上第一个点的列坐标。
Row2(input_control)point.y(-数组)→ (实数/整数)
线上第二个点的行坐标。
Column2(input_control)point.x(-数组)→ (实数/整数)
线上第二个点的列坐标。
RowProj(output_control)real(-数组)→ (真实)
投影点的行坐标。
ColProj(output_control)real(-数组)→ (真实)
投影点的列坐标
测试代码
* Calculate the projection of a point onto a line
*
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
RowLine1 := 400
ColLine1 := 200
RowLine2 := 240
ColLine2 := 400
Rows := 300
Columns := 50
disp_line (WindowID, RowLine1, ColLine1, RowLine2, ColLine2)
n := 0
for Rows := 40 to 200 by 4
dev_set_color ('red')
disp_circle (WindowID, Rows + n, Columns, 10)
projection_pl (Rows + n, Columns, RowLine1, ColLine1, RowLine2, ColLine2, RowProj, ColProj)
dev_set_color ('blue')
* Display the projection on the line
disp_line (WindowID, RowProj - 8, ColProj, RowProj + 8, ColProj)
disp_line (WindowID, RowProj, ColProj - 8, RowProj, ColProj + 8)
distance_ss (Rows, Columns, Rows + n, Columns + n, RowLine1, ColLine1, RowLine2, ColLine2, DistanceMin, DistanceMax)
n := n + 8
endfor