ไฟล์:Rotation_illustration2.svg
From Wikipedia, the free encyclopedia
ขนาดของตัวอย่าง PNG นี้ของไฟล์ SVG นี้: 672 × 600 พิกเซล ความละเอียดอื่น: 269 × 240 พิกเซล | 538 × 480 พิกเซล | 861 × 768 พิกเซล | 1,147 × 1,024 พิกเซล | 2,295 × 2,048 พิกเซล | 1,005 × 897 พิกเซล
ดูภาพที่มีความละเอียดสูงกว่า ((ไฟล์ SVG, 1,005 × 897 พิกเซล, ขนาดไฟล์: 12 กิโลไบต์))
รูปภาพหรือไฟล์เสียงนี้ ต้นฉบับอยู่ที่ คอมมอนส์ รายละเอียดด้านล่าง เป็นข้อความที่แสดงผลจาก ไฟล์ต้นฉบับในคอมมอนส์
|
ความย่อ
คำอธิบายRotation illustration2.svg | Illustration of Rotation (mathematics) |
วันที่ | |
แหล่งที่มา | self-made, with MATLAB, then tweaked with Inkscape |
ผู้สร้างสรรค์ | Oleg Alexandrov |
SVG genesis InfoField | ไฟล์ภาพกราฟิกส์เวกเตอร์ W3C ตรวจสอบแล้วมีข้อผิดพลาดในไฟล์นี้ สร้างขึ้นโดยใช้ Other tools |
การอนุญาตใช้สิทธิ
Public domainPublic domainfalsefalse |
ข้าพเจ้า ผู้ถือลิขสิทธิ์ในงานนี้ ขอมอบงานให้เป็นสาธารณสมบัติ ประกาศนี้มีผลทั่วโลก ในบางประเทศ การกระทำดังกล่าวอาจไม่สามารถทำได้ตามกฎหมาย ข้าพเจ้าอนุญาตให้ทุกคนมีสิทธิ์ในการใช้ไฟล์นี้ในทุกเหตุผลการใช้ โดยไม่มีมีเงื่อนไข เว้นแต่กฎหมายไม่อนุญาตให้ทำเช่นนั้น |
Source code (MATLAB)
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);
ไอเทมที่แสดงอยู่ในไฟล์นี้
ประกอบด้วย
บางค่าที่ไม่มีไอเทมวิกิสนเทศ
9 มิถุนายน 2007
media type อังกฤษ
image/svg+xml
ประวัติไฟล์
คลิกวันที่/เวลาเพื่อดูไฟล์ที่ปรากฏในขณะนั้น
วันที่/เวลา | รูปย่อ | ขนาด | ผู้ใช้ | ความเห็น | |
---|---|---|---|---|---|
ปัจจุบัน | 16:57, 8 ธันวาคม 2562 | 1,005 × 897 (12 กิโลไบต์) | Andrew Pertsev | font «O» | |
16:52, 8 ธันวาคม 2562 | 1,005 × 897 (12 กิโลไบต์) | Andrew Pertsev | color | ||
16:45, 8 ธันวาคม 2562 | 1,005 × 897 (12 กิโลไบต์) | Andrew Pertsev | clean, add param, file size | ||
17:16, 6 ธันวาคม 2562 | 1,005 × 897 (19 กิโลไบต์) | Andrew Pertsev | crop corr | ||
17:14, 6 ธันวาคม 2562 | 980 × 859 (19 กิโลไบต์) | Andrew Pertsev | crop | ||
17:08, 6 ธันวาคม 2562 | 930 × 859 (19 กิโลไบต์) | Andrew Pertsev | download error correction | ||
16:52, 6 ธันวาคม 2562 | 930 × 847 (20 กิโลไบต์) | Andrew Pertsev | svg optimization file size, arrow corrrction | ||
10:36, 11 มิถุนายน 2550 | 875 × 758 (47 กิโลไบต์) | Oleg Alexandrov | tweak | ||
12:24, 10 มิถุนายน 2550 | 875 × 758 (47 กิโลไบต์) | Oleg Alexandrov | Tweak. | ||
12:55, 9 มิถุนายน 2550 | 875 × 874 (40 กิโลไบต์) | Oleg Alexandrov | tweak |
หน้าที่มีภาพนี้
หน้าต่อไปนี้ โยงมาที่ภาพนี้:
การใช้ไฟล์ข้ามโครงการ
วิกิอื่นต่อไปนี้ใช้ไฟล์นี้:
- การใช้บน ar.wikipedia.org
- การใช้บน ca.wikipedia.org
- การใช้บน ca.wikibooks.org
- การใช้บน cv.wikipedia.org
- การใช้บน da.wikipedia.org
- การใช้บน de.wikipedia.org
- การใช้บน de.wikiversity.org
- การใช้บน en.wikipedia.org
- การใช้บน eo.wikipedia.org
- การใช้บน es.wikipedia.org
- การใช้บน eu.wikipedia.org
- การใช้บน fa.wikipedia.org
- การใช้บน fi.wikipedia.org
- การใช้บน gl.wikipedia.org
- การใช้บน hu.wikipedia.org
- การใช้บน hy.wikipedia.org
- การใช้บน it.wikipedia.org
- การใช้บน ja.wikipedia.org
- การใช้บน ko.wikipedia.org
- การใช้บน pl.wiktionary.org
- การใช้บน ro.wikipedia.org
- การใช้บน ru.wikipedia.org
- การใช้บน sv.wikipedia.org
- การใช้บน ta.wikipedia.org
- การใช้บน uk.wikipedia.org
- การใช้บน vi.wikipedia.org
- การใช้บน www.wikidata.org
- การใช้บน zh-yue.wikipedia.org
- การใช้บน zh.wikipedia.org
ข้อมูลเกี่ยวกับภาพ
ภาพนี้มีข้อมูลเพิ่มเติม ซึ่งส่วนใหญ่มาจากกล้องดิจิตอลหรือสแกนเนอร์ที่สามารถเก็บข้อมูลดังกล่าวไว้รวมกับภาพได้ ถ้าภาพนี้ถูกปรับปรุงแก้ไขหรือเปลี่ยนแปลงจากเดิม ข้อมูลบางอย่างจะยังคงไม่เปลี่ยนแปลงเหมือนภาพที่ถูกปรับปรุงแก้ไขนั้น
ความกว้าง | 804.2pt |
---|---|
ความสูง | 717.3pt |