P1: Given Scripts/Functions
MakeConic
function Z = MakeConic(A,B,C,D,E,F) % Represents the conic defined by % % Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 Z = struct('A',A,'B',B,'C',C,'D',D,'E',E,'F',F);
P1A
% Script P1A % % Plots the coeficients A, B, C, D, E, and F as the conic % % 2x^2 + xy + 3y^2 - x + y - 2 % % is rotated around the origin (0,0). close all n = 200; Kappa = MakeConic(2,1,3,-1,1,-2); phi = linspace(0,2*pi,n)'; P = zeros(n,6); % Store the A, B, C, D, E, and F values in the columns of P for k=1:n Z = RotateConic(Kappa,phi(k)); P(k,:) = [Z.A Z.B Z.C Z.D Z.E Z.F]; end % Plot the A, B, and C values plot(phi,P(:,1),'-',phi,P(:,2),':',phi,P(:,3),'--') xlabel('phi (the counter-clockwise rotation angle)') legend('A','B','C') title('Values of A, B, C when 2x^2 + xy + 3y^2 - x + y - 2 is rotated \phi radians') % Plot the D, E, and F values figure plot(phi,P(:,4),'-',phi,P(:,5),':',phi,P(:,6),'--') xlabel('phi (the counter-clockwise rotation angle)') legend('D','E','F') title('Values of D, E, F when 2x^2 + xy + 3y^2 - x + y - 2 is rotated \phi radians')
P1B
% Script P1B clc disp(' A B C D E F a b h k phi') disp('-----------------------------------------------------------') for A = 0:1 for B = 0:2 for C = 0:2 for D = [-1 1] for E = [-1 1] for F = [-1 1] Kappa = MakeConic(A,B,C,D,E,F); Eta = MakeEllipse(Kappa); if ~isempty(Eta) a = Eta.a; b = Eta.b; h = Eta.h; k = Eta.k; phi = Eta.phi; s1 = sprintf('%2d %2d %2d %2d %2d %2d',A,B,C,D,E,F); s2 = sprintf('%6.3f %6.3f %6.3f %6.3f %6.3f',a,b,h,k,phi); disp([s1 ' ' s2]) end end end end end end end
P1C
% Script P1C % Illustrates ShowEllipse close all % Display the ellipse (x/3)^2 + (y/2)^2 = 1 % and what is obtained by rotating it counterclockwise pi/6, pi/3, and pi/2 % radians. for i=1:4 subplot(2,2,i) ShowEllipse(MakeEllipse(RotateConic(MakeConic(1/9,0,1/4,0,0,-1),(i-1)*pi/6))) title(sprintf('angle = %3d degrees',(i-1)*30)) end % Display 2x^2 + xy + 3y^2 -x + y -2 = 0 figure Eta = MakeEllipse(MakeConic(2,1,3,-1,1,-2)); ShowEllipse(Eta) title(sprintf('a = %6.4f b = %6.4f (h,k) = (%6.4f,%6.4f) phi = %6.4f',... Eta.a, Eta.b, Eta.h, Eta.k, Eta.phi))