首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表面积计算

表面积计算
EN

Software Engineering用户
提问于 2015-07-22 15:08:54
回答 2查看 398关注 0票数 0

对于我的程序,我实现了AABB碰撞,它工作得很好。当AABB碰撞检测到两个盒子之间的碰撞时,我想要找到两个盒子重叠的部分的表面积。有一个简单的方程可以用来找出这个表面积吗?

主要问题:所以我很容易指出计算的地方,找出重叠的X和Y值,找出我的曲面。就像“(第6-3次)*(第6-4次)”。我的问题是,我试图没有任何有条件的问题。因此,我想知道是否有一个公式,你可以插入所有的边缘点,这两个盒子,它将始终给出的表面积,是重叠的,无论它们如何重叠。这将为我节省大量时间,并且在编写代码时更有效率。

注意:

  • 盒子是以轴为方向的,因此,两边总是平行于X和Y轴。
  • 方框1和框2的边缘点是已知的全部;因此,尽管如此,在直线相交的地方没有协调。
EN

回答 2

Software Engineering用户

发布于 2015-07-22 15:15:54

很久以前,我也有同样的问题,我想出了一个简单的解决方案:

  1. (如果您还没有)创建具有正确高度和宽度的java.awt.Rectangle-Objects
  2. 将矩形移动到对象所在的坐标(使用Rectangle.setLocation(x,y) )
  3. 调用Rectangle1.intersection(Rectangle2)并让库进行计算

甚至更容易:步骤1和步骤2可以由java.awt.Rectangle的构造函数完成。

代码语言:javascript
运行
复制
Rectangle r1 = new Rectangle(x1, y1, width1, height1);
Rectangle r2 = new Rectangle(x2, y2, width2, height2);
Rectangle intersectingRectangle = r1.intersection(r2);
票数 3
EN

Software Engineering用户

发布于 2015-07-22 15:29:21

即使不首先检测碰撞,也可以使用这个伪代码(或者使用它检测碰撞,如果inter_area==0不存在碰撞或切线)。

代码语言:javascript
运行
复制
double intersection_area(rectangle box1,rectangle box2) {
    double inter_area=0.0
    double box1_top=box1.get_top() //10
    double box1_bottom=box1.get_bottom() //3
    double box2_top=box2.get_top() //6
    double box2_bottom=box2.get_bottom() //2
    double inter_height=min(box1_top,box2_top)-max(box1_bottom,box2_bottom) //6-3==3
    if (inter_height)>0 {
        double box1_right=box1.get_right() //6
        double box1_left=box1.get_left() //2
        double box2_right=box2.get_right() //8
        double box2_left=box2.get_left() //3
        double inter_width=min(box1_right,box2_right)-max(box1_left,box2_left)//6-3==3
        if (inter_width>0)
            inter_area = inter_height x inter_width //3x3==9
    }
    return inter_area
}
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/290476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档