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

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日

悬赏问题

  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计