【问题标题】:Rotating CGPoints; CIVector CGAffineTransform?旋转CGPoints; CIVector CGAffineTransform?
【发布时间】:2013-04-11 21:29:39
【问题描述】:

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

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

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

可跳过的项目背景:

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

【问题讨论】:

    标签: ios6 cgpoint ciimage


    【解决方案1】:

    为了记录,我使用 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。对于其他点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多