Хаотичность
14.2.2. Хаотичность
В системах частиц есть своего рода хаотичность. Например, моделируя снегопад мы не хотим, чтобы все снежинки падали абсолютно одинаково. Нам нужно чтобы они падали похожим образом, а не абсолютно одинаково. Чтобы облегчить реализацию хаотичности, необходимую для систем частиц, мы добавляем в файлы d3dUtility.h/cpp две функции.
Первая функция возвращает случайное число с плавающей точкой, находящееся в диапазоне [lowBound, highBound]:
float d3d::GetRandomFloat(float lowBound, float highBound) { if(lowBound >= highBound) // неправильные параметры return lowBound;
// Получаем случайное число в диапазоне [0, 1] float f = (rand() % 10000) * 0.0001f;
// Возвращаем число из диапазона [lowBound, highBound] return (f * (highBound - lowBound)) + lowBound; }
Следующая функция возвращает случайный вектор в параллелепипеде, заданном двумя углами min и max.
void d3d::GetRandomVector( D3DXVECTOR3* out, D3DXVECTOR3* min, D3DXVECTOR3* max) { out->x = GetRandomFloat(min->x, max->x); out->y = GetRandomFloat(min->y, max->y); out->z = GetRandomFloat(min->z, max->z); }
ПРИМЕЧАНИЕ