File:Rotation illustration2.svg
From Wikimedia Commons, the free media repository
Jump to navigation
Jump to search
Size of this PNG preview of this SVG file: 672 × 600 pixels. Other resolutions: 269 × 240 pixels | 538 × 480 pixels | 861 × 768 pixels | 1,147 × 1,024 pixels | 2,295 × 2,048 pixels | 1,005 × 897 pixels.
Original file (SVG file, nominally 1,005 × 897 pixels, file size: 12 KB)
File information
Structured data
Captions
Summary
[edit]DescriptionRotation illustration2.svg | Illustration of Rotation (mathematics) |
Date | |
Source | self-made, with MATLAB, then tweaked with Inkscape |
Author | Oleg Alexandrov |
SVG development InfoField |
Licensing
[edit]Public domainPublic domainfalsefalse |
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. |
function main()
% prepare the screen
figure(1); clf; hold on; axis equal; axis off;
linewidth=2; fs= 30;
N = 11;
a = -2; b = N+a-1;
blue = [0, 0, 1];
red = [1, 0, 0];
gray=[0.7, 0.7, 1.0];
white = 0.99*[1, 1, 1];
lightblue=[176, 196,222]/256;
green = [0, 200, 70]/256;
color1 = gray;
color2 = green;
XX = linspace(a, b, N); YY = XX;
[X, Y] = meshgrid(XX, YY);
factor = 4; shift = 3.6;
x=factor*[0, 0.7, 0.5 1, 0]+shift; y=factor*[0, 0, 0.5, 1 0.8];
do_plot(x, y, X, Y, linewidth, color1);
theta=1.4*pi/4; A=[cos(theta) -sin(theta); sin(theta) cos(theta)];
for i=1:N
for j=1:N
v= A*[X(i, j); Y(i, j)]; X(i, j)=v(1); Y(i, j)=v(2);
end
end
for i=1:length(x)
v= A*[x(i); y(i)]; x(i)=v(1); y(i)=v(2);
end
do_plot(x, y, X, Y, linewidth, color2);
% plot the point around which the rotation takes place
ball_radius = 0.15;
ball(0, 0, ball_radius, red);
text(0, -0.5, '{\it O}', 'color', red, 'fontsize', fs)
% plot the arrow suggesting the rotation
factor = 4;
x=factor*1.7; y=factor*2.1; r=sqrt(x^2+y^2); thetas=atan2(y, x);
thetae=0.7*theta+thetas;
Theta=thetas:0.01:thetae; X=r*cos(Theta); Y=r*sin(Theta);
plot(X, Y, 'linewidth', linewidth, 'color', red)
n=length(Theta);
arrow([X(n-2), Y(n-2)], [2*X(n)-X(n-1), 2*Y(n)-Y(n-1)], linewidth, 1, 30, linewidth, red)
% plot two invisible points, to bypass a saving bug
plot(a, 1.5*b, 'color', white);
plot(a, -0.5*b, 'color', white);
% save to eps and to svg
%saveas(gcf, 'rotation_illustration2.eps', 'psc2')
plot2svg('rotation_illustration2.svg')
function do_plot(x, y, X, Y, linewidth, color)
n=length(x);
P=5; Q=n+2*P+1; % P will denote the amount of overlap
% Make the 'periodic' sequence xp=[x(1) x(2) x(3) ... x(n) x(1) x(2) x(3) ... ]
% of length Q. Same for yp.
for i=1:Q
j=rem(i, n)+1; % rem() is the remainder of division of i by n
xp(i)=x(j);
yp(i)=y(j);
end
% do the spline interpolation
t=1:length(xp);
N=100; % how fine to make the interpolation
tt=1:(1/N):length(xp);
xx=spline(t, xp, tt);
yy=spline(t, yp, tt);
% discard the redundant pieces
start=N*(P-1)+1;
stop=N*(n+P-1)+1;
xx=xx(start:stop);
yy=yy(start:stop);
H=fill(xx, yy, color);
set(H, 'linewidth', 1, 'edgecolor', color);
[M, N]= size(X);
for i=1:N
plot([X(1, i), X(N, i)], [Y(1, i), Y(N, i)], 'linewidth', linewidth, 'color', color)
plot([X(i, 1), X(i, N)], [Y(i, 1), Y(i, N)], 'linewidth', linewidth, 'color', color)
end
% plot some balls, avoid artifacts at the corners
small_rad=0.045;
ball(X(1, 1), Y(1, 1), small_rad, color)
ball(X(1, N), Y(1, N), small_rad, color)
ball(X(N, 1), Y(N, 1), small_rad, color)
ball(X(N, N), Y(N, N), small_rad, color)
function arrow(start, stop, th, arrow_size, sharpness, arrow_type, color)
% Function arguments:
% start, stop: start and end coordinates of arrow, vectors of size 2
% th: thickness of arrow stick
% arrow_size: the size of the two sides of the angle in this picture ->
% sharpness: angle between the arrow stick and arrow side, in degrees
% arrow_type: 1 for filled arrow, otherwise the arrow will be just two segments
% color: arrow color, a vector of length three with values in [0, 1]
% convert to complex numbers
i=sqrt(-1);
start=start(1)+i*start(2); stop=stop(1)+i*stop(2);
rotate_angle=exp(i*pi*sharpness/180);
% points making up the arrow tip (besides the "stop" point)
point1 = stop - (arrow_size*rotate_angle)*(stop-start)/abs(stop-start);
point2 = stop - (arrow_size/rotate_angle)*(stop-start)/abs(stop-start);
if arrow_type==1 % filled arrow
% plot the stick, but not till the end, looks bad
t=0.5*arrow_size*cos(pi*sharpness/180)/abs(stop-start); stop1=t*start+(1-t)*stop;
plot(real([start, stop1]), imag([start, stop1]), 'LineWidth', th, 'Color', color);
% fill the arrow
H=fill(real([stop, point1, point2]), imag([stop, point1, point2]), color);
set(H, 'EdgeColor', 'none')
else % two-segment arrow
plot(real([start, stop]), imag([start, stop]), 'LineWidth', th, 'Color', color);
plot(real([point1, stop, point2]), imag([point1, stop, point2]), 'LineWidth', th, 'Color', color);
end
function ball(x, y, radius, color) % draw a ball of given uniform color
Theta=0:0.1:2*pi;
X=radius*cos(Theta)+x;
Y=radius*sin(Theta)+y;
H=fill(X, Y, color);
set(H, 'EdgeColor', color);
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 09:57, 8 December 2019 | 1,005 × 897 (12 KB) | Andrew Pertsev (talk | contribs) | font «O» | |
09:52, 8 December 2019 | 1,005 × 897 (12 KB) | Andrew Pertsev (talk | contribs) | color | ||
09:45, 8 December 2019 | 1,005 × 897 (12 KB) | Andrew Pertsev (talk | contribs) | clean, add param, file size | ||
10:16, 6 December 2019 | 1,005 × 897 (19 KB) | Andrew Pertsev (talk | contribs) | crop corr | ||
10:14, 6 December 2019 | 980 × 859 (19 KB) | Andrew Pertsev (talk | contribs) | crop | ||
10:08, 6 December 2019 | 930 × 859 (19 KB) | Andrew Pertsev (talk | contribs) | download error correction | ||
09:52, 6 December 2019 | 930 × 847 (20 KB) | Andrew Pertsev (talk | contribs) | svg optimization file size, arrow corrrction | ||
03:36, 11 June 2007 | 875 × 758 (47 KB) | Oleg Alexandrov (talk | contribs) | tweak | ||
05:24, 10 June 2007 | 875 × 758 (47 KB) | Oleg Alexandrov (talk | contribs) | Tweak. | ||
05:55, 9 June 2007 | 875 × 874 (40 KB) | Oleg Alexandrov (talk | contribs) | tweak |
You cannot overwrite this file.
File usage on Commons
The following page uses this file:
File usage on other wikis
The following other wikis use this file:
- Usage on ar.wikipedia.org
- Usage on ca.wikipedia.org
- Usage on ca.wikibooks.org
- Usage on cv.wikipedia.org
- Usage on da.wikipedia.org
- Usage on de.wikipedia.org
- Usage on de.wikiversity.org
- Kurs:Lineare Algebra (Osnabrück 2015-2016)/Teil I/Vorlesung 21
- Kurs:Lineare Algebra (Osnabrück 2015-2016)/Teil I/Vorlesung 21/kontrolle
- Kurs:Lineare Algebra (Osnabrück 2017-2018)/Teil I/Vorlesung 21
- Kurs:Lineare Algebra (Osnabrück 2017-2018)/Teil I/Vorlesung 21/kontrolle
- Kurs:Lineare Algebra (Osnabrück 2024-2025)/Teil I/Vorlesung 21
- Kurs:Lineare Algebra (Osnabrück 2024-2025)/Teil I/Vorlesung 21/kontrolle
- Eigentheorie/2/Einführung/Textabschnitt
- Usage on en.wikipedia.org
- Usage on eo.wikipedia.org
- Usage on es.wikipedia.org
- Usage on eu.wikipedia.org
- Usage on fa.wikipedia.org
- Usage on fi.wikipedia.org
- Usage on gl.wikipedia.org
- Usage on hu.wikipedia.org
- Usage on hy.wikipedia.org
- Usage on it.wikipedia.org
- Usage on ja.wikipedia.org
- Usage on ko.wikipedia.org
- Usage on pl.wiktionary.org
- Usage on ro.wikipedia.org
- Usage on ru.wikipedia.org
- Usage on sv.wikipedia.org
- Usage on ta.wikipedia.org
- Usage on th.wikipedia.org
- Usage on uk.wikipedia.org
- Usage on vi.wikipedia.org
- Usage on www.wikidata.org
- Usage on zh-yue.wikipedia.org
- Usage on zh.wikipedia.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 804.2pt |
---|---|
Height | 717.3pt |