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 编辑 ] NaN产生 说明 除数为零了。
应该加个判断语句,如果斜率为 无穷大的就不用求了。
这种方法有时候好像不太管用。。 不知道用三角形求内角 是不是好点。 我用如下代码实现了任意多边形两相邻内角之差不大于某个值:(令我满意的是它避免了循环的使用)
相邻角比较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]