确定一个点是在 3d space 的圆上的另一个点的左边还是右边?

determine if a point is left or right from another point on a circle in 3d space?

我想确定圆上的一个点是在左边还是右边。 (左右只是符号解释的问题)。为此,我计算了这两个点的叉积以创建法向量。 所以我面临的问题是如何将法线解释为一个标量,它有一个符号表明它是在圆的右半部分还是在左半部分。

我已经创建了一个gif作为插图(C'只是动画点C):

我的想法是将向量 v 中的所有值相加。例如:

v = (0.16, 0.1, -0.2)
vSum = v.x + v.y + v.z = 0.06

result = sign(vSum) = 1

o = (-0.16, -0.1, 0.2)
oSum = o.x + o.y + o.z = -0.06

result = sign(oSum) = -1

不幸的是,这仅在圆静止且不旋转时才有效。 如果它的旋转标志发生变化,那么我的结果就会翻转,这会导致左右站点颠倒。并且点积仅产生正值,但这是一个在旋转圆时不会改变的值。也许这对我有帮助?

我假设您的叉积如下:

c = cross(p - circle center, reference - circle center)

然后就可以和圆法线做点积得到符号:

sign(dot(c, circle normal))