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])
结果为:
如果问题得到解决请点 采纳~~本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用