Рисование призмы с помощью CoreAnimation

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

prism

Есть несколько способов сделать это, каждый из них имеет недостатки:

  • Я мог бы просто использовать изображение. Но я разрешаю пользователю увеличивать сцену, и я хотел бы избежать каких-либо артефактов.
  • Использование CAGradientLayer дает красивую радугу. К сожалению, теперь доступно преобразование наклона (или сжатия) для преобразования прямоугольной радуги в треугольник.
  • Простой эффект перекоса слоя можно получить, изменив матричный элемент m34 матрицы преобразования слоя. Но мне не удалось получить треугольную форму (потому что слой должен был бы иметь бесконечный размер).
  • OpenGL. Это сработает, но, возможно, есть более простой способ.

Какие-либо предложения?


person hanno    schedule 03.07.2010    source источник


Ответы (1)


Вы можете получить любой четырехугольник, изменив transform свойство CALayer. В AGGeometryKit есть несколько хороших инструментов для создания CATransform3D для квадроцикла.

person Bartosz Ciechanowski    schedule 05.11.2014