Вращающиеся CGPoints; CIVector CGAffineTransform?
У меня есть 4 CGPoints, которые образуют неправильную фигуру. Как я могу повернуть эту фигуру на 90 градусов и получить новые CGPoints?
Кстати, мне удалось "подделать" это, когда фигура представляет собой CGRect, поменяв местами origin.x и origin.y, а также width и height. Нужно ли делать что-то похожее (вычисление расстояния / направления между точками) или есть AffineTransform, который я могу применить к CIVector?
Подсказки и / или указатели на учебники / руководства приветствуются.
Пропускаемый проект:
Пользователи будут фотографировать документы, а приложение распознает их. Поскольку у пользователей возникают большие проблемы с получением не перекосованного изображения, я разрешаю им создать четырехточечную фигуру вокруг тела текста, а приложение наклонит его обратно к прямоугольнику. Изображения, поступающие с камеры, представляют собой изображения CIImage, поэтому их происхождение уже находится в левом нижнем углу, поэтому 4-точечную фигуру необходимо повернуть из UIView, чтобы соответствовать...
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);
& Гр. для других пунктов.