跳转至主要内容
Version: v1.6.0

偏移坐标

  • Taichi场可以用偏移坐标来定义。 该偏移会移动场的边界,因此原点不再是0向量。 一个典型的用法是在物理模拟中支持具有负坐标的体素。
  • 例如,一个含 32x64 个元素的矩阵,坐标偏移(-16, 8) 可以定义为:
a = ti.Matrix.field(2, 2, dtype=ti.f32, shape=(32, 64), offset=(-16, 8))

这样,field 的索引范围即从 (-16, 8)(16, 72) (两边不包括)。

a[-16, 8]  # 左下角
a[16, 8] # 右下角
a[-16, 72] # 左上角
a[16, 72] # 右上角
note

The dimensionality of field shapes should be consistent with that of the offset. 否则,将抛出 AssertionError 异常。

a = ti.Matrix.field(2, 3, dtype=ti.f32, shape=(32,), offset=(-16, ))          # 正确!
b = ti.Vector.field(3, dtype=ti.f32, shape=(16, 32, 64), offset=(7, 3, -4)) # 正确!
# c = ti.Matrix.field(2, 1, dtype=ti.f32, shape=None, offset=(32,)) # AssertionError
# d = ti.Matrix.field(3, 2, dtype=ti.f32, shape=(32, 32), offset=(-16, )) # AssertionError
e = ti.field(dtype=ti.i32, shape=16, offset=-16) # Works!
# f = ti.field(dtype=ti.i32, shape=None, offset=-16) # AssertionError
# g = ti.field(dtype=ti.i32, shape=(16, 32), offset=-16) # AssertionError
本文有帮助吗?