
Krzywe Lissajous
Krzywa parametryczna zakreślana przez punkt wykonujący niezależne ruchy harmoniczne w dwóch płaszczyznach wzajemnie prostopadłych. Krzywe są opisane równaniem parametrycznym:
x = A*sin(a*t+ φ)
y = B*sin(b*t)
| a/b | A i B | φ | Kształt |
|---|---|---|---|
| 1 | dowolne | dowolne | elipsa |
| 1 | A = B | Math.PI/2 | okrąg |
| 1 | A = B | 0 | prosta |
| 2 | dowolne | Math.PI/2 | parabola |
| wymierne | Math.PI/2 | krzywa zamknięta | |
| niewymierne | Math.PI/2 | krzywa się nie zamyka i wypełnia całą przestrzeń |
A oto przykłady:
I jeszcze jeden przykad:
Listing
var lissajous = function(A, B, a, b, fi, liczbaPunktow, strokeStyle) {
ctx.save();
ctx.beginPath();
ctx.strokeStyle = strokeStyle;
ctx.translate(w / 2, h / 2);
var x2;
var y2;
for ( var i = 0; i < liczbaPunktow; i++) {
var t = i * Math.PI / 360;
x2 = A * Math.sin(a * t + fi);
y2 = B * Math.sin(b * t);
ctx.lineTo(x2, y2);
}
ctx.stroke();
ctx.restore();
};
var cv = document.getElementById("canvas");
var ctx = cv.getContext("2d");
var w = cv.width;
var h = cv.height;
var A=1;
var B=1
var a=9;
var b=8;
var fi = Math.PI/2.0;
lissajous(A*100, B*100, a, b, fi, 12000, "orange");
ctx.fillText("A="+A + " B="+B + " a="+a+" b="+b + " fi=Math.PI/2",20,20);
