matlab中进行二维平面中有向矩形相交探测计算OBB dection

来源:互联网 发布:手机淘宝上的积分在哪 编辑:程序博客网 时间:2024/05/19 11:50

项目中需要计算有向包围盒OBB相交的计算,这 是计算机图形学中的基本问题,但是我在Simulink中想实现该计算时发现网上几乎没有matlab下的代码。于是参考网上大牛们的c++和java代码,在matlab中重新写了obb相交探测方法。由于matlab先天的强大矩阵计算能力,matlab下实现其实更加简单。再结合简单的可视化方法,可以直观 的实现生动的视觉效果。

本文是本文第一次在该网站上写blog,也是第一次在网上写blog,水平不足之处还请大牛们多留情啊。

计算obb相交的算法:

obbDec.m文件:

function int = obbDec( A,B )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
%x y width height rotation,x,y are center point coordinates
r=A(5);
vec_A=[cos(r),sin(r);
        -sin(r),cos(r)];
r=B(5);
vec_B=[cos(r),sin(r);
        -sin(r),cos(r)];
disVec=[B(1)-A(1),B(2)-A(2)];
for n=1:2
    if getProjectionRadius(vec_A(n,:),A,vec_A)+getProjectionRadius(vec_A(n,:),B,vec_B)<=abs(disVec*vec_A(n,:)')
       int=false;
       return;
    end
    if getProjectionRadius(vec_B(n,:),A,vec_A)+getProjectionRadius(vec_B(n,:),B,vec_B)<=abs(disVec*vec_B(n,:)')
        int =false;
        return;
    end
end
int=true;
end
function r=getProjectionRadius(m,A,n)
w=A(3);
h=A(4);
r=w*abs(n(1,:)*m')/2+h*abs(n(2,:)*m')/2;
end
画图函数:plotRec.m文件
function plotRec(A,c)
%plot rotated rectangle
w=A(3)/2;
h=A(4)/2;
x=A(1);
y=A(2);
r=A(5);
p=[x-w*cos(r)+h*sin(r),y-h*cos(r)-w*sin(r);
x+w*cos(r)+h*sin(r),y-h*cos(r)+w*sin(r);
x+w*cos(r)-h*sin(r),y+h*cos(r)+w*sin(r);
x-w*cos(r)-h*sin(r),y+h*cos(r)-w*sin(r);
x-w*cos(r)+h*sin(r),y-h*cos(r)-w*sin(r)];
plot(p(:,1),p(:,2),c)
end

示例代码:
A=[2 2 3 1.5 0];%矩形一
B=[3 4 2 1 0];%矩形二
for i=1:100
    A(5)=i*pi/30;
    B(5)=i*pi/40;
   
hold off;
plot(0,0);
axis([0 6 0 6]);
hold on;
if obbDec(A,B)
plotRec(A,'r');
plotRec(B,'r');
else
plotRec(A,'g');
plotRec(B,'g');
end
pause(0.2);
end




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信有余额绑定其他名下怎么办 银行卡绑定支付余额不对怎么办 可乐机不制冷了怎么办 被淘宝卖家威胁怎么办 征信不好想贷款怎么办 急用钱征信不好怎么办 急用钱逾期不还怎么办 急用钱借款不还怎么办 做b超按压疼痛怎么办 做b超没有尿怎么办 b超憋不到尿怎么办 做b超前没有尿意怎么办 肝胆b超前喝水了怎么办 肝胆彩超喝水了怎么办 胆囊b超喝了水怎么办 系统b超照不到怎么办 思维彩超宝宝不动怎么办 怀孕七个月胎儿缺氧怎么办 怀孕29周小孩偏小怎么办 孕29周胎儿臀位怎么办 刚怀孕有囊肿该怎么办 食杏中毒怎么办吃什么 猫吃了扁桃仁怎么办 夏天来了??点狐臭怎么办? 我有一小点狐臭怎么办 淘客网站被微信屏蔽怎么办 微信老是屏蔽网站怎么办 华帝售后没人理怎么办 新开的网店没生意怎么办 淘小二介入买家举证不全怎么办 新股申购中签后钱不够怎么办 买的东西收不到怎么办? 拼多多按错收货怎么办 团购招生做到一半不如意怎么办 网购付款后卖家没有货怎么办 淘宝退货商家不同意退款怎么办 淘宝确认收货后卖家拒绝退款怎么办 淘宝卖家不同意退款怎么办 淘宝仅退款卖家不处理怎么办 淘宝申请退款卖家不处理怎么办 快递没收到货要退款怎么办