forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Генерация террайнов (http://forum.boolean.name/showthread.php?t=15011)

dsd 12.03.2015 23:42

Ответ: Генерация террайнов
 
Цитата:

Сообщение от Igor (Сообщение 294054)
Мне кажется, куча обращений к массиву не имеет смысла.
Я бы предложил просто построить какую-нибудь хитрую функцию от трёх переменных.
например, при инициализации задавать параметры a и с, и пусть функция rand возвращает (a + c * (x ^ (x >> 5) ^ (y<<3-1) ^ (z >> 3 + z))) & 0xFF.
Если хочется, можно запихать в массив данные с нужным распределением (например, нормальным), и один раз читать оттуда по "рандомной" позиции.

Ну тут не только генератор белого шума, тут еще и градиентный, белый шум вот этой штукой отдается:
PHP код:

//выдает по координате значение из фэйкового бесконечного массива 
    
private static int rand(int xint yint z){ 
        
int x0 =(256+(x%256))%256
        
int y0 =(256+(y%256))%256
        
int z0 =(256+(z%256))%256;     
        return 
randDatax0 randDatay0 randDataz0 ] ] ];      
    } 

в х0,y0,z0 я как умею обрезаю любое число чтобы оно в 0...255 попало, защита от выхода за границы массива.
а три обращения к массиву на точку не такая уж и куча. Но я хз, я в функции не умею.

Nex 22.03.2015 19:02

Ответ: Генерация террайнов
 
Подскажите как делать карту высот своего города? Где гугл и прочие сервисы берут данные о высотах? Ну и как это потом запилить в jpg/png файл?


Часовой пояс GMT +4, время: 06:54.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot