问题描述
编写程序,实现如下功能:给定平面上两个圆,根据圆心位置和半径,判别它们是否是公切线。如果有的话,绘制两个圆的所有公切线。 要求:
1、用鼠标交互绘制两个圆,程序获取圆心坐标和半径;
2、通过对两个圆心连线的几何变换绘制所有的公切线。
求解思路
利用matlab功能检测鼠标按下,鼠标左键描点,当已有三个或以上的点时鼠标右键以前三点画圆,当有两个圆时鼠标中键做出公切线。通过已有函数disp_point获得鼠标坐标,利用三点计算圆心公式求出圆心坐标与半径后画圆,已知两圆圆心及半径根据点到直线距离公式列出二元二次方程,求解得到公切线方程并绘制。
程序代码
function draw_lines
list11=[0 0];
list22=[0 0];
figure('WindowButtonDownFcn',@wbdcb)
ah = axes('SortMethod','childorder');
axis ([1 100 1 100])
function wbdcb(src,callbackevent)
if strcmp(get(src,'SelectionType'),'normal')