【发布时间】:2020-12-16 15:37:46
【问题描述】:
正在尝试创建 n 体模拟,目前正在创建粒子类。我通过输入一些变量(例如位置和速度)来初始化该类。我想知道是否可以以某种方式将所有相同的变量组合到一个数组中。例如,当我调用 Particle 类时,它会保存所有变量,但变量都是关于那个特定粒子并与之相关联的。我想知道我是否能够找到一种方法来返回一个数组中所有粒子的速度。
class Particle:
Position = np.full((1, 3), 0, dtype=float)
Velocity = np.full((1, 3), 0, dtype=float)
Acceleration = np.full((1, 3), 0, dtype=float)
Name = np.full((1, 1), 0, dtype=float)
Mass = np.full((1, 1), 0, dtype=float)
"""Initialisng all all the data members for each Particle"""
def __init__(self, Name, Mass, initPosition, initVelocity, initAcceleration):
self.Name = Name
self.Mass = Mass
self.Position = np.array(initPosition)
self.Velocity = np.array(initVelocity)
self.Aceleration = np.array(initAcceleration)
def arrays(self, Positions, Velocities, Accelerations, Names, Masses):
Positions.append(self.Position)
Velocities.append(self.Velocity)
Accelerations.append(self.Acceleration)
Names.append(self.Name)
Masses.append(self.Mass)
我的第二个定义“数组”试图这样做但没有成功。目的是让我可以输入 Positions 并生成一个 (N,3) 矩阵,我可以在该矩阵上执行计算。这可能吗?
【问题讨论】:
-
不确定你到底在想什么,但我想也许你可以使用两个类,一个叫做 Particle 代表粒子的特定实例,并使用实例数据作为名称、位置等(相反对您拥有的数据进行分类,这似乎没有用)。另一个是跟踪它们的粒子容器。或者,如果您只想要一个粒子容器,您可以在粒子中创建一个类变量列表并附加到该列表中。