我正在尝试在多边形算法中创建一个快速 2D点,用于命中测试(例如Polygon.contains(p:Point)).对于有效技术的建议将不胜感激.
graphics performance polygon collision-detection point-in-polygon
我有三个向量V1,V2和V3.它们的起点是轴的起源.当我从V1逆时针移动到V2时,如何确定V3是否介于V1和V2之间?
alt text http://www.freeimagehosting.net/uploads/1448ea8896.jpg
无法通过获取角度和评估这些条件(伪代码)来完成:
if angle(V3) > angle(V1) && angle(V3) < angle(V2)
printf("V3 is between V1 and V2")
else
printf("out of the interval")
Run Code Online (Sandbox Code Playgroud)
为了看到它的缺陷,假设该angle函数给出了[-pi pi]范围内的角度.因此,如果角度(V1)= 120(度),角度(V2)= -130,角度(V3)= 150,那么答案(根据上面的代码)是"超出间隔",但如果你四处走动逆时针从V1到V2,它们介于它们之间.
您可能建议将2*pi添加到角度(V2)或类似的东西,但我已经尝试过这样的东西而且它不起作用.
我在MATLAB中编程.
编辑1:它是2D.