Skip to content

留下轨迹

显示轨迹 make_trail

为对象设置轨迹。每次渲染场景时,新的位置 ball.pos 会被添加到曲线上,从而在移动的对象后留下轨迹。这适用于除曲线和点对象外的所有对象,包括复合对象。

python
ball = sphere(make_trail=True, trail_type="points", trail_radius=0.2, interval=10, retain=1000)
属性名类型说明
make_trail布尔值如果为 True,移动的对象将留下轨迹。默认值为 False。
trail_type字符串如果为 “points”,轨迹将由离散点组成。否则为连续曲线。
trail_radius标量曲线或点的半径。曲线的默认值为 0(细曲线);点的默认值为 0.2*ball.radius 或 0.1*size.y(在创建对象时)。
interval标量移动的次数间隔后才添加一个点。interval=10 表示每移动第 10 次时在轨迹中添加一个点。
retain标量在轨迹中保留的点数。默认值为保留所有点。最早的点会首先被删除。
pps标量对于曲线,pps=15 表示每秒大约添加 15 个点。

在对象移动时,如果设置 ball.make_trail=False,则不再向轨迹添加点,直到再次设置 ball.make_trail=True,此时新的轨迹将在球的当前位置开始。

如果在创建球时指定了间隔(大于零),并且没有指定位置,那么在稍后给球分配位置时,轨迹中的第一个点将出现在该位置。如果在创建球时指定了位置,并且 make_trail 为 True,则轨迹中的第一个点是指定的位置。如果未指定间隔,则曲线从第一次渲染场景时的位置开始。

注意:如果轨迹点之间的距离较大,请不要使用大于 rate(60) 的速率。VPython 尝试每秒渲染 3D 场景 60 次。每次渲染场景时,它都会查看所有指定 “make_trail=True” 的对象列表,如果对象的 pos 属性发生变化,渲染函数将延长轨迹。如果指定 rate(300),并且每次通过循环时更新对象的位置,则只有对象的每第 5 个位置会被添加到轨迹中,因为场景每秒仅渲染约 60 次。相反,如果指定 rate(10) 并且每次通过循环时更新对象的位置,则轨迹每秒将被延长 10 次。

清除轨迹 clear_trail()

python
ball.clear_trail()

清除现有轨迹中的所有点,然后再添加更多点。要停止添加点,请将 ball.make_trail 设置为 False。