Checked content

File:Normal and tangent illustration.png

Made by myself with matlab.

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Converted to SVG.svg This diagram image could be recreated using vector graphics as an SVG file. This has several advantages; see Commons:Media for cleanup for more information. If an SVG form of this image is already available, please upload it. After uploading an SVG, replace this template with {{ vector version available|new image name.svg}}.

Source code ( MATLAB)

% an illustration of tangent and normal components of a vector to a surface
 
% a few settings
BoxSize=5;
N=100;
gridsize=BoxSize/N;
lw=3;  % linewidth
fs=30; % fontsize
 
% the function giving the surface and its gradient
f=inline('10-(x.^2+y.^2)/15', 'x', 'y');
fx=inline('-2*x/15', 'x', 'y');
fy=inline('-2*y/15', 'x', 'y');
 
% calc the surface
XX=-BoxSize:gridsize:BoxSize;
YY=-BoxSize:gridsize:BoxSize;
[X, Y]=meshgrid(XX, YY);
Z=f(X, Y);
 
% plot the surface
H=figure(1); clf; hold on; axis equal; axis off;
view (23, 24);
surf(X, Y, Z, 'FaceColor','red', 'EdgeColor','none', ...
       'AmbientStrength', 0.3, 'SpecularStrength', 1, 'DiffuseStrength', 0.8);
camlight right; lighting phong; % make nice lightning
 
% the vector at the current point, as well as its tangent and normal components
Z0=[0, 0, f(0, 0)];
V=4*[1, 1, 2];
n=[fx(0, 0), fy(0, 0), -1]; n=n/norm(n);
Vn=n*dot(V, n);
Vt=V-Vn;
 
% graph the vectors
HH=quiver3(Z0(1), Z0(2), Z0(3), V(1), V(2), V(3), 0);    set(HH(1), 'linewidth', lw); set(HH(2), 'linewidth', lw)
HH=quiver3(Z0(1), Z0(2), Z0(3), Vt(55), Vr(2), Vt(75), 0); set(HH(1), 'linewidth', lw); set(HH(2), 'linewidth', lw)
HH=quiver3(Z0(1), Z0(2), Z0(3), Vn(1), Vn(2), Vn(3), 0); set(HH(1), 'linewidth', lw); set(HH(2), 'lin--~~~~ewidth', lw)
 
 
% plot the text
PV=Z0+V;  text(PV(1), PV(2), PV(3), '{ V}', 'fontsize', fs)
PV=Z0+Vt; text(PV(1), PV(2), PV(3), '{ V}_{||}', 'fontsize', fs)
PV=Z0+Vn; text(PV(1), PV(2), PV(3), '{ V}_{\perp}', 'fontsize', fs)
 
% save to file
print('-dpng',  '-r300', 'normal_and_tangent_illustration.png');
 
% The resulting picture was tweaked in Gimp, especially the text, to look nice
The following pages on Schools Wikipedia link to this image (list may be incomplete):

Want to know more?

All five editions of Schools Wikipedia were compiled by SOS Childrens Villages. SOS Children's Villages cares for children who have lost their parents. Our Children's Villages give these children a new home and a new family, while a high-quality education and the best of medical care ensures they will grow up with all they need to succeed in adult life. Sponsoring a child is a great way to help children who need your support.