我有4个CGPoints,形成一个不规则的数字。如何将该图旋转90度并获得新的CGPoints?
FWIW,我通过交换origin.x和origin.y以及宽度和高度,在数字是CGRect时能够“伪造”这个。我是否需要做类似的事情(计算点之间的距离/方向)或者我可以申请CIVector的AffineTransform吗?
欢迎使用教程/指南的提示和/或指示。
可跳过的项目背景:
用户将拍摄文件,应用程序将对其进行OCR。由于用户在获取非倾斜图像时遇到很多麻烦,我允许他们在文本主体周围创建一个4点图形,并且应用程序将其反转为矩形。进入的摄像机图像是CIImages,因此它们的原点已经在左下方,所以4点数字必须从UIView旋转才能匹配...
答案 0 :(得分: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。对于其他点。