此刻此刻我对此有一个总体空白。3d矢量与立方体的交点位置
我有一个由中心点和宽度,高度和深度定义的立方体(体素)。 如果我有一个从框中心起点的向量(例如(-0.7, - 0.7,-0.7))如何计算矢量与盒子外部相交的点?
编辑:框始终与轴对齐。 问题在于3d。
由于
此刻此刻我对此有一个总体空白。3d矢量与立方体的交点位置
我有一个由中心点和宽度,高度和深度定义的立方体(体素)。 如果我有一个从框中心起点的向量(例如(-0.7, - 0.7,-0.7))如何计算矢量与盒子外部相交的点?
编辑:框始终与轴对齐。 问题在于3d。
由于
你的盒子将具有的表面上的任何点的至少一个坐标等于0.5或-0.5,和所有其他人将-0.5 < = C < = 0.5。
因此,找到绝对值最大的坐标,然后缩放矢量使该坐标等于+/- 0.5。
像这样的东西可能会奏效:
if (fabs(x) > fabs(y) && fabs(x) > fabs(z))
y *= 0.5/fabs(x)
z *= 0.5/fabs(x)
x *= 0.5/fabs(x)
else if (fabs(y) > fabs(z))
x *= 0.5/fabs(y)
z *= 0.5/fabs(y)
y *= 0.5/fabs(y)
else
x *= 0.5/fabs(z)
y *= 0.5/fabs(z)
z *= 0.5/fabs(z)
这是否假设矢量被归一化? – paintstripper 2010-07-06 07:32:08
不,它不需要正常化 – 2010-07-06 07:37:31
好吧,这似乎工作。好而简单 - 谢谢,这正是我需要的。 – paintstripper 2010-07-06 07:51:05
(对不起,我不理解)如果你的盒子是3D的,但你的载体是2D的,想必你永远无法知道它是否相交的立体面。 – 2010-07-06 07:00:18
我想你想要使用Liang-Barsky算法。参见: http://en.wikipedia.org/wiki/Liang%E2%80%93Barsky and http://www.siggraph.org/education/materials/HyperGraph/scanline/clipping/cliplb.htm – jts 2010-07-06 07:00:41
对不起,试图先用2D处理它,然后转换到3D。它应该是一个3D矢量。 – paintstripper 2010-07-06 07:04:09