2014-10-17 43 views
-2

我一直在使用lwjgl和几何部分的j3d。我仍在研究碰撞。到目前为止,我碰到的是正常工作,但有2个问题。总结我当前的碰撞方式,它测试前一个坐标和当前坐标是否通过一个三角形(渲染了什么东西),然后找到它刚刚相交的三角形上最接近当前坐标的点,让你去那里。这也使得你的y坐标上升了0.001。 这个工作血统,但上升.001是不好的,如果你去一个90 *角的三角形去更新,你可以左转,但你不能退出它,就好像你陷入了它一样。 这里是它的工作原理图纸上的imgur为通过2个点的线添加长度并获得新的终点

http://i.imgur.com/1gMhRut.png

从这里我想补充说,001到当前坐标和最近点(我已经知道了这点)之间的长度,并获得新的当前点。

btw prev是人在移动到cur点之前所在的位置,然后测试这两个点是否与三角形相交,然后我得到最接近prev的点,如果它是的,它被定义为最接近图片中。我已经可以计算所有这些点

回答

0

如果我正确地理解了你,你想添加.001离开三角形。如果是这种情况,那么你需要一个长度为0.001的矢量垂直于三角形。如果是三角形,通常称为“正常”。如果你已经有了一个三角形的法线,然后乘以.001并加上。如果你还没有一个正常的,但你可以使用十字形产品(你可以谷歌的交叉产品是什么细节),像这样,从三角形的顶点计算它:

Vector3 perpendicular = crossProduct(vertex3.pos - vertex1.pos, vertex2.pos - vertex1.pos); 
Vector3 normal = perpendicular/length(normal); 
Vector3 offset = normal * 0.001f; 
相关问题