作者diva (Tremendo!)
看板MATLAB
标题Re: [问题] 如何检查夹角内有特定物体
时间Mon May 7 11:24:30 2012
pt2
/
/
/
/
/ o ptN
/
/
pt0 ------------------ pt1
判断ptN有没有在pt1-pt0和pt2-pt0的夹角内
function test
pt0=[0 0] ; % 圆心点
pt1=[2 -1] ; % 第一个边界
pt2=[1 5] ; % 第二个边界
ptN=[2, 0] ; % 你可以测试这三个ptN点
% ptN=[2, 100] ;
% ptN=[2,-100] ;
tf=isinangle(pt0,pt1,pt2,ptN) ;
% 如果有在范围内 tf=1
% 如果没有 tf=0
figure % 画在图上看
hold on
plot([pt0(1) pt1(1)],[pt0(2) pt1(2)],'b-')
plot([pt0(1) pt2(1)],[pt0(2) pt2(2)],'b-')
plot([pt0(1) ptN(1)],[pt0(2) ptN(2)],'r-')
title(num2str(tf))
function tf=isinangle(pt0,pt1,pt2,ptN)
v1=[pt1-pt0 0] ;
v2=[pt2-pt0 0] ;
v3=[ptN-pt0 0] ;
% 利用v1 v2 v3的旋转方向来判断v3是不是夹在v1 v2之间
if isequal(sign(dot(cross(v1,v2),[0 0 1])),...
sign(dot(cross(v1,v3),[0 0 1])),...
sign(dot(cross(v3,v2),[0 0 1])))
tf=1 ;
else
tf=0 ;
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.103.220
※ 编辑: diva 来自: 140.112.103.220 (05/07 11:25)
※ 编辑: diva 来自: 140.112.103.220 (05/07 11:26)