cir_cir_intersection.m
上传用户:doryuen
上传日期:2013-10-30
资源大小:23k
文件大小:1k
源码类别:

通讯/手机编程

开发平台:

Matlab

  1. function [ex,ey]=cir_cir_intersection(bx,by,d)
  2.         
  3.         if  abs(diff(by)/(diff(bx)+eps)) > 1e-2
  4.             a_c=-(bx(1)-bx(2))/(by(1)-by(2)+eps);
  5.             b_c=((bx(1)^2-bx(2)^2)+(by(1)^2-by(2)^2)-(d(1)^2-d(2)^2))/(2*(by(1)-by(2))+eps);
  6.         
  7.             c_c=1+a_c^2;
  8.             d_c=-2*bx(1)+2*a_c*(b_c-by(1));
  9.             e_c=bx(1)^2+(b_c-by(1))^2-d(1)^2;
  10.         
  11.             ex=[ (-d_c+sqrt(d_c^2-4*c_c*e_c))/(2*c_c)  (-d_c-sqrt(d_c^2-4*c_c*e_c))/(2*c_c)];
  12.             ey=a_c*ex+b_c;
  13.         else
  14.             bc=-(by(1)-by(2))/(bx(1)-bx(2)+eps);
  15.             ac=((bx(1)^2-bx(2)^2)+(by(1)^2-by(2)^2)-(d(1)^2-d(2)^2))/(2*(bx(1)-bx(2))+eps);
  16.             
  17.             a=1+bc^2;
  18.             b=-(2*bx(1)*bc+2*by(1)-2*ac*bc);
  19.             c=ac^2-2*bx(1)*ac+bx(1)^2+by(1)^2-d(1)^2;
  20.             
  21.             ey=[(-b+sqrt(b^2-4*a*c))/(2*a) (-b-sqrt(b^2-4*a*c))/(2*a)];
  22.             ex=ac+ey*bc;
  23.         end
  24.         
  25.         
  26.             
  27.             
  28.        
  29.