此刻此刻我對此有一個總體空白。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