我写了这么一个程序
for z=3:1:37
viscircles([m(1,z),n(1,z)],r,'LineStyle','--','LineWidth',0.5);
axis equal;
plot(xq(1,[1:z]),yq(1,[1:z]),'b','LineWidth',1);
plot(m(1,[1:z]),n(1,[1:z]),'r','LineWidth',1);
f1=yq(1,z)-yq(1,z-1);
f2=xq(1,z)-xq(1,z-1);
fd=sqrt(f1^2+f2^2);
g1=m(1,z)-xq(1,z-1);
g2=n(1,z)-yq(1,z-1);
gd=sqrt(g1^2+g2^2);
h1=m(1,z)-xq(1,z);
h2=n(1,z)-yq(1,z);
hd=sqrt(h1^2+h2^2);
if (abs(f1/f2*g1-g2)/sqrt((f1/f2)^2+1)<r&&acos((gd^2+fd^2-hd^2)/(2*gd*fd))>0&&acos((hd^2+fd^2-gd^2)/(2*hd*fd))>0)
break;
end
end
hold off
其中r=3.8;xq yq m n 均为1x37的随机矩阵,我想用 if (abs(f1/f2g1-g2)/sqrt((f1/f2)^2+1)<r&&acos((gd^2+fd^2-hd^2)/(2*gd*fd))>0&&acos((hd^2+fd^2-gd^2)/(2hd*fd))>0) 这段语句判断(xz,yz)(xz-1,yz-1)组成的直线与以(m,n)为圆心半径为r的圆是否有交集,总是不成功劳烦看一下,帮忙解决一下。