【问题标题】:Better way to write this code? 3D position update of an object编写此代码的更好方法?对象的 3D 位置更新
【发布时间】:2022-11-21 10:50:52
【问题描述】:

我有一个数组,用于粒子在笛卡尔坐标中的位置和 3D 中的速度。所以position[0]代表位置的x分量等等。我很好奇是否有更好的方法来编写这段代码,也许更短,也许更快。

`

def update_position(self):
self.position[0] = self.position[0] + self.velocity[0] * self.tick     # x coordinate update
self.position[1] = self.position[1] + self.velocity[1] * self.tick     # y coordinate update
self.position[2] = self.position[2] + self.velocity[2] * self.tick     # z coordinate update
...

`

【问题讨论】:

  • 您可以使用 @property 装饰器创建一个粒子类,其中 x、y 和 z 是粒子对象的属性。但实际上没有一种“正确”的方法可以做到这一点。您可以根据自己的喜好以不同的方式进行

标签: python optimization multidimensional-array


【解决方案1】:
def update_position(self):
    for i in range(3):
        self.position[i] += self.velocity[i] * self.tick

【讨论】:

    【解决方案2】:

    只需使用 numpy 库。它更快,更易于使用。以下是如何使用它的示例:

    import numpy as np
    ...
    def __init__(self):
      self.position = np.array([0.0, 0.0, 0.0])
      self.velocity = np.array([1.0, 1.0, 1.0])
    ...
    self.position += self.velocity * self.tick
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 2017-08-19
      • 2012-05-08
      • 2020-01-29
      • 2010-12-08
      • 2011-11-19
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多