angle_lxangle_lxAngleLxAngleLxangle_lx角度线水平(算子)
名称
angle_lxangle_lxAngleLxAngleLxangle_lx — 计算一条线与水平轴之间的角度。
签名
void AngleLx(const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, HTuple* Angle)
static HTuple HMisc::AngleLx(const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2)
static double HMisc::AngleLx(double Row1, double Column1, double Row2, double Column2)
static void HOperatorSet.AngleLx(HTuple row1, HTuple column1, HTuple row2, HTuple column2, out HTuple angle)
static HTuple HMisc.AngleLx(HTuple row1, HTuple column1, HTuple row2, HTuple column2)
static double HMisc.AngleLx(double row1, double column1, double row2, double column2)
def angle_lx(row_1: MaybeSequence[Union[float, int]], column_1: MaybeSequence[Union[float, int]], row_2: MaybeSequence[Union[float, int]], column_2: MaybeSequence[Union[float, int]]) -> Sequence[float]
def angle_lx_s(row_1: MaybeSequence[Union[float, int]], column_1: MaybeSequence[Union[float, int]], row_2: MaybeSequence[Union[float, int]], column_2: MaybeSequence[Union[float, int]]) -> float
描述
算子 angle_lxangle_lxAngleLxAngleLxAngleLxangle_lx 计算一条线与水平轴之间的角度。作为输入,需要提供线上两点的坐标 (Row1Row1Row1Row1row1row_1,Column1Column1Column1Column1column1column_1,
Row2Row2Row2Row2row2row_2,Column2Column2Column2Column2column2column_2) 。计算过程如下:我们将该线视为一个向量,其起点为 Row1Row1Row1Row1row1row_1,Column1Column1Column1Column1column1column_1,终点为 Row2Row2Row2Row2row2row_2,Column2Column2Column2Column2column2column_2。起点位于水平轴上,并在此后的讨论中定义旋转中心。若终点位于水平轴上方,则该角度(带正号)源于水平轴逆时针方向沿该向量旋转所得的结果。若终点位于水平轴下方,则该角度(带负号)源于水平轴顺时针旋转至该向量所得的结果。结果取决于定义该线的两个点的顺序。参数 AngleAngleAngleAngleangleangle 返回以弧度为单位的角度,范围为 。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
Row1Row1Row1Row1row1row_1 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
线的第一点的行坐标。
Column1Column1Column1Column1column1column_1 (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
线的第一点的列坐标。
Row2Row2Row2Row2row2row_2 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
线的第二点的行坐标。
Column2Column2Column2Column2column2column_2 (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
线的第二点的列坐标。
AngleAngleAngleAngleangleangle (输出控制) angle.rad(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
线与水平轴之间的角度 [弧度]。
示例(HDevelop)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
RowA1 := 255
ColumnA1 := 10
RowA2 := 255
ColumnA2 := 501
gen_contour_polygon_xld (Contour, [RowA1,RowA2], [ColumnA1,ColumnA2])
Row1 := 255
Column1 := 255
for I := 5 to 360 by 5
Row2 := 255 - sin(rad(I)) * 200
Column2 := 255 + cos(rad(I)) * 200
gen_contour_polygon_xld (Contour, [Row1,Row2], [Column1,Column2])
angle_lx (Row1, Column1, Row2, Column2, Angle)
AngleDeg := deg(Angle)
endfor
结果
angle_lxangle_lxAngleLxAngleLxAngleLxangle_lx 返回 2 ( H_MSG_TRUE )。
替代
angle_llangle_llAngleLlAngleLlAngleLlangle_ll
模块
基础