Отображать точки с координатами (x, y, z) в 3D на iPhone? - PullRequest
1 голос
/ 18 апреля 2010

У меня есть 40 точек с координатами (x, y, z) в приложении для iPhone. Пока я просто NSLog их. Но я бы хотел отобразить их в ... 3D!
Как я могу это сделать? Должен ли я использовать openGL ES? Каковы другие возможности (если есть)?
Я никогда не использовал 3D в программировании ... это сложно сделать?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 06 мая 2010

Если вы собираетесь отображать точки в 3D и делать свою собственную математику, это довольно просто, если они все являются точками и вы смотрите прямо на одну из осей. Математика проста, и вы можете использовать что-то вроде этого, чтобы начать:

http://www.cleverpig.com/tutorials/starfield/

Теперь, если вы хотите использовать более реалистичную перспективную проекцию, рисовать линии, 3d-объекты, играть с «камерой» или делать сложные анимации, будет отображаться OpenGL ES.

0 голосов
/ 06 мая 2010

Позвольте мне дать действительно простое описание аппаратной установки, которая поможет вам начать, если вы просто хотите рисовать точки, не изучая никаких новых API.

Предположим, камера с углом обзора 90 градусов. И давайте предположим, что вы хотите нарисовать в квадратное окно ширины и высоты w. Интерпретировать z координату как расстояние «в» экран.

Затем вы строите точку (x,y,z) с координатами (X,Y), заданной

X = w/2+w/2*x/z
Y = w/2+w/2*y/z

Бит w/2+ - это смещение к центру вашего окна. Бит w/2* - это масштаб, чтобы ваше поле обзора в 90 градусов заполнило окно. /z, но это масштаб, который заставляет более отдаленные вещи казаться меньше. Вот и все!

Хотя есть некоторые вещи, на которые стоит обратить внимание. Если z <= 0, то вы не хотите рисовать эту точку, потому что она находится за камерой или, что еще хуже, в плоскости экрана, что приводит к делению на ноль. И вы можете проверить, что X и Y находятся в диапазоне перед рисованием. Если нет, то вы будете пытаться нарисовать точки, которые находятся за пределами вашего поля зрения.

Конечно, OpenGL может сделать многое для вас автоматически, и это позволяет вам изменять камеру, рисовать больше, чем просто точки, вращать точки, а также делать все это очень быстро. Но хорошо сначала изучить принципы.

(Кстати, общепринятым условием является рисование только точек с z<0 вместо z>0. В этом случае вам нужно заменить + на - в приведенном выше коде.)

(Исправлена ​​опечатка. Спасибо, что указали!)

0 голосов
/ 18 апреля 2010

Вы можете сделать свою собственную 3-D математику и выполнить рендеринг на 2-D поверхность, используя API рисования CGContext, или вы можете использовать OpenGL ES, чтобы выполнить преобразования и рендеринг для вас. Оба варианта имеют свои плюсы и минусы, и они оба имеют кривую обучения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...