用matlab绘制图1中右图的圆、折线束及其包络线(心形线),请给出步骤及其实现原理,

一:请给出绘制图1中右图的圆、折线束及其包络线(心形线)的步骤及其实现原理。给出绘制该图的MATLAB程序及其运行结果(图形)。

在这里插入图片描述

题目帮助:

例如,画图的初略步骤可以是这样

a) 画一个基圆C,并在C的周界上画一个点O。

b) 在C上选取另一个点P,画一条线在P点与C相切。

c) 标出切线上的一个点Q使PQ与OQ垂直。

d) 对圆C上的若干点重复b),c)。

e) 将所有的点Q依次用直线段连接起来。

解决方法:

% O点已知(-1,0)。即代码中初始化的(m0,n0)点。

%1 在基圆C上选取一个点P( m,n ),心里默画一条线在P点与圆C相切。。

%2 标出切线上的一个点Q(x0,y0)使PQ与OQ垂直。实际上要求出OQ的直线,再求出PQ与之的交点Q的坐标。

%3 将坐标Q与P和O点相连,

%4 对圆C上的若干点重复1 2 3 的步骤。即代码中循环的次数,用i不断循环t设置的范围,实际上就是不断重复选择圆C上点当作新的O点。

%5 如果要连接各点的话 ,注意此处的连接需要记录上一次交点的位置我设为了(m0 n0),再与本次的新交点Q(x0,y0)坐标相连。

MATLAB代码:

t =-3:0.1:3
ezplot("cos(t)","sin(t)");
axis([-2 2 -2 2]);
hold on 
m0 = -1;
n0 = 0;
for i = t 
    m = cos(i);
    n = sin(i);
    x0 = (n+m*m/n-n/m)/(n/m+m/n);
%    y0 = (n/m)*(n/m+m*m/n+n)/(n/m+m/n)+m*m/n+n;
    y0 = n/m*x0+n/m;
    x1 = [x0,-1]
    y1 = n/m*x1+n/m;
    plot(x1,y1);
    hold on 
    x2 = [m,x0];
    y2 = -1*m/n*x2+m*m/n+n;
    plot(x2,y2);
    hold on
    if m0 ~= -1
        plot([m0 x0],[n0 y0]);
    end
    m0 = x0;
    n0 = y0;
end
grid on;

运行结果:

在这里插入图片描述

q 是四川师范派来的吗 巧我也是

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值