Odbicie względem prostej nie przechodzącej przez punkt (0,0)
Użyty został skrypt transform.js.
Przypadek 1
Prosta jest równoległa do osi Y i nie może być przedstawiona równaniem y=mx+b
Listing
var cv = document.getElementById("canvas"); var ctx = cv.getContext("2d"); ctx.beginPath(); ctx.moveTo(200,10); ctx.lineTo(200,240); ctx.strokeStyle = "black"; ctx.stroke(); var leftX = 220; var topY = 20; var width = 100; var height = 75; var cornerRadius = 15; drawRectangle(ctx);
Wykonujemy kolejne kroki
dokonujemy translacji o odległość prostej od osi Y
Listing
var cv = document.getElementById("canvas1"); var ctx = cv.getContext("2d"); ctx.save(); ctx.beginPath(); ctx.moveTo(200,10); ctx.lineTo(200,240); ctx.strokeStyle = "black"; ctx.stroke(); ctx.restore(); var leftX = 220; var topY = 20; var width = 100; var height = 75; var cornerRadius = 15; ctx.translate(-200,0); drawRectangle(ctx);
wykonujemy odbicie figury względem osi Y
Figury chwilowo nie widzimy
Listing
var cv = document.getElementById("canvas2"); var ctx = cv.getContext("2d"); ctx.save(); ctx.beginPath(); ctx.moveTo(200,10); ctx.lineTo(200,240); ctx.strokeStyle = "black"; ctx.stroke(); ctx.restore() var leftX = 220; var topY = 20; var width = 100; var height = 75; var cornerRadius = 15; ctx.scale(-1,1); ctx.translate(-200,0); drawRectangle(ctx);
wykonujemy translację powrotną
var cv = document.getElementById("canvas3"); var ctx = cv.getContext("2d"); ctx.save(); ctx.beginPath(); ctx.moveTo(200,10); ctx.lineTo(200,240); ctx.strokeStyle = "black"; ctx.stroke(); ctx.restore(); var leftX = 220; var topY = 20; var width = 100; var height = 75; var cornerRadius = 15; ctx.translate(200,0); ctx.scale(-1,1); ctx.translate(-200,0); drawRectangle(ctx);