%-Matlab--quenstion-7----Group-10
%================================
% Author: Jacob Pham
% Tool: Matlab 2013a
% History: 26/5/2014
%================================



function bai7_nhom9_ve_hinh
clc 
%----------Nhap diem Mo------------
disp('nhap toa do Mo(x0,y0,z0) thuoc mat phang z=2-x^2-y^2')
x0=input('x0= ');
y0=input('y0= ');    
z0=input('z0= ');
%----------Kiem tra Mo----------
while (z0~=2-x0^2-y0^2) || (z0<0)
    disp('nhap sai Mo, Mo phai thoa man mat cong z=2-x^2-y^2')
    disp('Vui long nhap lai')
    x0=input('x0= ');
    y0=input('y0= ');
    z0=input('z0= ');
end
syms x y 
%--------------Nhap ham so z=2-x^2-y^2-----------
z=2-x^2-y^2;
%------------Tinh vector don vi--------------
n=[diff(z,'x') diff(z,'y') diff(z,'z')]; % tinh vector phap tuyen
n=n/sqrt(diff(z,'x')^2+diff(z,'y')^2+diff(z,'z')^2); %Tinh vector  phap tuyen don vi
%-----------Set thuoc tinh cho toa do------------------
axis([-2.5 2.5 -2.5 2.5 -2.5 2.5])
xlabel('Ox')
ylabel('Oy')
zlabel('Oz')
%-------------------ve do thi z(x,y)---------------------
z=2-x^2-y^2;
[x,y]=meshgrid(x0-5:.05:x0+5,y0-5:.05:y0+5);
z=char(z);z=strrep(z,'*','.*');z=strrep(z,'^','.^');
z=eval(z);
[x y z]=loai(x,y,z); %loai bo cac diem bat dinh
set(surf(x,y,z),'facecolor','b','edgecolor','non','facealpha',.3)
hold on
z=0*x+0*y;
set(surf(x,y,z),'facecolor','y','edgecolor','non','facealpha',.3)
hold on
rotate3d on
z=2-x^2-y^2;
%-----------------ve phap vector--------------
x=x0;y=y0;z=z0;
n=eval(n);
x=n(1);
y=n(2);
z=n(3);
%------------------Xuat pha vector don vi--------------
disp(['vector phap tai M0(' num2str(x0) ',' num2str(y0) ',' num2str(z0) ') la:'])
disp(['n= (' num2str(n(1)) ',' num2str(n(2)) ',' num2str(n(3)) ')'])
quiver3(x0,y0,z0,x,y,z,.5,'r','LineWidth',2) %-----ve phap vector tai diem (x0,y0,z0) va co vector donvi la(x,y,z)-----
hold on
%----------Ve hinh chieu--------------
t=0:0.01:2*pi;
x1=sqrt(2)*cos(t);
y1=sqrt(2)*sin(t);
plot(x1,y1)
hold off
%--------Ham loai diem bat dinh-----------
function [x y z]=loai(x,y,z)
for i=1:length(x)
    for j=1:length(y)
        if ~isreal(z(i,j))
            z(i,j)=NaN;x(i,j)=NaN;y(i,j)=NaN;
        end
    end
end
end
end