0

我有 4 个 CGPoints 形成一个不规则的图形。如何将该图形旋转 90 度并获得新的 CGPoints?

FWIW,当图形是 CGRect 通过交换 origin.x 和 origin.y 以及宽度和高度时,我能够“伪造”这个。我是否需要做类似的事情(计算点之间的距离/方向)或者是否有可以应用于 CIVector 的 AffineTransform?

欢迎提示和/或指向教程/指南。

可跳过的项目背景:

用户将为文档拍照,应用程序将对它们进行 OCR。由于用户很难获得不倾斜的图像,我允许他们围绕文本主体创建一个 4 点图形,然后应用程序将其倾斜回矩形。传入的相机图像是 CIImages,因此它们的原点已经在左下角,因此必须从 UIView 旋转 4 点图形以匹配...

4

1 回答 1

0

作为记录,我使用 CGAffineTransforms 旋转点:

CGAffineTransform t1 = CGAffineTransformMakeTranslation(0, cropView.frame.size.height);
CGAffineTransform s = CGAffineTransformMakeScale(1, -1);
CGAffineTransform r = CGAffineTransformMakeRotation(90 * M_PI/180);
CGAffineTransform t2 = CGAffineTransformMakeTranslation(0, -cropView.frame.size.height);

CGPoint a = CGPointMake(70, 23);
a = CGPointApplyAffineTransform(a, t1);
a = CGPointApplyAffineTransform(a, s);
a = CGPointApplyAffineTransform(a, r);
a = CGPointApplyAffineTransform(a, t2);

&C。对于其他点。

于 2013-04-17T01:52:50.797 回答