Przekrzywienie w miejscu
Użyty został skrypt transform.js.
Mamy figurę, którą chcemy przekrzywić w osi X o współczynnik 0.4
Listing
var cv = document.getElementById("canvas1"); var ctx = cv.getContext("2d"); var leftX = 220; var topY = 40; var width = 75; var height = 50; var cornerRadius = 15; drawRectangle(ctx);
Jeżeli chcemy saklować figurę względem środka ciężkości,
należy:
wykonać translację środka ciężkości do punktu
(0,0)
Listing
var cv = document.getElementById("canvas2"); var ctx = cv.getContext("2d"); var leftX = 220; var topY = 40; var width = 75; var height = 50; var cornerRadius = 15; ctx.save(); ctx.translate(-(leftX+width/2), -(topY+height/2)); drawRectangle(ctx);
wykonać żądane przekrzywienie
Listing
var cv = document.getElementById("canvas3"); var ctx = cv.getContext("2d"); var leftX = 220; var topY = 40; var width = 75; var height = 50; var cornerRadius = 15; ctx.transform(1,0,0.4,1,0,0); ctx.translate(-(leftX+width/2), -(topY+height/2)); drawRectangle(ctx);
przesunąć figurę z powrotem (translacja zwrotna)
Listing
var cv = document.getElementById("canvas4"); var ctx = cv.getContext("2d"); var leftX = 220; var topY = 40; var width = 75; var height = 50; var cornerRadius = 15; ctx.translate(leftX+width/2, topY+height/2); ctx.transform(1,0,0.4,1,0,0); ctx.translate(-(leftX+width/2), -(topY+height/2)); drawRectangle(ctx);