To calculate the angles of the Delaunay triangles

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?

 Akzeptierte Antwort

Roger Stafford
Roger Stafford am 28 Aug. 2014
Bearbeitet: Roger Stafford am 28 Aug. 2014
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.

Weitere Antworten (2)

Michael Haderlein
Michael Haderlein am 28 Aug. 2014
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 Kommentar

ZhG
ZhG am 28 Aug. 2014
This is not necessary to deal with divide operation. Thumb up.

Melden Sie sich an, um zu kommentieren.

Kategorien

Gefragt:

ZhG
am 28 Aug. 2014

Kommentiert:

ZhG
am 28 Aug. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by