Borrar filtros
Borrar filtros

To calculate the angles of the Delaunay triangles

2 visualizaciones (últimos 30 días)
ZhG
ZhG el 28 de Ag. de 2014
Comentada: ZhG el 28 de Ag. de 2014
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?

Respuesta aceptada

Roger Stafford
Roger Stafford el 28 de Ag. de 2014
Editada: Roger Stafford el 28 de Ag. de 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.

Más respuestas (2)

Michael Haderlein
Michael Haderlein el 28 de Ag. de 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 comentario
ZhG
ZhG el 28 de Ag. de 2014
This is not necessary to deal with divide operation. Thumb up.

Iniciar sesión para comentar.


ZhG
ZhG el 28 de Ag. de 2014
Thank you guys.

Categorías

Más información sobre Delaunay Triangulation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by