MATLAB中四边形的内角

时间:2014-04-25 21:40:21

标签: matlab computational-geometry

我有四个点(x1,y1)......(x4,y4)描述图像中的四个点。它们不需要处于循环次序中。我想通过加入这四个点来了解四边形的所有内部天使

所以我需要一个像

这样的功能
function [theta1, theta2, theta3, theta4] = find_angels_quadrilateral([x1,y1], [x2,y2], [x3,y3], [x4,y4])
   # Logic goes here
end 

我已经尝试了atan2(y1-y2, x1-x2)四次等等,但无法保证它们是循环的,因此无法继续进行。

更重要的是,任何工具箱都已在MATLAB中为我提供此功能吗?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是首先使用convhull计算点的凸包。它将以循环顺序(逆时针)返回点。

K = convhull([x1, x2, x3, x4], [y1, y2, y3, y4])

它会返回类似的内容:

K =

     1
     3
     4
     2
     1

意义点[x1,y1]是第一个,然后是[x3,y3],然后是[x4,y4]等等(第一个点在末尾复制以关闭船体,所以你可以忽略它)

之后,您可以毫无问题地计算角度。