1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| close all;
clear all;
clc;
rx = @(degrees) [1,0,0;0,cosd(degrees),-sind(degrees);0,sind(degrees),cosd(degrees)];
ry = @(degrees) [cosd(degrees),0,sind(degrees);0,1,0;-sind(degrees),0,cosd(degrees)];
rz = @(degrees) [cosd(degrees),-sind(degrees),0;sind(degrees),cosd(degrees),0;0,0,1];
[x,y] = meshgrid(linspace(-10,10,50));
xyz = ry(45)*rx(45)*[x(:)';y(:)';x(:)'*0];
x = reshape(xyz(1,:),size(x));
y = reshape(xyz(2,:),size(x));
z = reshape(xyz(3,:),size(x));
[nx,ny,nz] = surfnorm(x,y,z);
gx = -nx./nz;
gy = -ny./nz;
[gx2,gy2] = gradient(z);
figure;
contour(x,y,z,50);
hold all;
quiver(x,y,gx./sqrt(gx.^2+gy.^2)*0.2,gy./sqrt(gx.^2+gy.^2)*0.2,0,'b');
quiver(x,y,gx2./sqrt(gx2.^2+gy2.^2)*0.2,gy2./sqrt(gx2.^2+gy2.^2)*0.2,0,'r');
axis equal;
hold off;
[x,y,z] = sphere(50);
[nx,ny,nz] = surfnorm(x,y,z);
gx = -nx./nz;
gy = -ny./nz;
[gx2,gy2] = gradient(z);
figure;
contour(x,y,z,10);
hold all;
quiver(x,y,gx./sqrt(gx.^2+gy.^2)*0.05,gy./sqrt(gx.^2+gy.^2)*0.05,0,'b');
quiver(x,y,gx2./sqrt(gx2.^2+gy2.^2)*0.05,gy2./sqrt(gx2.^2+gy2.^2)*0.05,0,'r');
axis equal;
hold off; |
Partager