Tập tin gốc(tập tin SVG, 1.005×897 điểm ảnh trên danh nghĩa, kích thước: 12 kB)

Miêu tả

Miêu tả Illustration of Rotation (mathematics)
Ngày
Nguồn gốc self-made, with MATLAB, then tweaked with Inkscape
Tác giả Oleg Alexandrov
SVG genesis
InfoField
 
Mã nguồn của tập tin SVG này không hợp lệ do 5 lỗi.
 
This W3C-invalid trigonometry was created with unknown tool.

Giấy phép

Public domain Tôi, người giữ bản quyền của tác phẩm này, chuyển tác phẩm này vào phạm vi công cộng. Điều này có giá trị trên toàn thế giới.
Tại một quốc gia mà luật pháp không cho phép điều này, thì:
Tôi cho phép tất cả mọi người được quyền sử dụng tác phẩm này với bất cứ mục đích nào, không kèm theo bất kỳ điều kiện nào, trừ phi luật pháp yêu cầu những điều kiện đó.

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);

Chú thích

Ghi một dòng giải thích những gì có trong tập tin này

Khoản mục được tả trong tập tin này

mô tả

Lịch sử tập tin

Nhấn vào ngày/giờ để xem nội dung tập tin tại thời điểm đó.

(Mới nhất | Cũ nhất) Xem (10 mới hơn) () (10 | 20 | 50 | 100 | 250 | 500)
Ngày/giờHình xem trướcKích cỡThành viênMiêu tả
hiện tại09:57, ngày 8 tháng 12 năm 2019Hình xem trước của phiên bản lúc 09:57, ngày 8 tháng 12 năm 20191.005×897 (12 kB)Andrew Pertsevfont «O»
09:52, ngày 8 tháng 12 năm 2019Hình xem trước của phiên bản lúc 09:52, ngày 8 tháng 12 năm 20191.005×897 (12 kB)Andrew Pertsevcolor
09:45, ngày 8 tháng 12 năm 2019Hình xem trước của phiên bản lúc 09:45, ngày 8 tháng 12 năm 20191.005×897 (12 kB)Andrew Pertsevclean, add param, file size
10:16, ngày 6 tháng 12 năm 2019Hình xem trước của phiên bản lúc 10:16, ngày 6 tháng 12 năm 20191.005×897 (19 kB)Andrew Pertsevcrop corr
10:14, ngày 6 tháng 12 năm 2019Hình xem trước của phiên bản lúc 10:14, ngày 6 tháng 12 năm 2019980×859 (19 kB)Andrew Pertsevcrop
10:08, ngày 6 tháng 12 năm 2019Hình xem trước của phiên bản lúc 10:08, ngày 6 tháng 12 năm 2019930×859 (19 kB)Andrew Pertsevdownload error correction
09:52, ngày 6 tháng 12 năm 2019Hình xem trước của phiên bản lúc 09:52, ngày 6 tháng 12 năm 2019930×847 (20 kB)Andrew Pertsevsvg optimization file size, arrow corrrction
03:36, ngày 11 tháng 6 năm 2007Hình xem trước của phiên bản lúc 03:36, ngày 11 tháng 6 năm 2007875×758 (47 kB)Oleg Alexandrovtweak
05:24, ngày 10 tháng 6 năm 2007Hình xem trước của phiên bản lúc 05:24, ngày 10 tháng 6 năm 2007875×758 (47 kB)Oleg AlexandrovTweak.
05:55, ngày 9 tháng 6 năm 2007Hình xem trước của phiên bản lúc 05:55, ngày 9 tháng 6 năm 2007875×874 (40 kB)Oleg Alexandrovtweak
(Mới nhất | Cũ nhất) Xem (10 mới hơn) () (10 | 20 | 50 | 100 | 250 | 500)
Có 1 trang tại Wikipedia tiếng Việt có liên kết đến tập tin (không hiển thị trang ở các dự án khác):

Sử dụng tập tin toàn cục

Những wiki sau đang sử dụng tập tin này:

Đặc tính hình