matlab程序中已知圆M圆心坐标(9,6)半径2.5,以及圆外一点p(1,2)怎样求p点到圆M切线上的切点的坐标。 150

麻烦给出可以运行的matlab程序解决出差不多我就给分... 麻烦给出可以运行的matlab程序
解决出差不多我就给分
展开
 我来答
兔子和小强
2014-08-26 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1402万
展开全部

求解方程组即可,设点切点T(x,y)

1) T到圆心O(9,6)距离为2.5

2)PT与TO相切

会解出两个切点

>> [x y] = solve('(x-9)^2+(y-6)^2-2.5^2', '(x-1)*(x-9)+(y-2)*(y-6)')
 
x =
 
 9.448472752332354265425053211902
 7.301527247667645734574946788098
 
 
y =
 
 3.540554495335291469149893576196
 7.834445504664708530850106423804
电大考试作业答案分享
2014-08-26 · 超过79用户采纳过TA的回答
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:230万
展开全部
我学的C,,思路应该是一样的......先求出p到圆心的距离l=sqrt((9-1)*(9-1)+(6-2)*(6-2)) =4*根号5; 再算出p到切点的距离,R=sqrt(2.5*2.5+(4*根号5)*(4*根号5))=根号86.25; 然后再判断切点(x,y) 必须是已经知圆上的点,且也是以p为圆心,R为半径的圆上.应该有两个点!
追问
能不能写出c语言程序
追答
double m = 1, n = 2;
double a = 9, b = 6;
double r = 2.5;

cout > a >> b;
cout > r;
cout > m >> n;
// 点到圆心距离的平方
double d2 = (m - a) * (m - a) + (n - b) * (n - b);
// 点到圆心距离
double d = sqrt(d2);
// 半径的平方
double r2 = r * r;
if (d2 圆心的单位向量
double x0 = (a - m) / d;
double y0 = (b - n) / d;
// 计算切线与点心连线的夹角
double f = asin(r / d);
// 向正反两个方向旋转单位向量
double x1 = x0 * cos(f) - y0 * sin(f);
double y1 = x0 * sin(f) + y0 * cos(f);
double x2 = x0 * cos(-f) - y0 * sin(-f);
double y2 = x0 * sin(-f) + y0 * cos(-f);
// 得到新座标
x1 = (x1 + m) * l;
y1 = (y1 + n) * l;
x2 = (x2 + m) * l;
y2 = (y2 + n) * l;
cout << "点在圆外,切点有两个:(" << x1 << ", "
<< y1 << ")和(" << x2 << ", " << y2 << ")" << endl;
}

system("pause");
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小于601
2014-08-26
知道答主
回答量:11
采纳率:0%
帮助的人:1.5万
展开全部
你可以设切点坐标(x.y)然后设一条过P点的直线,斜率用x、y表示,在与圆方程联立,不就可以求出切点坐标么,
追问
要用matlab程序语言做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式