|
Point_in_ConvexHull | 逻辑型 | |
|
p | 点坐标 | | | |
hull | 点坐标 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
i | 整数型 | | |
n | 整数型 | | |
p0 | 点坐标 | | |
p0.x = 0
p0.y = p.y
计次循环首 (取数组成员数 (hull
) - 1, i
)
如果真 (射线与线段是否有交点 (p0, p, hull
[i
], hull
[i + 1
]))



n = n + 1


计次循环尾 ()
如果真 (射线与线段是否有交点 (p0, p, hull
[取数组成员数 (hull
)], hull
[1
]))

n = n + 1
调试输出 (n, n % 2 = 1
)返回 (n % 2 = 1
)|
射线与线段是否有交点 | 逻辑型 | |
|
a | 点坐标 | | | |
b | 点坐标 | | | | c | 点坐标 | | | | d | 点坐标 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
s1 | 双精度小数型 | | |
s2 | 双精度小数型 | | |
s3 | 双精度小数型 | | |
s4 | 双精度小数型 | | |
d1 | 整数型 | | |
d2 | 整数型 | | |
d3 | 整数型 | | |
d4 | 整数型 | | |
s1 =
ab_cross_ac (a, b, c
)s2 =
ab_cross_ac (a, b, d
)s3 =
ab_cross_ac (c, d, a
)s4 =
ab_cross_ac (c, d, b
)d1 =
dblcmp (s1, 0
)d2 =
dblcmp (s2, 0
)d3 =
dblcmp (s3, 0
)d4 =
dblcmp (s4, 0
)
如果真 (位异或 (d1, d2
) = -2
且 位异或 (d3, d4
) = -2
)
返回 (真)
如果真 (d1 = 0
且 point_on_line (c, a, b
) ≤ 0
)
返回 (假)
如果真 (d2 = 0
且 point_on_line (d, a, b
) ≤ 0
)
返回 (假)
如果真 (d3 = 0
且 point_on_line (a, c, d
) ≤ 0
)
返回 (假)
如果真 (d4 = 0
且 point_on_line (b, c, d
) ≤ 0
)
返回 (假)返回 (假)|
ab_cross_ac | 双精度小数型 | |
|
a | 点坐标 | | | |
b | 点坐标 | | | | c | 点坐标 | | | |
返回 (cross (b.x - a.x, b.y - a.y, c.x - a.x, c.y - a.y
))
|
cross | 双精度小数型 | |
|
x1 | 双精度小数型 | | | |
y1 | 双精度小数型 | | | | x2 | 双精度小数型 | | | | y2 | 双精度小数型 | | | |
返回 (x1 × y2 - x2 × y1
)|
dot | 双精度小数型 | |
|
x1 | 双精度小数型 | | | |
y1 | 双精度小数型 | | | | x2 | 双精度小数型 | | | | y2 | 双精度小数型 | | | |
返回 (x1 × x2 + y1 × y2
)|
point_on_line | 整数型 | |
|
a | 点坐标 | | | |
b | 点坐标 | | | | c | 点坐标 | | | |
返回 (dblcmp (dot (b.x - a.x, b.y - a.y, c.x - a.x, c.y - a.y
), 0
))
如果真 (取绝对值 (x - y
) ≤ 1e-005
)
返回 (0
)
如果真 (x < y
)
返回 (-1
)返回 (1)返回 (选择 (a < b, a, b
))
返回 (选择 (a > b, a, b
))