24小时热门版块排行榜    

查看: 443  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sobigstar11

新虫 (初入文坛)

[交流] 【求助】急!!!!!高人请赐教

我想请教您一下 两个圆已知圆心坐标和半径求交点坐标,MATLAB怎么实现,我用的SOLVE函数,可是结果得到的是复数值,不知道怎么回事,另外复数能在二维坐标系中作图吗

[ Last edited by nono2009 on 2010-10-14 at 07:23 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

★ ★
hiqun(金币+2):感谢应助 2010-10-13 16:20:40
引用回帖:
Originally posted by sobigstar11 at 2010-10-13 08:47:15:
我想请教您一下 两个圆已知圆心坐标和半径求交点坐标,MATLAB怎么实现,我用的SOLVE函数,可是结果得到的是复数值,不知道怎么回事,另外复数能在二维坐标系中作图吗

先根据中心距和半径关系判断一下有没有交点啊。
CODE:
function IntersectPoints( Cx1, Cy1, r1, Cx2, Cy2, r2)
% 求两个圆的交点

clc

figure('name','Intersect point(s) of two circle');
theta = 0 : pi / 1000: 2 * pi;
x1 = r1 * cos( theta ) + Cx1;
y1 = r1 * sin( theta ) + Cy1;
plot( x1, y1, 'k');
hold on

x2 = r2 * cos( theta ) + Cx2;
y2 = r2 * sin( theta ) + Cy2;
plot( x2, y2, 'k');
hold off

% 求两圆的中心距
a = sqrt( ( Cx2 - Cx1 ) ^ 2 + ( Cy2 - Cy1 ) ^ 2 );

if  a > ( r1 + r2 )
   
    disp( ' There are no intersection points ! ' );
   
elseif a == ( r1 + r2 )
   
    disp( ' There is one intersection point !' );
   
else
   
    A = solve('( x1 - Cx1 ) ^ 2 + (y1 - Cy1 ) ^ 2 - r1 ^ 2','( x1 - Cx2 ) ^ 2 + ( y1 - Cy2 ) ^ 2 - r2 ^ 2');
    Px = subs( A.x1 );
    Py = subs( A.y1);
    disp( ' There are two intersection points ! ' );
    hold on
    plot( Px, Py, 'ro' )
    axis equal
    hold off

end

明德厚学、求是创新
3楼2010-10-13 10:35:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

郁希19866708

至尊木虫 (著名写手)

nono2009:专业区请勿灌水。谢谢。 2010-10-14 07:23:51
不懂,帮顶,
2楼2010-10-13 09:13:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见