m0_63434505 2023-03-06 08:59 采纳率: 100%
浏览 160
已结题

matlab编程:已知圆的半径、圆心和圆外一点,求过圆外点关于圆的切线

matlab编程:已知圆的半径、圆心和圆外一点,求过圆外点画关于圆的切线。感谢各位大家的帮助

  • 写回答

11条回答 默认 最新

  • A1358722560 2023-03-06 10:00
    关注

    根据要求设计了代码:

    % 输入圆的半径、圆心和圆外一点的坐标
    r = input('圆的半径为:');
    xc = input('圆心横坐标为:');
    yc = input('圆心纵坐标为:');
    xp = input('点的横坐标为:');
    yp = input('点的纵坐标为:');
    
    
    % 计算圆心到圆外点的距离
    d = sqrt((xp - xc)^2 + (yp - yc)^2)
    length = sqrt(d*d-r*r);
    
     
    %点到圆心的单位向量
    U.x=(xc-xp)/d;
    U.y=(yc-yp)/d;
    angle = asin(r/d);
    
    
    Q1.x = U.x * cos(angle)  -  U.y * sin(angle);
    Q1.y = U.x * sin(angle)  +  U.y * cos(angle);
    Q2.x = U.x * cos(-angle) -  U.y * sin(-angle);
    Q2.y = U.x * sin(-angle) +  U.y * cos(-angle);
    % 
    Q1.x = ( Q1.x ) * length+ xp;
    Q1.y = ( Q1.y) * length + yp;
    Q2.x = ( Q2.x ) * length+ xp;
    Q2.y = ( Q2.y ) * length+ yp;
    theta = 0:pi/100:2*pi;
    x = r*cos(theta) + xc;
    y = r*sin(theta) + yc;
    plot(x, y, 'b-', 'LineWidth', 2);
    hold on;
    plot(xp, yp, 'ro', 'MarkerSize', 8, 'LineWidth', 2);
    plot(Q1.x, Q1.y, 'ro', 'MarkerSize', 8, 'LineWidth', 2);
    plot(Q2.x, Q2.y, 'ro', 'MarkerSize', 8, 'LineWidth', 2);
    
    line([xp,Q1.x],[yp,Q1.y])
    line([xp,Q2.x],[yp,Q2.y])
     
    
    

    结果为:

    img


    如果问题得到解决请点 采纳~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效