Как я могу правильно генерировать параболу - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю над ванильной 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 для обводки () значений координат. То, как оно ведет себя в настоящее время, абсолютно бессмысленно.

1 Ответ

2 голосов
/ 08 апреля 2019

a^b - битовое XOR; не возведения в степень в Javascript. Вы ищете Math.pow(a,b).

...