在iOS中维持宽高比时缩放坐标

时间:2013-01-08 16:26:06

标签: ios math drawing normalization

我有一个2D坐标数组,用于在框中绘制曲线(w,h)。现在我想将坐标缩放到一个方框(x,y),其中x或y或两者都小于w和h。特技部分是我必须保持纵横比。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

如果您需要保持方位适合或纵横填充所需的比例。无论哪种方式,您都需要为x和y变换找到一个比例因子。

首先计算X和Y的各个骶骨因子

(w1, h1) -> (w2, h2)  (assuming all floats)

float xScaleFactor = w2 / w1;
float yScaleFactor = h2 / h1;

现在,因为你要缩小它,要么采用最小比例因子进行宽高比拟合,要么采用最大比例因子进行宽高比填充。

float scaleFactor = MIN(xScaleFactor, yScaleFactor); // Assuming aspect fit

现在简单地将每个点的x和y分量乘以比例因子。

答案 1 :(得分:2)

我不确定我的问题是否正确,但如果我这样做,那应该很简单:

1.检查您的哪一方(xy)的尺寸较小;

2.通过划分x/w(如果x<y)或y/h(如果y<x)获得比例;

3.一旦您知道比率,就会按比例缩放您的路径。

你做最后一步的方式,取决于你如何保持/绘制阵列。如果它只是一个简单的点缓冲区,您可以使用matrix scaling。此外,虽然它超出了问题的范围,但如果您需要非常快速地完成(路径有很多分数),请查看Apple的Accelerate framework矩阵/向量乘法。

答案 2 :(得分:0)

获取两个x和y坐标之间的差异。确定哪个百分比差异较大,然后将绘制曲线时使用的坐标乘以该百分比。结果将是适合较小框的大小的曲线。

您可能需要在曲线的坐标上添加偏移量,以便将其正确放置在框中。

根据您的需要,最好是寻找绘图API,而不是手动执行此操作,因为您可能会获得一些免费(或便宜)的功能,例如让用户能够缩放比例等。< / p>