簡體   English   中英

如何使用旋轉找出旋轉梯形的邊界框

[英]How to figure out the bounding box of a rotated trapezoid using the rotation

我正在嘗試將兩個矩形 object 連接在一起,它們都有一個角被切斷。 在該操作之后,它們實際上是梯形。

一個 object 旋轉一定角度,這取決於用戶提供的輸入。 我設法計算出第二個 object 需要的角度,以便它與主 object 的側面切割對齊。

現在的問題是對象之間仍然存在間隙。 我認為最好計算邊界框,這樣我就知道需要在 x、y 或 z 方向調整 position 多少。

我不知道如何計算這個梯形的邊界框。 我搜索了互聯網/堆棧溢出,但沒有找到任何適合我需要的東西。

我擁有的信息是梯形的尺寸和旋轉角度。

這是一張希望使我的情況更清楚的圖:

旋轉梯形的繪制

只是一個關於如何使用THREE.Box3()的概念:

 var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000); camera.position.set(5, 8, 13); var renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); var controls = new THREE.OrbitControls(camera, renderer.domElement); scene.add(new THREE.GridHelper(10, 10, 0x404040, 0x202020)); //trapezoid var tPoints = [ new THREE.Vector2(0, 1), new THREE.Vector2(1, 0), new THREE.Vector2(5, 0), new THREE.Vector2(5, 1) ]; var tGeom = new THREE.ExtrudeGeometry(new THREE.Shape(tPoints), { depth: 1, bevelEnabled: false }); tGeom.center(); var tMat = new THREE.MeshBasicMaterial({ color: "aqua", wireframe: true }); var trapezoid = new THREE.Mesh(tGeom, tMat); trapezoid.position.set(0, 2.5, 0); scene.add(trapezoid); var box3 = new THREE.Box3(); var box3Helper = new THREE.Box3Helper(box3); scene.add(box3Helper); renderer.setAnimationLoop(() => { trapezoid.rotation.z += 0.01; box3.setFromObject(trapezoid); renderer.render(scene, camera) });
 body { overflow: hidden; margin: 0; }
 <script src="https://threejs.org/build/three.min.js"></script> <script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM