随时间旋转坐标系

时间:2012-10-18 16:51:57

标签: algorithm game-physics coordinate-transformation

我不确定这是否是我提问的正确位置,但我会试一试。我想它介于CS和物理之间,但由于我用C ++编程,我会在这里发布。

我正在观察3D中的粒子,由于施加在其上的力,它在(x,y)平面中弯曲,如图所示。力是从NE进入的粗体箭头。 y轴和力之间的角度是“a”。

setup

粒子从左侧进入速度矢量(v_x,v_y,v_z)并在拐角处弯曲。牛顿第二定律很好地描述了这一点,没有问题。这很容易用数字解决,例如通过欧拉方法。这个我已经成功实施,到目前为止一直很好。

然而如图所示,粒子在一个直径恒定为h的圆柱形管中移动,我希望在某些方向找到与x-和z-方向(指向屏幕外)的正常距离。时间t。 “正常距离”是指如果坐标系与粒子一起旋转,那么我想知道沿着y和z从粒子到管子边缘的距离(如图所示,3个小箭头指向管边缘) )。最终的目标是以某种方式弄清楚粒子是否撞到了墙上。

对于z方向,它是微不足道的,因为它的轴在轨迹期间不会改变。然而,y方向给我带来了巨大的问题。这是我的问题:有没有办法让我在轨迹中找到沿y方向的管边距离?请注意,我在数字上这样做,所以我不一定需要分析表达式。

最佳, 奈尔斯。

1 个答案:

答案 0 :(得分:2)

你没有说管的形状是什么,但一般来说:

  1. 如果管中的弯曲是圆形的,则计算管的内边缘和外边缘从颗粒到曲率中心(圆心)的距离。称此Dpi和Dpo(从粒子到曲率中心的距离,内部和外部)。从圆心到管本身的距离是恒定的:圆的半径Ri和Ro。然后,您可以通过Dpi-Ri和Dpo-Ro计算粒子与管内部和外部的距离。

  2. 如果管中的弯曲不是圆形,则必须演变一个函数,该函数计算两个半径Ri和Ro,作为半径ANGLE的函数,因为这些值将不再是常数。一旦你有这个功能,你就可以计算出Dpi(theta)和Ri(theta)以及Dpo(theta)和Ro(theta),你的距离就是上面的差异。