定义边界框的坐标
Define coordinates of bounding box
我有一个 3d 场景,其中包含一条线,一侧坐标为 Xa、Ya、Za,另一侧坐标为 Xb、Yb、Zb:
如何确定该线的边界框的 3d 坐标 (Xa1,Ya1,Za1,Xa2,...Zb4),除了上述数据外,该框的宽度和高度,以及其轴上的旋转角度:
谢谢
基本上你要做的是建立一个合适的正交坐标基,这样一个基向量指向给定的直线,而另外两个与它正交。实际选择取决于你提到的角度,但你需要一些参考方向来决定角度零。
通常我会说 a 是从一个点到另一个点的归一化(长度为 1)向量。令 v 是一些固定的参考方向,例如“向上”。确保 a 和 v 是独立的,即指向不同的方向。计算叉积 a×v,归一化为单位长度,并称其为 b。它将是一个与 a 和 v 正交的向量,因此类似于水平面中远离直线的方向,如果 v 起来了。计算 c=a×b 这将是第三个基向量,正交于 a 和 b 并且已经是单位长度了。
现在取任一端点并添加 ± w/2∙b ± h/ 2∙c,其中 w 和 h 是边界框的尺寸。这为您提供了边界框的 8 个角点。如果要围绕直线旋转框,请对向量 b 和 c:
应用二维旋转
b' = cos(θ)∙b + sin(θ)∙c
c' = cos(θ)∙c − sin(θ)∙b
我有一个 3d 场景,其中包含一条线,一侧坐标为 Xa、Ya、Za,另一侧坐标为 Xb、Yb、Zb:
如何确定该线的边界框的 3d 坐标 (Xa1,Ya1,Za1,Xa2,...Zb4),除了上述数据外,该框的宽度和高度,以及其轴上的旋转角度:
谢谢
基本上你要做的是建立一个合适的正交坐标基,这样一个基向量指向给定的直线,而另外两个与它正交。实际选择取决于你提到的角度,但你需要一些参考方向来决定角度零。
通常我会说 a 是从一个点到另一个点的归一化(长度为 1)向量。令 v 是一些固定的参考方向,例如“向上”。确保 a 和 v 是独立的,即指向不同的方向。计算叉积 a×v,归一化为单位长度,并称其为 b。它将是一个与 a 和 v 正交的向量,因此类似于水平面中远离直线的方向,如果 v 起来了。计算 c=a×b 这将是第三个基向量,正交于 a 和 b 并且已经是单位长度了。
现在取任一端点并添加 ± w/2∙b ± h/ 2∙c,其中 w 和 h 是边界框的尺寸。这为您提供了边界框的 8 个角点。如果要围绕直线旋转框,请对向量 b 和 c:
应用二维旋转b' = cos(θ)∙b + sin(θ)∙c
c' = cos(θ)∙c − sin(θ)∙b