我想测试向量(实际上是多边形顶点法线)是面向外还是面向内。多边形绕CW旋转,边从A(实心圆)到B(描边圆)。经过初步计算,我得到了这些法线,现在我想测试一下它们的朝向。
像这样。灰色法线应该无效,而绿色法线应该经过验证。也许我可以通过计算角度,然后简单地比较它们来做到这一点,但我真的很想在这里保留三角函数的调用。
有没有便宜的方法可以以某种方式仅比较“斜率”?http://bryceboe.com/2006/10/23/line-segment-intersection-algorithm/中的类似Bryce Boe CCW算法的东西
如果将法线矢量与线段两点形成的矢量(尾到头是顺时针方向)一起使用,则要从线段矢量到法线,必须逆时针移动。调用法线N和段向量S,逆时针检查变为:
if(cross(S, N) > 0)
// Bad
else
// Good
叉积的计算方法如下:
int cross(Vector p, Vector q)
{ return (p.x*q.y - p.y*q.x);
}
因此,如果法线是N =(0,1)且S =(1,0),则叉积为1 * 1-0 * 0 = 1> 0,这表明法线正在指出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句