Создать пузырьковый эффект на сетке OpenGL-ES - PullRequest
1 голос
/ 05 июня 2010

Я создал сетку с 40 x 40 vertex3D (маленький, но полезный)

Я могу выбрать одну вершину из этой сетки, просто вызвав функцию с массивом позиции [X] [Y], и, следовательно, также с соседями. Как я могу поднять значение Z соседней вершины, чтобы они были похожи на пузырь или сферу вроде штуки?

Моя первая задача была использовать:

Neighbor_vertex.Z = sin(PI/4 *  1 - ( 1/ distance_between_Neighbor_and_Pivot) ) * desired_Max_Height

Но все, что я получил, это что-то вроде волны .... и я хотел бы иметь форму пузыря или сферы.

THX парни и парни

Ответы [ 2 ]

1 голос
/ 07 июня 2010

Хм, ребята, если вы хотите сделать сферическую форму из пузыря, вам нужна обратная (дуговая) функция ...

Итак, формула должна быть похожа на Neighbor_vertex.Z = sin (arccos (distance_between_Neighbor_and_Pivot / Buble_Radius)) * Buble_Radius.

Изображение ниже объясняет формулу.

Эскиз http://img175.imageshack.us/img175/6052/34440153.png

1 голос
/ 05 июня 2010

Ваша формула выглядит не совсем правильно.Попробуйте это:

Neighbor_vertex.Z = cos (PI / 2 * distance_between_Neighbor_and_Pivot) * wanted_Max_Height;

Возможно, вы захотите изменить значение Z, только если расстояние также меньше 1,0.

Используете ли вы приложение Grapher для проверки своих формул?Я рекомендую это.Он поставляется с Mac.

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