CGAffineTransform с вращением и перемещением, в чем отличие?

Есть:

1.

CGAffineTransform layerTransform = CGAffineTransformMakeRotation(M_PI_2);

layerTransform = CGAffineTransformTranslate(layerTransform, 1080, 0);

2.

CGAffineTransform layerTransform = CGAffineTransformMakeTranslation(1080, 0);

layerTransform = CGAffineTransformRotate(layerTransform, M_PI_2);

Какая между ними разница?

Повернуть до или после перевода, есть ли разница?


person jeffrey    schedule 30.04.2015    source источник
comment
это зависит от того, какую систему координат вы используете; так как в мировой системе координат они не коммутативны, но в локальной системе координат объекта они могут быть коммутативными.   -  person holex    schedule 30.04.2015


Ответы (2)


CGAffineTransformTranslate в основном создает новое аффинное преобразование путем перевода (перемещения) существующего аффинного преобразования указанным методом. Мы должны использовать для этого метод CGAffineTransform CGAffineTransformTranslate ( CGAffineTransform t, CGFloat tx, CGFloat ty ). Здесь tx и ty имеют значения, на которые новое аффинное преобразование должно двигаться в направлении X и Y соответственно.

CGAffineTransformRotate в основном создает новое аффинное преобразование путем поворота существующего преобразования с помощью указанного метода. Мы должны использовать для этого метод CGAffineTransform CGAffineTransformRotate ( CGAffineTransform t, CGFloat angle ). Здесь angle имеет угол поворота для нового аффинного преобразования.

Я надеюсь, вы можете понять, что первый используется для перехода с одной позиции на другую, а второй используется для получения вращения.

person broken_bytes    schedule 30.04.2015

Вам нужно знать, что перевод означает перемещение местоположения. Вращение говорит само за себя. Порядок имеет значение в зависимости от исходной точки и эффекта, которого вы хотите достичь. Я — Core Graphics, это внизу слева в OS X и вверху слева в iOS. В Core Animation объекты легче трансформировать по их центральным точкам.

Однако CG работает с прямоугольниками. Самая распространенная вредная вещь — это попытка повернуть что-то вокруг своего центра в компьютерной графике. Если вы просто повернете трансформацию, то будет казаться, что вещь вращается вокруг своего начала, как стрелка часов. Поэтому, если вы переместите начало координат, а затем повернете, вы можете компенсировать это. Математика непроста, если вы не знаете тригонометр и радианы. Хитрость в том, что вам нужно применить оба преобразования, прежде чем рисовать снова, иначе объект будет прыгать.

person uchuugaka    schedule 30.04.2015