微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从OBB取回原始的AABB?

如何解决如何从OBB取回原始的AABB?

我正在从AABB值开始旋转基于4个点的2D矩形:

// start from AABB
var bBox = {minX:-0.2,maxX:+0.2,minZ:-2.2,maxZ:+0.2};

// compute all 4 points clock-wise
function bBox2Points(bBox) {
  return [[bBox.minX,bBox.minZ],[bBox.minX,bBox.maxZ],[bBox.maxX,bBox.minZ]];
}
// rotation about a given object axis
// (just to inspect values,plot the z-axis along the y-axis)
function rotatePoint(pX,pY,oX,oY,d) {
    var r = deg2rad(d);
    return {
        X: Math.cos(r) * (pX-oX) - Math.sin(r) * (pY-oY) + oX,Y: Math.sin(r) * (pX-oX) + Math.cos(r) * (pY-oY) + oY
    };
}
// compute a new AABB from that OBB 
function calcAABB(points) {
  var minX = +Infinity,maxX = -Infinity,minZ = +Infinity,maxZ = -Infinity;
  for(var i=0,l=points.length;i<l;i++) {
    var p = points[i];
    var x = p.X,z = p.Y;
    if(x < minX) minX = x;
    if(z < minZ) minZ = z;
    if(x > maxX) maxX = x;
    if(z > maxZ) maxZ = z;
  }
  return {minX:minX,maxX:maxX,minZ:minZ,maxZ:maxZ};
}

鉴于新的AABB和旋转角度,我如何找回原来的AABB,即线段AB和BC的长度?在3D空间中甚至有可能吗?

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。