PERLIN NOWE FUCANEC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 PERLIN NOWE FUCANE

Сообщение Anonymous »

Я попытался получить функцию шума в первом, как работа, работая с использованием таких видео, как это видео https://m.youtube.com/watch?v=9b89kwhvt ... 8ao7vqn5td br/> Это c++ code i o opt o o o o o to o o o o come o o o o come o o o come o o come o o come o o o come o o come o o o come o o come o o come o o complo HeightMap < /p>
double PerlinLikenoise(double PCMX,double PCMZ)

{
//Use only the fractional part of the float for this
//Use absolute value for negative position.
PCMX = std::abs(PCMX);
PCMZ = std::abs(PCMZ);
int CalculateMagnitudeXint = PCMX;
int CalculateMagnitudeZint = PCMZ;
//Then subtract the whole part of the value
double CalculateMagnitudeX = CalculateMagnitudeXint - PCMX;
double CalculateMagnitudeZ = CalculateMagnitudeZint - PCMZ;

XOneMagnitude = -CalculateMagnitudeX;
ZOneMagnitude = -CalculateMagnitudeZ;
XTwoMagnitude = 1 - CalculateMagnitudeX;
ZTwoMagnitude = -CalculateMagnitudeZ;
XThreeMagnitude = -CalculateMagnitudeX;
ZThreeMagnitude = 1 - CalculateMagnitudeZ;
XFourMagnitude = 1 - CalculateMagnitudeX;
ZFourMagnitude = 1 - CalculateMagnitudeZ;

dotproduct[1] = (XOneMagnitude * cos(XZHash(CalculateMagnitudeXint, CalculateMagnitudeZint, HashSeed) * ( PI / 180))) + (ZOneMagnitude * sin(XZHash(CalculateMagnitudeXint, CalculateMagnitudeZint, HashSeed) * ( PI / 180)));
dotproduct[2] = (XTwoMagnitude * cos(XZHash(CalculateMagnitudeXint + 1, CalculateMagnitudeZint, HashSeed) * ( PI / 180))) + (ZTwoMagnitude * sin(XZHash(CalculateMagnitudeXint + 1, CalculateMagnitudeZint, HashSeed) * ( PI / 180)));
dotproduct[3] = (XThreeMagnitude * cos(XZHash(CalculateMagnitudeXint, CalculateMagnitudeZint + 1, HashSeed) * ( PI / 180))) + (ZThreeMagnitude * sin(XZHash(CalculateMagnitudeXint, CalculateMagnitudeZint + 1, HashSeed) * ( PI / 180)));
dotproduct[4] = (XFourMagnitude * cos(XZHash(CalculateMagnitudeXint + 1, CalculateMagnitudeZint + 1, HashSeed) * ( PI / 180))) + (ZFourMagnitude * sin(XZHash(CalculateMagnitudeXint + 1, CalculateMagnitudeZint + 1, HashSeed) * ( PI / 180)));

//Combine 1 and 2
double CombinedOne = ((1-CalculateMagnitudeX) * dotproduct[2]) + (CalculateMagnitudeX * dotproduct[1]);

//Combine 2 and 3
double CombinedTwo = ((1-CalculateMagnitudeX) * dotproduct[4]) + (CalculateMagnitudeX * dotproduct[3]);

//Combine the 2 results
double Result = ((1-CalculateMagnitudeZ) * CombinedTwo) + (CalculateMagnitudeZ * CombinedOne);

return(-Result);
}

double GenerateHeightmapPos(double I,double J)

{
return(PerlinLikenoise(I,J) * .5 * 10);

}
< /code>
Вы можете заменить хэш на угол или ваши собственные функции случайного угла, используя случайный набор. Существует не хорошего перехода ничего примерно для половины куски около 0,0. Функции, очевидно, должны принимать значения между целыми числами, чтобы вернуть градиент, такие как области черного или белого или высота для местности. Он генерирует высоту местности, используя местоположение x и y в качестве входного. Мне нужен генератор шума таким образом для моего проекта в Dev C ++.

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»