我有一个2D坐标数组,用于在框中绘制曲线(w,h)。现在我想将坐标缩放到一个方框(x,y),其中x或y或两者都小于w和h。特技部分是我必须保持纵横比。非常感谢任何帮助。
答案 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.检查您的哪一方(x
或y
)的尺寸较小;
2.通过划分x/w
(如果x<y
)或y/h
(如果y<x
)获得比例;
3.一旦您知道比率,就会按比例缩放您的路径。
你做最后一步的方式,取决于你如何保持/绘制阵列。如果它只是一个简单的点缓冲区,您可以使用matrix scaling。此外,虽然它超出了问题的范围,但如果您需要非常快速地完成(路径有很多分数),请查看Apple的Accelerate framework矩阵/向量乘法。
答案 2 :(得分:0)
获取两个x和y坐标之间的差异。确定哪个百分比差异较大,然后将绘制曲线时使用的坐标乘以该百分比。结果将是适合较小框的大小的曲线。
您可能需要在曲线的坐标上添加偏移量,以便将其正确放置在框中。
根据您的需要,最好是寻找绘图API,而不是手动执行此操作,因为您可能会获得一些免费(或便宜)的功能,例如让用户能够缩放比例等。< / p>