Разве это не так просто, как определить масштабный коэффициент (ы) и соответственно умножить каждую точку? Предполагая, что эти два холста имеют общее соотношение высоты и ширины, масштабный коэффициент равен 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
};
});