Re: [問題] 如何檢查夾角內有特定物體
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)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):