一:請給出繪製圖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 是四川師範派來的嗎 巧我也是