如何将二维坐标列表缩放到所需大小

How to scale a list of 2D coordinates to a desired size

我有一个绘制形状的二维坐标列表,例如[{12, 14}, {22, 44}, {59, 33}, ...]

我希望能够采用这种形状,并将其置于任意大小(假设为 400x400)的 canvas 中心,并使其尽可能多 space。

我已经想出如何规范化列表以使其在 0-1 范围内,但在尝试将其扩展到所需大小时最终被困在那里。

如有任何帮助,我们将不胜感激!

查找 X 和 Y 坐标的最小值和最大值 xmin, xmax, ymin, ymax

计算点云宽高和中间坐标

cw = xmax - xmin
ch = ymax - ymin
mx = (xmax + xmin) / 2
my = (ymax + ymin) / 2

现在求系数

if cw * canvas.height >= ch * canvas.width
   coeff = canvas.width / cw   
else
   coeff = canvas.height / ch  

现在得到canvas中心

centerx = canvas.width / 2 
centery = canvas.height / 2 

并对每个点应用下一个变换(x,y):

screenx = centerx + coeff * (x - mx)
screeny = centery + coeff * (y - my)