Войти
ПрограммированиеФорумГрафика

Как свернуть простое изображение и разделить на 6 квадратов? (2 стр)

Страницы: 1 2 3 Следующая »
#15
13:45, 6 ноя 2015

отчасти теперь понимаю почему большинство людей пользуются сторонними средствами.... 1 | Как свернуть простое изображение и разделить на 6 квадратов?
потому что чего то не получается ничего=(

#16
13:52, 6 ноя 2015

осталось отцентрировать и масштаб задать правильно, у тебя получилась нижняя часть (хотя при z=0.5 должна быть верхняя)
вполне возможно что я тут накосячил:
int realY=(atan2(sqrt(x*x+y*y),z)/M_PI+0.5)*sizeH;
правильно так:
int realY=(atan2(sqrt(x*x+y*y),z)/M_PI)*sizeH;
или так:
int realY=(atan2(sqrt(x*x+y*y),z)/M_PI+1.0)*sizeH;

точно не скажу писал на бум.

я использовал у себя немного другую координатную ориентацию, если Y верх то:
int realX=(atan2(x,z)*0.5/M_PI+0.5)*sizeW;
int realY=(atan2(sqrt(x*x+z*z),y)/M_PI)*sizeH;

#17
14:13, 6 ноя 2015

да, вот так заработало int realY=(atan2(sqrt(x*x+y*y),z)/M_PI)*sizeH;
11 | Как свернуть простое изображение и разделить на 6 квадратов?

если убрать из вывода домножение, получается как раз квадрат glVertex3f(x,y,z); мне бы так писать наобум!....
откуда взялись эти +-*0.5, которые причем потом еще и заработали?

#18
14:23, 6 ноя 2015

slevin
> мне бы так писать наобум!....
у меня под рукой только мобилка.

sin(pi*0.5)=1.0, cos(pi*0.5)=0.0
sin(0)=0.0, cos(0)=1.0
sin(-pi*0.5)=-1, cos(-pi*0.5)=0.0
соответственно:
atan2(1.0.0.0)=pi*0.5
atan2(0.0.1.0)=0
atan2(-1.0.0.0)=-pi*0.5

скорее всего я перепутал atan2(sqrt(x*x+y*y),z) с atan2(z,sqrt(x*x+y*y))

то есть для atan2(sqrt(x*x+y*y),z)

atan2(0.0.1.0)=0
atan2(1.0.0.0)=pi*0.5
atan2(0.0.-1.0)=pi

slevin
> да, вот так заработало
и тем не менее по прежнему не совсем верно... хотя возможно что у тебя просто другой угол поворота и знак по X (долгота).



#19
15:19, 6 ноя 2015

Срасибо большое. Пойду сейчас опять в книги по геометрии залезу, до конца не доходит насчет этих вездесущих 0.5 и деления на Пи.

#20
16:22, 6 ноя 2015

нет ни чего проще
[0.0 : x]  ->  [0.0 : 1.0] * x  ->  ([-0.5 : 0.5] + 0.5) * x  ->  ([-0.5 * PI : 0.5 * PI] /PI + 0.5) * x  ->  ([-PI : PI] *0.5/PI + 0.5) * x

#21
18:14, 7 ноя 2015

Есть же готовые тулзы типа http://wiki.alioth.net/index.php/Planettool

#22
20:30, 7 ноя 2015

о, странички на которые ссылается эта ссылка, я не натыкался, спасибо, почитаю=) да собственно есть и готовые решение как я уже упоминал у SpaceEngine проекта. Иногда очень охота самому вникнуть в суть вещей=)

#23
0:49, 9 ноя 2015

что потом со швами делать будете ?

#24
9:16, 9 ноя 2015

Есть более удобный вариант создания шара через икосаидер - это из серии триангуляций и oct16.
И не надо забывать что прямоугольную проекцию Меркатора на сферу натягивать as-is не надо.

#25
9:38, 9 ноя 2015

тря ляля ляляля тра ляля ляляля тра ляля ляляля 6 квадов..... яролаш продолжается

#26
18:15, 11 ноя 2015

Я кажется несколько лет назад сталкивался с подобной проблемой, решить не удалось из-за швов на конечном результате(на шаре который натягивают порезанную текстуру)
Резал какой то готовой прогой от AMD

#27
20:00, 11 ноя 2015

нет проблем

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#28
21:48, 11 ноя 2015

foxes
> нет проблем
Там все сложнее сделано, а тут человеку нужен просто шарик с текстурой насколько я понял.

#29
22:18, 11 ноя 2015

Нарисовать сферу, в вершинах закодировать сферические координаты, по этим координатам прочитать текстуру...

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.