用MATLAB圆外某点到圆的切点(不废话上完整代码)

用MATLAB编写的程序,用于已知圆的圆心和半径以及圆外一点,求出该点到圆的切点,并绘制出圆、切线以及相关点的图形:

% 判断点是否真的在圆外
if distance <= radius
    error('给定的点不在圆外,请重新输入圆外的点。');
end

% 计算从圆心指向圆外点的向量与x轴正方向的夹角
angle_to_point = atan2(point_y - center_y, point_x - center_x);

% 计算圆心到圆外点的连线与圆半径在切点处形成的夹角
angle_between = acos(radius / distance);

% 计算两个切点的坐标
tangent_point_1_x = center_x + radius * cos(angle_to_point + angle_between);
tangent_point_1_y = center_y + radius * sin(angle_to_point + angle_between);

tangent_point_2_x = center_x + radius * cos(angle_to_point - angle_between);
tangent_point_2_y = center_y + radius * sin(angle_to_point - angle_between);

% 输出切点坐标
fprintf('第一个切点坐标为: (%.4f, %.4f)\n', tangent_point_1_x, tangent_point_1_y);
fprintf('第二个切点坐标为: (%.4f, %.4f)\n', tangent_point_2_x, tangent_point_2_y);

% 绘制图形
theta = 0:0.01:2*pi;
x_circle = center_x + radius * cos(theta);
y_circle = center_y + radius * sin(theta);

plot(x_circle, y_circle, 'b', 'LineWidth', 2);
hold on;
plot(point_x, point_y, 'ro', 'MarkerSize', 8);
plot([point_x, tangent_point_1_x], [point_y, tangent_point_1_y], 'g', 'LineWidth', 1);
plot([point_x, tangent_point_2_x], [point_y, tangent_point_2_y], 'g', 'LineWidth', 1);
plot(tangent_point_1_x, tangent_point_1_y, 'kx', 'MarkerSize', 8);
plot(tangent_point_2_x, tangent_point_2_y, 'kx', 'MarkerSize', 8);
axis equal;
title('圆、圆外点及切线');
hold off;
fprintf('第一个切点坐标为: (%.4f, %.4f)\n', tangent_point_1_x, tangent_point_1_y);
fprintf('第二个切点坐标为: (%.4f, %.4f)\n', tangent_point_2_x, tangent_point_2_y);

在这个程序中:
 
1. 首先定义了圆的圆心坐标、半径以及圆外一点的坐标。
2. 接着计算圆心到圆外点的距离,以确认该点在圆外,若不在则报错。
3. 然后通过三角函数关系计算出从圆心指向圆外点的向量与x轴正方向的夹角,以及圆心到圆外点的连线与圆半径在切点处形成的夹角。
4. 利用这些夹角计算出两个切点的坐标。
5. 最后绘制出圆、圆外点、切点以及切线的图形,并且设置图形的坐标轴为等比例显示,以便更直观地观察图形。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值