필터 지우기
필터 지우기

To calculate the angles of the Delaunay triangles

조회 수: 2 (최근 30일)
ZhG
ZhG 2014년 8월 28일
댓글: ZhG 2014년 8월 28일
I am trying to calculate the 3 angles of each triangle generated by Delaunay triangulation. For example, I have already obtained the area and the perimeter of each triangle. But I also wanna calculate the angles of each triangle. Anyone help?

채택된 답변

Roger Stafford
Roger Stafford 2014년 8월 28일
편집: Roger Stafford 2014년 8월 28일
If P1, P2, and P3 are coordinates of the three vertices of a triangle, and A is its area, its angle at P1 can be calculated as:
a1 = atan2(2*A,dot(P2-P1,P3-P1)); % <-- Corrected
and similarly for the other two angles.

추가 답변 (2개)

Michael Haderlein
Michael Haderlein 2014년 8월 28일
I like that question. I'm curious if there's a faster solution (maybe even a built-in function I don't know), but my code looks like this:
x=rand(5);
y=rand(5);
TRI=delaunay(x,y);
X=x(TRI);
Y=y(TRI);
a=zeros(size(X));
for cnt=1:3
a(:,cnt)=abs(diff(angle(bsxfun(@minus,X(:,[1:cnt-1 cnt+1:end]),X(:,cnt))+1i*bsxfun(@minus,Y(:,[1:cnt-1 cnt+1:end]),Y(:,cnt))),[],2));
end
This should work but please check for testcases if it's really the case.
  댓글 수: 1
ZhG
ZhG 2014년 8월 28일
This is not necessary to deal with divide operation. Thumb up.

댓글을 달려면 로그인하십시오.


ZhG
ZhG 2014년 8월 28일
Thank you guys.

카테고리

Help CenterFile Exchange에서 Delaunay Triangulation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by