canglang 发表于 2007-5-28 17:02

matlab 中有没有直接求多边形内角的函数

求一个任意多边形的每一个内角。当然,自己写代码可以实现,但是matlab有没有自带的函数可以应用?

我通过先求每条边的斜率k,然后通过atan函数来求每个内角myangle,可是在k和myangle中会有NaN产生!!
换句话说,在一位矩阵k和myangle中会有NaN产生!!

斜率:
k(i)=(y(i+1)-y(i))./(x(i+1)-x(i));
内角:
myangle(i)=atan(abs(k(i+1)-k(i))./(1+k(i+1).*k(i));

[ 本帖最后由 eight 于 2007-5-28 17:27 编辑 ]

pengweicai 发表于 2007-5-28 18:07

NaN产生 说明 除数为零了。
   应该加个判断语句,如果斜率为 无穷大的就不用求了。

   这种方法有时候好像不太管用。。   不知道用三角形求内角 是不是好点。

canglang 发表于 2007-6-4 12:12

我用如下代码实现了任意多边形两相邻内角之差不大于某个值:(令我满意的是它避免了循环的使用)
相邻角比较2007 5 27
%   x1=x(1:end-1)   % 因为x(1)=x(end),所以这里取x1=x(1:end-1)
%   y1=y(1:end-1)
%   xx=x1(2:end);xx=
%   yy=y1(2:end);yy=
%   aa=yy-y1
%   bb=xx-x1
%   k=aa./bb
%   index_k=isnan(k)
%   ifany(index_k==1)
%         n=n-1;
%         continue
%    end
%    kk=k(2:end);kk=;
%    c=kk-k;d=1+kk.*k;
%    myangle1=atan(abs(c)./d)
%    myangle2=myangle1(2:end);
%    myangle2=
%    myangle=myangle2-myangle1
%    if max(abs(myangle))>(2*pi/S(n))*0.5   % S(n)为第n多边形边数
%       n=n-1
%       continue
%    end

如有不妥之处,还望高手指正!

[ 本帖最后由 canglang 于 2007-6-4 17:39 编辑 ]
页: [1]
查看完整版本: matlab 中有没有直接求多边形内角的函数