Масштабирование точек на HTML-холсте - PullRequest
0 голосов
/ 28 июля 2011

существует ли метод для масштабирования набора точек, нарисованных в amxn Canvas, а затем перерисовать эквивалентный набор точек в apxq canvas, где p

Заранее спасибо

1 Ответ

1 голос
/ 28 июля 2011

Разве это не так просто, как определить масштабный коэффициент (ы) и соответственно умножить каждую точку? Предполагая, что эти два холста имеют общее соотношение высоты и ширины, масштабный коэффициент равен p/m, и вы можете умножить координаты каждой точки, чтобы отобразить их на новом холсте.

Если соотношения не совпадают, вы можете использовать меньший коэффициент p/m или q/n, чтобы сохранить пропорции исходных точек друг к другу, или использовать p/m, чтобы масштабировать ось X и q/n для масштабирования по оси Y.

например. (предполагается, что map поддерживается или вы создали эквивалент):

var points = [{x:1,y:1}, {x:2,y:5}, {x:3,y:1}];
var scaleFactor = canvas2width/canvas1width;
var scaledPoints = points.map(function(p) { 
                       return { 
                           x:p.x*scaleFactor, 
                           y:p.y*scaleFactor
                       }; 
                   });
...