如何正确生成抛物线
How can I properly generate a parabola
我正在开发一款原版 JavaScript 游戏,我正在使用一个数组来存储 y 轴上的高度。我的问题是,作为我高度生成的一部分,我想创建一个有山丘的生物群落。这需要我使用抛物线才能正确生成曲线。每个 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 canvas 来描边()坐标值的函数。它目前的行为方式完全没有意义。
a^b
是按位异或;在 Javascript 中不是取幂。您正在寻找 Math.pow(a,b)
.
我正在开发一款原版 JavaScript 游戏,我正在使用一个数组来存储 y 轴上的高度。我的问题是,作为我高度生成的一部分,我想创建一个有山丘的生物群落。这需要我使用抛物线才能正确生成曲线。每个 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 canvas 来描边()坐标值的函数。它目前的行为方式完全没有意义。
a^b
是按位异或;在 Javascript 中不是取幂。您正在寻找 Math.pow(a,b)
.