Epicykloida

Jest to krzywa kreślona przez punkt M okręgu, który toczy się bez poślizgu po zewnętrznej stronie okręgu nieruchomego koła.

Epicykloida wyrażona jest równaniem parametrycznym:

gdzie:

A– jest promieniem nieruchomego koła

a– jest promieniem ruchomego koła.

Kształt krzywej zależy od stosunku


Gdy:

  • m=1 powstaje krzywa zwana kardioidą
  • m jest liczbą całkowitą, epicykloida jest krzywą zamkniętą, składającą się ze skończonej liczby łuków
  • m jest ułamkiem, epicykloida składa się ze skończonej liczby krzyżujących się łuków. przy czym punkt bieżący wraca do punktu wyjściowego
  • m jest liczbą niewymierną, łuków jest nieskończenie wiele, a punkt M nie wraca do położenia wyjściowego.

Epitrochoida

Do równania epicykloidy, w drugim członie każdego równania można wprowadzić dodatkowy parametr λ.

Jeżeli:

  • λ = 1 parametr ten jest równy 1 jak w powyższych wzorach otrzymujemy epicykloidę
  • λ > 0 to otrzymujemy tzw. epicykloidę wydłużoną
  • λ < 0 to otrzymujemy tzw. epicykloidę skróconą.

Wszystkie trzy epicykloidy noszą ogólną nazwę epitrochoida.

m=1 (A=60, a=60 ), λ=1

Zawartość możesz zobaczyć w
przeglądarce obsługującej element <canvas>
z kontekstem "2d"

Listing

var epicykloida = function(AA, aa, lambda, liczbaPunktow, strokeStyle) {
	ctx.save();
	ctx.beginPath();
	ctx.translate(w / 2, h / 2);
	ctx.strokeStyle = strokeStyle;
	var x1 = AA - (lambda - 1) * aa;
	var y1 = 0;
	var x2;
	var y2;
	for ( var i = 0; i < liczbaPunktow; i++) {
		var t = i * Math.PI / 360.0;
		x2 = (AA + aa) * Math.cos(t) - lambda * aa
				* Math.cos((AA + aa) * t / aa);
		y2 = (AA + aa) * Math.sin(t) - lambda * aa
				* Math.sin((AA + aa) * t / aa);
		ctx.moveTo(Math.floor(x1), Math.floor(y1));
		ctx.lineTo(Math.floor(x2), Math.floor(y2));
		x1 = x2;
		y1 = y2;
	}
	ctx.stroke();
	ctx.restore();
};
	var cv = document.getElementById("canvas");
	var ctx = cv.getContext("2d");	
	var w = cv.width;
	var h = cv.height;
	epicykloida(60, 60, 1, 1000, "blue");
            

Spróbuj też wywołać krzywe z następującymi parametrami

m =3 (A=60, a=20), λ=1

epicykloida(60, 20, 1, 1000, "blue");

m =1.5 (A=60, a=40), λ=1

epicykloida(60, 40, 1, 2000, "blue");

m =3.3(333) (A=100, a=30), λ=1

epicykloida(100, 30, 1, 2000, "blue");

m=3 (A=60, a=20), λ=1.5

epicykloida(60, 20, 1.5, 2000, "blue");

m=3 (A=60, a=20), λ=0.5

epicykloida(60, 20, 0.5, 2000, "blue");

m=-3 (A=60, a=-20), λ=1.5

epicykloida(60, -20, 1.5, 2000, "blue");

m=-3 (A=60, a=-20), λ=0.5

epicykloida(60, -20, 0.5, 2000, "blue");

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *