לדלג לתוכן

קובץ:Rotation illustration2.svg

תוכן הדף אינו נתמך בשפות אחרות.
מתוך ויקיפדיה, האנציקלופדיה החופשית

לקובץ המקורי(קובץ SVG, הגודל המקורי: 1,005 × 897 פיקסלים, גודל הקובץ: 12 ק"ב)

ויקישיתוף זהו קובץ שמקורו במיזם ויקישיתוף. תיאורו בדף תיאור הקובץ המקורי (בעברית) מוצג למטה.

תקציר

תיאור Illustration of Rotation (mathematics)
תאריך יצירה
מקור self-made, with MATLAB, then tweaked with Inkscape
יוצר Oleg Alexandrov
SVGהתפתחות 
InfoField
 
קוד המקור של קובץ SVG זה הוא לא תקין בגלל 5 שגיאות.
 
Other tools עם‎‎ נוצרה ה W3C-לא תקין גרפיקה וקטורית

רישיון

Public domain ברצוני, בעלי זכויות היוצרים על יצירה זו, לשחרר יצירה זו לנחלת הכלל. זה תקף בכל העולם.
יש מדינות שבהן הדבר אינו אפשרי על פי חוק, אם כך:
אני מעניק לכל אחד את הזכות להשתמש בעבודה זו לכל מטרה שהיא, ללא תנאים כלשהם, אלא אם כן תנאים כאלה נדרשים על פי חוק.

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

כיתובים

נא להוסיף משפט שמסביר מה הקובץ מייצג

פריטים שמוצגים בקובץ הזה

מוצג

image/svg+xml

היסטוריית הקובץ

ניתן ללחוץ על תאריך/שעה כדי לראות את הקובץ כפי שנראה באותו זמן.

(החדשות ביותר | הישנות ביותר) צפייה ב: (10 הבאות | ) (10 | 20 | 50 | 100 | 250 | 500)
תאריך/שעהתמונה ממוזערתממדיםמשתמשהערה
נוכחית12:57, 8 בדצמבר 2019תמונה ממוזערת לגרסה מ־12:57, 8 בדצמבר 2019‪897 × 1,005‬ (12 ק"ב)Andrew Pertsevfont «O»
12:52, 8 בדצמבר 2019תמונה ממוזערת לגרסה מ־12:52, 8 בדצמבר 2019‪897 × 1,005‬ (12 ק"ב)Andrew Pertsevcolor
12:45, 8 בדצמבר 2019תמונה ממוזערת לגרסה מ־12:45, 8 בדצמבר 2019‪897 × 1,005‬ (12 ק"ב)Andrew Pertsevclean, add param, file size
13:16, 6 בדצמבר 2019תמונה ממוזערת לגרסה מ־13:16, 6 בדצמבר 2019‪897 × 1,005‬ (19 ק"ב)Andrew Pertsevcrop corr
13:14, 6 בדצמבר 2019תמונה ממוזערת לגרסה מ־13:14, 6 בדצמבר 2019‪859 × 980‬ (19 ק"ב)Andrew Pertsevcrop
13:08, 6 בדצמבר 2019תמונה ממוזערת לגרסה מ־13:08, 6 בדצמבר 2019‪859 × 930‬ (19 ק"ב)Andrew Pertsevdownload error correction
12:52, 6 בדצמבר 2019תמונה ממוזערת לגרסה מ־12:52, 6 בדצמבר 2019‪847 × 930‬ (20 ק"ב)Andrew Pertsevsvg optimization file size, arrow corrrction
06:36, 11 ביוני 2007תמונה ממוזערת לגרסה מ־06:36, 11 ביוני 2007‪758 × 875‬ (47 ק"ב)Oleg Alexandrovtweak
08:24, 10 ביוני 2007תמונה ממוזערת לגרסה מ־08:24, 10 ביוני 2007‪758 × 875‬ (47 ק"ב)Oleg AlexandrovTweak.
08:55, 9 ביוני 2007תמונה ממוזערת לגרסה מ־08:55, 9 ביוני 2007‪874 × 875‬ (40 ק"ב)Oleg Alexandrovtweak
(החדשות ביותר | הישנות ביותר) צפייה ב: (10 הבאות | ) (10 | 20 | 50 | 100 | 250 | 500)

אין בוויקיפדיה דפים המשתמשים בקובץ זה.

שימוש גלובלי בקובץ

אתרי הוויקי השונים הבאים משתמשים בקובץ זה:

מטא־נתונים