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

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

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

题目帮助:

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

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

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

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

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

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

解决方法:

% O点已知(-1,0);

%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 的步骤。

%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;

运行结果:

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

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

你可能感兴趣的:(MATLAB,matlab)