Я попытался получить функцию шума в первом, как работа, работая с использованием таких видео, как это видео 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
PERLIN NOWE FUCANE ⇐ C++
Программы на C++. Форум разработчиков
1755546519
Anonymous
Я попытался получить функцию шума в первом, как работа, работая с использованием таких видео, как это видео https://m.youtube.com/watch?v=9b89kwhvtn4&pp=ygumugvybgluig5vaxnl0gcjcf8ao7vqn5td 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 ++.
Подробнее здесь: [url]https://stackoverflow.com/questions/79739184/perlin-noise-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия