0

我创建了一个球体,在球体(细胞)内部是另一个较小的球体(核),位于一端,球体的另一端是称为微管的结构。

微管有一个中心点,然后有一条线从该点延伸到细胞核的边缘,也延伸到细胞的边缘。

我有在整个细胞中移动的点(病毒)。一旦病毒位于微管结构上(假设它从细胞边缘附着到结构上),它必须向微管中心移动,并最终沿着线向细胞核移动。

我已经想出了如何确定病毒是否在微管结构上,但是我不知道如何将其移出。我使用象限系统在 2D 空间中找到了它,但我无法在 3D 空间中完成它。

我的问题是:一旦病毒在微管上,我如何更新坐标以将其移向中心,然后移向细胞核?

谢谢你

4

2 回答 2

0

您的问题是在两点 A 和 B 之间平滑插值对象 O。您可以使用线性插值、三次样条插值等。

线性插值 假设:

  • O 在坐标系 Fa 的位置 A;
  • O 在坐标系 Fb 的位置 B;

那么对于 Fa 和 Fb 之间的 Fc,您可以将 C 计算为:

C = A + (BA)(Fc - Fa)/(Fb - Fa)

基本上,您考虑的是起点 A,您将在此添加到现在执行的翻译。到目前为止执行的转换是执行的总转换 (B - A),由归一化的帧数(介于 0 和 1 之间)加权,因为插值开始所以 (Fc - Fa)/(Fb - Fa)

如果 Fc = Fa(所以我们还没有开始插值),那么 C = A;如果 Fc = Fb(所以我们应该到达最终位置),那么 C = B;

这种插值将产生线性轨迹。但是,O 速度是恒定的。这意味着 O 将以完全相同的速度开始、行进和结束。在动画中,这很少能产生好的结果。其他技术使用三次插值、Kochanek–Bartels 样条等。这些插值技术实现起来要复杂得多,但可以让您更好地控制点沿直线移动的速度。

于 2013-01-22T19:17:55.897 回答
0

因此,您的问题归结为“如何在 3D 中将对象从一个点移动到另一个点(多帧)?”

答案完全取决于您如何实现对象移动。但基本概念是:

  1. 从“到”点的位置减去“从”点的位置。结果是一个向量,它指向您希望对象移动的方向。
  2. 改变这个向量的大小(不改变它的方向),这样这个向量就可以成为你对象的速度向量。
  3. 既然您已经有了对象的起始位置和速度,就可以让它随着时间的推移移动,直到您到达目的地点。
于 2013-01-22T18:10:23.873 回答