Hipocykloida

Jest to krzywa kreślona przez punkt M okręgu toczącego się bez
poślizgu po wewnętrznej stronie okręgu nieruchomego koła.

Hipocykloida wyrażona jest takim samym równaniem parametrycznym
jak epicykloida, ale parametr a jest zamieniony na – a, a symbole są
takie same jak przy epicykloidzie.

Kształt krzywej zależy od stosunku

Gdy:

  • m=2 krzywa degeneruje do średnicy stałego koła
  • m=3 hipocykloida ma 3 ostrza
  • m=4 otrzymujemy hipocykloidę o 4 ostrzach nazywaną
    asteroidą.

Hipotrochoida

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

Jeżeli:

  • λ=1 jak w powyższych wzorach otrzymujemy hipocykloidę
  • λ > 0 to otrzymujemy tzw. hipocykloidę wydłużoną
  • λ < 0 to otrzymujemy tzw. hipocykloidę skróconą.

Wszystkie trzy hipocykloidy noszą ogólną nazwę hipotrochoida.

W hipotrochoidach gdy krzywa staje się elipsą, gdy A=2a
otrzymujemy konchoidę nazywaną też ślimakiem Pascala.

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

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

Listing

var hipocykloida = function(AA, aa, lambda, liczbaPunktow,
					strokeStyle) {
	ctx.save();
	ctx.beginPath();
	ctx.strokeStyle = strokeStyle;
	ctx.translate(w / 2, h / 2);
	var x1 = AA + (lambda - 1) * aa;
	var y1 = 0;
	var x2;
	var y2;
	aa = -aa;
	for (var i = 0; i < liczbaPunktow; i++) {
		var t = i * Math.PI / 360;
		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;
hipocykloida(60, 20, 1, 2000, "green");		
            

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

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

hipocykloida(60, 15, 1, 2000, "green");

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

hipocykloida(60, 12, 1, 2000, "green");

m=4 (A=100, a=25), λ=0.5

hipocykloida(100, 25, 0.5, 2000, "green");

m=4 (A=100, a=25), λ=1.5

hipocykloida(100, 25, 1.5, 2000, "green");

m=4 (A=100, a=-25), λ=0.5

hipocykloida(100, -25, 0.5, 2000, "green");

m=2 (A=100, a=50), λ=1.5

hipocykloida(100, 50, 1.5, 2000, "green");

Dodaj komentarz

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