繁体   English   中英

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

[英]Scale Coordinates while Maintaining the Aspect ratio in iOS

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

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

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

2.通过除以x/w (如果x<y )或y/h (如果y<x )得到比例;

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

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

如果您需要保持纵横比或纵横填充所需的比例。 无论哪种方式,您都需要为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分量乘以比例因子。

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

您可能必须在曲线的坐标上添加偏移量才能将其正确放置在框中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM