开发者

Scaling points on a html canvas

开发者 https://www.devze.com 2023-03-23 22:01 出处:网络
is there a method for scale a set of points drawed in a m x n Canvas and then, redraw a equivalent set of points in 开发者_如何学JAVAa p x q canvas, where p < m and q < n? I know that the method

is there a method for scale a set of points drawed in a m x n Canvas and then, redraw a equivalent set of points in 开发者_如何学JAVAa p x q canvas, where p < m and q < n? I know that the method of scaling a coordinate should is a option, but is there any other method for do this?

Thanks in advance


Isn't this as simple as determining the scale factor(s) and multiplying each point accordingly? Assuming that the two canvases share the height/width ratio, the scale factor is p/m, and you can multiply each point's coordinates to map them to the new canvas.

If the ratios aren't the same, you can either use the smaller factor of p/m or q/n to maintain the proportions of the original points to each other, or use p/m to scale the x-axis and q/n to scale the y-axis.

E.g. (assuming map is supported or you've created the equivalent):

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
                       }; 
                   });
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号