【问题标题】:Indexing along a line of 3 D array沿着 3D 数组的线进行索引
【发布时间】:2016-04-01 11:07:15
【问题描述】:

考虑在 3 维数组中连接两点 X(a, b, c) 和 Y(d, e, f) 的线。如何找到沿线它们之间所有点的索引,除了最小二乘?

【问题讨论】:

    标签: matlab matrix multidimensional-array


    【解决方案1】:

    你应该绝对远离最小二乘,如果我理解你的话,它会浏览整个 3D 空间。相反,请查看Bresenheim's Line Algorithm

    基本上,您从起始立方体开始,计算线在每个 XYZ 方向上的梯度,然后开始行进。

    您交替沿 X(例如)方向行进,直到线不再位于立方体内,然后切换到任何其他方向(Y、Z)将线带回当前立方体。以此类推,直到当前立方体成为目标。

    所有通常的链接都是 2D 的,但 3D 的过程完全相同。

    比较棘手的地方在于选择开始匹配的方向。 3D 中有一个算法,可以适应 2D。

    注意事项: 一个很酷的优化是,每次你向一个给定的方向行进时,你可以直行 Nx、Ny 或 Nz 步。这 3 个数字可以事先计算出来,永远不会改变。

    更酷的优化是,您应该只需要在开始时计算一次 X-Y-Z 迭代的顺序(在某些情况下可能是 Y、X、Z)一次。然后行进是周期性的,应该保持不变,直到达到目标。

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2021-01-29
      • 2015-12-23
      • 1970-01-01
      相关资源
      最近更新 更多