用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);

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

運行結果:

在這裏插入圖片描述

q 是四川師範派來的嗎 巧我也是

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章