Я работаю над ванильной JavaScript-игрой и использую массив для хранения высот на оси у. Моя проблема в том, что как часть моего роста я хочу создать биом с холмами. Это требует, чтобы я использовал параболы, чтобы я мог правильно генерировать кривые. Каждая единица X зафиксирована как график, но координаты y могут быть изменены.
Насколько мне известно, я выписал это правильно. Я использовал множество ссылок, прежде чем приехать сюда.
function constructMountains(spot, last, gradient) {
var randomHeight = (Math.random() * 1.5)+0.3;//creats a random intensity for the parabola
var lengthOfHill = Math.floor(Math.random() * 35)+4;// creates a random width for parabola
var parabolaVertexY = (-randomHeight*((q-lengthOfHill/2)-(lengthOfHill/2))^2)+last;//gets max height of curve
for (var q = 0; q <= lengthOfHill; q++) {
test[q+spot] = (-randomHeight*((q-lengthOfHill/2)-(lengthOfHill/2))^2)+parabolaVertexY;//vertex is half way through so half the length is the iterator's offset
}
return spot+lengthOfHill;//returns place in the main loop
}
var biome = 1
for (x=0; x<blockAmount + 101 + 1000; x++) {
//set up this way for testing
if (x == 0) {
x = constructMountains(x, 45, toggleGradient);//toggleGradient will be used to flip curve, not implemented yet
}
}
Это должно создать различные размеры повторяющихся парабол. Данные визуально передаются, потому что у меня есть функция, которая использует холст HTML5 для обводки () значений координат. То, как оно ведет себя в настоящее время, абсолютно бессмысленно.