ملف:Animation of mechanical precession.gif

Animation_of_mechanical_precession.gif (440 × 440 بكسل حجم الملف: 931 كيلوبايت، نوع MIME: image/gif، ‏ملفوف، ‏60 إطارا)

ملخص

الوصف
English: Mechanical precession is the process of a round part (in blue) in a round hole (in red) rotating in the direction opposite to the applied radial force (in green).

I made this with the following Octave code:

%%%% This octave script draws a set of figures that
%%%% demonstrate Mechanical Precession.
%%%% It is very similar to the animation of a Hypotrochoid.
%%%% http://commons.wikimedia.org/wiki/File:HypotrochoidOutThreeFifths.gif
%%%% The figures are saved as a series of gifs, and 
%%%% compiled into a single animated gif named
%%%% mechanical_precession_x_sides.gif

% Number of turn made by the inner circle before looping
numberOfTurns=3;
% number of frames produced is numberOfTurns * timeResolution
% higher is a smoother but slower animation
timeResolution=20;
% Radius of outside circle (all distance measurements are unitless)
radiusOutside=1;
% 6 for hexagon, 4 for square etc.
polygonSides = 4;
% Radius of inside circle is calculated this way so that in numberOfTurns
% the innerCircle will rotate enough to arrive at a symmetric position on the polygon
radiusInside=(numberOfTurns * polygonSides)/(numberOfTurns * polygonSides + 1) * radiusOutside;
% so we have nice integers in the file names
count=0;

polygonOriginalPoints=radiusInside*.5*exp(i * 2* pi * (0:polygonSides) / polygonSides);
polygonOriginalPoints= [real(polygonOriginalPoints); imag(polygonOriginalPoints)]';

% Arrow to indicate the direction of the radial force
arroworiginalpoints=[1, 0; 0, 1; 0, .5; -1, .5; -1, -.5; 0, -.5; 0, -1; 1, 0] * [.3, 0; 0, .1];
close all;
for theta1=linspace(0, (numberOfTurns - 1/timeResolution) * 2*pi, timeResolution * numberOfTurns)
hold off
% draw outside circle
x1=0;
y1=0;
thetadummy = linspace(0, 2*pi, 100); 
circ1x = 1.03 * radiusOutside * cos(thetadummy) + x1; 
circ1y = 1.03 * radiusOutside * sin(thetadummy) + y1; 
plot(circ1x, circ1y, 'r', "linewidth", 15)
hold on

% draw inside circle
% centre of inside circle rotates by an angle theta1
x2=(radiusOutside - radiusInside) * cos(theta1);
y2=(radiusOutside - radiusInside) * sin(theta1);
thetadummy = linspace(0, 2*pi, 100); 
circ2x = radiusInside * cos(thetadummy) + x2;
circ2y = radiusInside * sin(thetadummy) + y2;
plot(circ2x, circ2y, 'b', "linewidth", 15)

% draw polygon
% amount that polygon rotates is theta1 counterclockwise and theta2 clockwise
% the two angles are equated by sustending the same arclength
% radiusInside * theta2 = radiusOutside * theta1
% theta2 = radiusOutside * theta1 / radiusInside
% rotPolygon = theta2 - theta1 = radiusOutside * theta1 / radiusInside - theta1 (clockwise)
% Polygon is centred at (x2,y2)
rotPolygon = (radiusOutside / radiusInside - 1) * theta1;
% multiply by a rotation matrix, add a translation matrix
  pPolygon=polygonOriginalPoints * [cos(rotPolygon), -sin(rotPolygon); sin(rotPolygon), cos(rotPolygon)] + [x2 * ones(length(polygonOriginalPoints),1), y2 * ones(length(polygonOriginalPoints),1)];
plot(pPolygon(:,1), pPolygon(:,2), "linewidth", 20);

% draw arrow
% rotated by theta1
parrow = arroworiginalpoints * [cos(theta1), sin(theta1); -sin(theta1) cos(theta1)];
plot(parrow(:,1), parrow(:,2), 'g', "linewidth", 12);

axis square
axis image
axis "off"
fn=strcat("fig",sprintf('%03d',count),".gif");
count++;
% The size value is a big large but images will be resized later for anti-aliasing
print(fn, "-dgif", "-S2500,2500");

pause(.1);
end

convert_command = strcat("convert -loop 0 -shave '90x90' -resize '440x440' fig*.gif mechanical_precession_", num2str(polygonSides),"_sides.gif");

system(convert_command);
التاريخ
المصدر عمل شخصي
المؤلف Chris Shannon

ترخيص

أنا، صاحب حقوق التأليف والنشر لهذا العمل، أنشر هذا العمل تحت الرخصة التالية:
w:ar:مشاع إبداعي
نسب العمل إلى مُؤَلِّفه الإلزام بترخيص المُشتقات بالمثل
يحقُّ لك:
  • مشاركة العمل – نسخ العمل وتوزيعه وبثُّه
  • إعادة إنتاج العمل – تعديل العمل
حسب الشروط التالية:
  • نسب العمل إلى مُؤَلِّفه – يلزم نسب العمل إلى مُؤَلِّفه بشكل مناسب وتوفير رابط للرخصة وتحديد ما إذا أجريت تغييرات. بالإمكان القيام بذلك بأية طريقة معقولة، ولكن ليس بأية طريقة تشير إلى أن المرخِّص يوافقك على الاستعمال.
  • الإلزام بترخيص المُشتقات بالمثل – إذا أعدت إنتاج المواد أو غيرت فيها، فيلزم أن تنشر مساهماتك المُشتقَّة عن الأصل تحت ترخيص الأصل نفسه أو تحت ترخيص مُتوافِقٍ معه.

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

١٧ أبريل 2012

٩٥٣٬٣٩٤ بايت

٤٤٠ بكسل

٤٤٠ بكسل

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي09:21، 18 أبريل 2012تصغير للنسخة بتاريخ 09:21، 18 أبريل 2012440 × 440 (931 كيلوبايت)ChrisShannonNerdA square instead of a hexagon as the indicator.
09:16، 18 أبريل 2012تصغير للنسخة بتاريخ 09:16، 18 أبريل 2012440 × 440 (944 كيلوبايت)ChrisShannonNerdReplaced the rectangle with a hexagon. Reduced the size to be under 12.5 MP. <code>%%%% This octave script draws a set of figures that %%%% demonstrate Mechanical Precession. %%%% It is very similar to the animation of a Hypotrochoid. %%%% http://comm...
03:21، 18 أبريل 2012تصغير للنسخة بتاريخ 03:21، 18 أبريل 20121٬000 × 1٬000 (2٫78 ميجابايت)ChrisShannonNerd

الصفحة التالية تستخدم هذا الملف:

الاستخدام العالمي للملف

الويكيات الأخرى التالية تستخدم هذا الملف: