我有一个三维场景,其中一条线的坐标为Xa,Ya,Za,另一侧为Xb,Yb,Zb:
如何确定此线的边界框的三维坐标(Xa1,Ya1,Za1,Xa2,... Zb4),除上述数据外,还有此框的宽度和高度以及旋转角度在它的轴上:
由于
答案 0 :(得分:1)
基本上你要做的是建立一个合适的标准坐标基础,这样一个基矢量指向给定的线,而其他两个基线矢量指向正交坐标。实际的选择取决于你提到的角度,但你需要一些参考方向来决定角度为零。
通常我会说让 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