Cocoa 如何计算两个CG仿射变换比例变换之间的中点?
这可能更像是一个数学问题,而不是一个编程问题,但在本例中,它位于Cocoa 如何计算两个CG仿射变换比例变换之间的中点?,cocoa,math,uikit,core-graphics,appkit,Cocoa,Math,Uikit,Core Graphics,Appkit,这可能更像是一个数学问题,而不是一个编程问题,但在本例中,它位于CGAffineTransform的上下文中。 如果有两个变换,每个变换表示一个缩放变换,那么如何计算这两个变换之间的中点,从而直观地表示用户的“一半” 例如: CGAffineTransform minimumScale = CGAffineTransformMakeScale(1, 1); CGAffineTransform maximumScale = CGAffineTransformMakeScale(10, 10);
CGAffineTransform的上下文中。
如果有两个变换,每个变换表示一个缩放变换,那么如何计算这两个变换之间的中点,从而直观地表示用户的“一半”
例如:
CGAffineTransform minimumScale = CGAffineTransformMakeScale(1, 1);
CGAffineTransform maximumScale = CGAffineTransformMakeScale(10, 10);
创建比例因子为5的变换不会产生我想要的结果,因为从用户的角度来看,从1->5
表示“5倍放大”,但从5->10
仅表示“2倍放大”
在这个简单的例子中,比例因子大约为3.33
会产生我想要的结果,因为它会像这样变换帧:
W:100 x H:100 -> 333 x 333 // A 3x magnification from the user's perspective
W:333 x H:333 -> 999 x 999 // Also a 3x magnification from the user's perspective
然而,给定任意两个最小和最大标度值(其中最小值可能小于1.0,e.x.:
0.2->3.9
),我无法计算该值。您可以尝试标度因子的几何平均值(即sqrt(scale1*scale2),因此在您的案例中,sqrt(10))而不是算术平均值。几何平均数的比值是恒定的,即gmean/small=greater/gmean,而不是与算术平均数的差值:amean-small=greater-amean.@dmuir这是一个不错的建议,结果目前还可以接受。非常感谢。