哪个点在逆时针方向
which point is at anti clockwise direction
我给出了一组以 p0 为中心点的点。
在这里我想找到关于 p0p3 行的内容,其中 p0p1 或 p0p2 行是逆时针的。 or 在逆时针旋转时首先被分析。
二维叉积
您可以使用两个向量的叉积来找到方向(顺时针或逆时针)。
例如 3 个点 [p1, p2, p3]
定义 2 行 {p1, p2}
和 {p1, p3}
...
P1 = {x:?, y:?}
P2 = {x:?, y:?}
P3 = {x:?, y:?}
获取 p1
到 p2
和 p1
到 p3
的两个向量...
vx1 = p2.x - p1.x
vy1 = p2.y - p1.y
vx2 = p3.x - p1.x
vy2 = p3.y - p1.y
获取向量的叉积...
cross = vx1 * vy2 - vy1 * vx2
或一步到位...
cross = (p2.x - p1.x) * (p3.y - p1.y) - (p2.y - p1.y) * (p3.x - p1.x)
如果 cross
为正,则点 p3
为顺时针,如果 cross
为零,则为平行,如果 cross
为负,则为逆时针
if cross > 0
dir = "clockwise"
else if cross == 0
dir = "parallel"
else
dir = "counter-clockwise"
叉积得到角度
如果对向量进行归一化,还可以获得向量之间的角度
length1 = sqrt(vx1 * vx1 + vy1 * vy1)
vx1 /= length1
vy1 /= length1
length2 = sqrt(vx2 * vx2 + vy2 * vy2)
vx2 /= length2
vy2 /= length2
叉积的反弦是在 -Pi/2(-90 度)到 Pi/2(90 度)范围内的角度,正 CW 和负 CCW
angle = asin(vx1 * vy2 - vy1 * vx2)
我给出了一组以 p0 为中心点的点。
在这里我想找到关于 p0p3 行的内容,其中 p0p1 或 p0p2 行是逆时针的。 or 在逆时针旋转时首先被分析。
二维叉积
您可以使用两个向量的叉积来找到方向(顺时针或逆时针)。
例如 3 个点 [p1, p2, p3]
定义 2 行 {p1, p2}
和 {p1, p3}
...
P1 = {x:?, y:?}
P2 = {x:?, y:?}
P3 = {x:?, y:?}
获取 p1
到 p2
和 p1
到 p3
的两个向量...
vx1 = p2.x - p1.x
vy1 = p2.y - p1.y
vx2 = p3.x - p1.x
vy2 = p3.y - p1.y
获取向量的叉积...
cross = vx1 * vy2 - vy1 * vx2
或一步到位...
cross = (p2.x - p1.x) * (p3.y - p1.y) - (p2.y - p1.y) * (p3.x - p1.x)
如果 cross
为正,则点 p3
为顺时针,如果 cross
为零,则为平行,如果 cross
为负,则为逆时针
if cross > 0
dir = "clockwise"
else if cross == 0
dir = "parallel"
else
dir = "counter-clockwise"
叉积得到角度
如果对向量进行归一化,还可以获得向量之间的角度
length1 = sqrt(vx1 * vx1 + vy1 * vy1)
vx1 /= length1
vy1 /= length1
length2 = sqrt(vx2 * vx2 + vy2 * vy2)
vx2 /= length2
vy2 /= length2
叉积的反弦是在 -Pi/2(-90 度)到 Pi/2(90 度)范围内的角度,正 CW 和负 CCW
angle = asin(vx1 * vy2 - vy1 * vx2)