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

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 如何解决蓝牙通话音频突发失真问题
  • ¥15 安装opengauss数据库报错
  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas
  • ¥15 蓝牙硬件,可以用哪几种方法控制手机点击和滑动
  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题