angle_llangle_llAngleLlAngleLlangle_ll角度线线(算子)
名称
angle_llangle_llAngleLlAngleLlangle_ll — 计算两条线之间的角度。
签名
Herror angle_ll(double RowA1, double ColumnA1, double RowA2, double ColumnA2, double RowB1, double ColumnB1, double RowB2, double ColumnB2, double* Angle)
Herror T_angle_ll(const Htuple RowA1, const Htuple ColumnA1, const Htuple RowA2, const Htuple ColumnA2, const Htuple RowB1, const Htuple ColumnB1, const Htuple RowB2, const Htuple ColumnB2, Htuple* Angle)
void AngleLl(const HTuple& RowA1, const HTuple& ColumnA1, const HTuple& RowA2, const HTuple& ColumnA2, const HTuple& RowB1, const HTuple& ColumnB1, const HTuple& RowB2, const HTuple& ColumnB2, HTuple* Angle)
static HTuple HMisc::AngleLl(const HTuple& RowA1, const HTuple& ColumnA1, const HTuple& RowA2, const HTuple& ColumnA2, const HTuple& RowB1, const HTuple& ColumnB1, const HTuple& RowB2, const HTuple& ColumnB2)
static double HMisc::AngleLl(double RowA1, double ColumnA1, double RowA2, double ColumnA2, double RowB1, double ColumnB1, double RowB2, double ColumnB2)
static void HOperatorSet.AngleLl(HTuple rowA1, HTuple columnA1, HTuple rowA2, HTuple columnA2, HTuple rowB1, HTuple columnB1, HTuple rowB2, HTuple columnB2, out HTuple angle)
static HTuple HMisc.AngleLl(HTuple rowA1, HTuple columnA1, HTuple rowA2, HTuple columnA2, HTuple rowB1, HTuple columnB1, HTuple rowB2, HTuple columnB2)
static double HMisc.AngleLl(double rowA1, double columnA1, double rowA2, double columnA2, double rowB1, double columnB1, double rowB2, double columnB2)
def angle_ll(row_a1: MaybeSequence[Union[float, int]], column_a1: MaybeSequence[Union[float, int]], row_a2: MaybeSequence[Union[float, int]], column_a2: MaybeSequence[Union[float, int]], row_b1: MaybeSequence[Union[float, int]], column_b1: MaybeSequence[Union[float, int]], row_b2: MaybeSequence[Union[float, int]], column_b2: MaybeSequence[Union[float, int]]) -> Sequence[float]
def angle_ll_s(row_a1: MaybeSequence[Union[float, int]], column_a1: MaybeSequence[Union[float, int]], row_a2: MaybeSequence[Union[float, int]], column_a2: MaybeSequence[Union[float, int]], row_b1: MaybeSequence[Union[float, int]], column_b1: MaybeSequence[Union[float, int]], row_b2: MaybeSequence[Union[float, int]], column_b2: MaybeSequence[Union[float, int]]) -> float
描述
算子 angle_llangle_llAngleLlAngleLlAngleLlangle_ll 计算两条线之间的角度。输入第一条线 (RowA1RowA1RowA1RowA1rowA1row_a1,ColumnA1ColumnA1ColumnA1ColumnA1columnA1column_a1,
RowA2RowA2RowA2RowA2rowA2row_a2,ColumnA2ColumnA2ColumnA2ColumnA2columnA2column_a2) 和第二条线 (RowB1RowB1RowB1RowB1rowB1row_b1,ColumnB1ColumnB1ColumnB1ColumnB1columnB1column_b1,
RowB2RowB2RowB2RowB2rowB2row_b2,ColumnB2ColumnB2ColumnB2ColumnB2columnB2column_b2) 上两点的坐标。计算过程如下:我们将线视为向量,其起点分别为
RowA1RowA1RowA1RowA1rowA1row_a1,ColumnA1ColumnA1ColumnA1ColumnA1columnA1column_a1 和
RowB1RowB1RowB1RowB1rowB1row_b1,ColumnB1ColumnB1ColumnB1ColumnB1columnB1column_b1,终点分别为 RowA2RowA2RowA2RowA2rowA2row_a2,ColumnA2ColumnA2ColumnA2ColumnA2columnA2column_a2 和
RowB2RowB2RowB2RowB2rowB2row_b2,ColumnB2ColumnB2ColumnB2ColumnB2columnB2column_b2。将向量 A 逆时针旋转到向量 B 上(旋转中心为两条直线的交点)可得出旋转角度。结果取决于点的排列顺序和直线的排列顺序。参数 AngleAngleAngleAngleangleangle 返回以弧度为单位的旋转角度,范围为 -π <= AngleAngleAngleAngleangleangle <= π 。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
RowA1RowA1RowA1RowA1rowA1row_a1 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第一条线第一点的行坐标。
ColumnA1ColumnA1ColumnA1ColumnA1columnA1column_a1 (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第一条线第一点的列坐标。
RowA2RowA2RowA2RowA2rowA2row_a2 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第一条线第二点的行坐标。
ColumnA2ColumnA2ColumnA2ColumnA2columnA2column_a2 (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第一条线第二点的列坐标。
RowB1RowB1RowB1RowB1rowB1row_b1 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第二条线第一点的行坐标。
ColumnB1ColumnB1ColumnB1ColumnB1columnB1column_b1 (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第二条线第一点的坐标列。
RowB2RowB2RowB2RowB2rowB2row_b2 (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
第二条线的第二点的行坐标。
ColumnB2ColumnB2ColumnB2ColumnB2columnB2column_b2 (输入控制) 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])
RowB1 := 255
ColumnB1 := 255
for I := 5 to 360 by 5
RowB2 := 255 - sin(rad(I)) * 200
ColumnB2 := 255 + cos(rad(I)) * 200
gen_contour_polygon_xld (Contour, [RowB1,RowB2], [ColumnB1,ColumnB2])
angle_ll (RowA1, ColumnA1, RowA2, ColumnA2,\
RowB1, ColumnB1, RowB2, ColumnB2, Angle)
AngleDeg := deg(Angle)
endfor
结果
angle_llangle_llAngleLlAngleLlAngleLlangle_ll 返回 2 ( H_MSG_TRUE )。
替代
angle_lxangle_lxAngleLxAngleLxAngleLxangle_lx
模块
基础