我有两个Vector3
实例,它们代表模型的尺寸(最小和最大矢量)。
我有一个来自Matrix3x4
的对象,该对象由4个Vector3
实例(向右,向前,向上矢量和位置)组成;
我正在尝试使用上面的值绘制边界框,但似乎无法计算世界上每个点的绝对位置。这是我的盒子类:
export default class Box {
constructor(min, max) {
this._position = undefined;
this.heading = 0;
this.min = min;
this.max = max;
this.lines = ['AB', 'AD', 'AE', 'BC', 'BF', 'CD', 'CG', 'DH', 'EH', 'EF', 'FG', 'GH'];
this.points = {
A: this.min,
B: new Vector3(this.min.x, this.max.y, this.min.z),
C: new Vector3(this.min.x, this.max.y, this.max.z),
D: new Vector3(this.min.x, this.min.y, this.max.z),
E: new Vector3(this.max.x, this.min.y, this.min.z),
F: new Vector3(this.max.x, this.max.y, this.min.z),
G: this.max,
H: new Vector3(this.max.x, this.min.y, this.max.z),
};
this.worldPoints = {};
}
set position(pos) {
this._position = new Vector3(pos.x, pos.y, pos.z);
}
get position() {
return this._position;
}
calculateWorldPoints() {
if (this.position) {
for (const point in this.points) {
this.worldPoints[point] = this.position.add(this.points[point]);
}
}
return this;
}
getLines() {
const lines = [];
for (const line of this.lines) {
lines.push({
start: this.worldPoints[line.charAt(0)],
end: this.worldPoints[line.charAt(1)],
});
}
return lines;
}
}
我想要实现类似下图的效果,其中边框随对象旋转:
编辑:
我设法在模型周围显示了边界框,但仍然无法了解如何旋转它。我需要旋转一个角度(以度为单位)。目前,它始终指向0度角。
这是当前外观: