Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用旋转计算旋转梯形的边界框_Javascript_Math_Three.js - Fatal编程技术网

Javascript 如何使用旋转计算旋转梯形的边界框

Javascript 如何使用旋转计算旋转梯形的边界框,javascript,math,three.js,Javascript,Math,Three.js,我试着把两个矩形物体连接在一起,它们都有一个角被切断。在那次操作之后,它们实际上是梯形的 一个对象旋转一定程度,根据用户提供的输入而不同。我设法计算了第二个对象所需的角度,以便它与主对象的侧面切割对齐 现在的问题是,对象之间仍然存在间隙。我认为最好是计算边界框,以便知道需要在x、y或z方向上调整多少位置 我不知道如何计算这个梯形的边界框。我已经搜索了internet/stack overflow,但没有找到任何适合我需要的内容 我得到的信息是梯形的尺寸和旋转角度 下面是一张图,希望能让我的情况更

我试着把两个矩形物体连接在一起,它们都有一个角被切断。在那次操作之后,它们实际上是梯形的

一个对象旋转一定程度,根据用户提供的输入而不同。我设法计算了第二个对象所需的角度,以便它与主对象的侧面切割对齐

现在的问题是,对象之间仍然存在间隙。我认为最好是计算边界框,以便知道需要在x、y或z方向上调整多少位置

我不知道如何计算这个梯形的边界框。我已经搜索了internet/stack overflow,但没有找到任何适合我需要的内容

我得到的信息是梯形的尺寸和旋转角度

下面是一张图,希望能让我的情况更清楚一些:


只是一个如何使用
THREE.Box3()的概念。

var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
摄像机。位置。设置(5,8,13);
var renderer=new THREE.WebGLRenderer({
反别名:对
});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
添加(新的三个.GridHelper(10,10,0x404040,0x202020));
//梯形
变量t点=[
新的三矢量2(0,1),
新的三矢量2(1,0),
新三矢量2(5,0),
新三,矢量2(5,1)
];
var tGeom=新三点挤压计量法(新三点形状(t点){
深度:1,
bevelEnabled:错误
});
tGeom.center();
var tMat=新的三网格基本材料({
颜色:“浅绿色”,
线框:正确
});
var梯形=新的三网格(tGeom,tMat);
梯形位置设置(0,2.5,0);
场景。添加(梯形);
var box3=新的三个.box3();
var box3Helper=新的三个。box3Helper(box3);
场景。添加(box3帮助);
renderer.setAnimationLoop(()=>{
梯形旋转z+=0.01;
框3.setFromObject(梯形);
渲染器。渲染(场景、摄影机)
});
正文{
溢出:隐藏;
保证金:0;
}


看一下文档:我不知道文档中有这方面的内容,这很尴尬。是否有可能在单词位置而不是局部位置获得对象周围的边界框?Box3就是这样做的。嗯,这很奇怪。旋转对象上的边界框与非旋转对象上的边界框相同。这不是因为它是一个局部位置吗?您正在计算网格几何体的边界框吗?因此,毫不奇怪,它只使用顶点的坐标,而不考虑网格的旋转、平移和缩放。将其用作
new THREE.Box3().setFromObject(您的网格)将为您提供所需的边界框。