
Skalowanie – elipsa
Użyty został Skrypt transform.js.
Elipsę możemy uzyskać przez skalowanie koła, ale prawidłowe dobranie położenia elipsy może sprawiać trudność. Dlatego utworzyliśmy funkcję drawEllipse, w której podajemy parametry x, y, w, h, czyli położenie lewego górnego rogu prostokąta obejmującego elipsę oraz szerokość i wysokość elipsy.
A oto nasza funkcja
Listing
function drawEllipse(context, x, y, w, h) {
var s = h / w;
context.save();
context.beginPath();
context.translate(0, y - y * s);
context.scale(1, s);
context.arc(x + w / 2, y + w / 2, w / 2, 0, 2 * Math.PI, false);
context.restore();
};
Zmianie uległa długość odcinka y. Ponieważ translację wykonaliśmy przed skalowaniem musieliśmy skrócić odcinek y. Gdyby translacja była wykonywana po skalowaniu, odcinek y musielibyśmy powiększyć.
W dalszym ciągu poznamy inne sposoby utworzenia i narysowania elipsy.
Listing
var cv = document.getElementById("canvas");
var ctx = cv.getContext("2d");
drawEllipse(ctx, 10, 10, 200, 75);
ctx.fillStyle = 'lightblue';
ctx.fill();
ctx.lineWidth = 3;
ctx.strokeStyle = 'black';
ctx.stroke();
