陡峭的变化,怎么办

时间:2013-04-25 16:50:26

标签: math xna

你将如何改变陡度以及循环进展。基本上我已经制作了一个带有顶点的地形,形成一个山谷。这些顶点的数据创建在这里:

    // Divides it to a sensible height
    const int DIVISOR_NUMBER = 40;

    for (int x = 0; x < TerrainWidth; x++)
    {
        float height = Math.Abs(((float)x - ((float)TerrainWidth / 2))/ (float)DIVISOR_NUMBER);

        for (int y = 0; y < TerrainHeight; y++)
        {
            float copyOfHeight = height;
            float randomValue = random.Next(0, 3);
            copyOfHeight += randomValue / 10;
            HeightData[x, y] = copyOfHeight;
        }
    }

这很好用。但是我现在想要在第一个循环的开始和结束时使山谷的两侧更陡峭,并且山谷变得更接近它所获得的中心。我有一点精神障碍,想不出一个好方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用平方(也称为二次)曲线。尝试:

float offset = (float)x - (float)TerrainWidth/2;
float height = offset*offset*SCALE_FACTOR;

如果你仍然想在山谷的底部有一个“折痕”,你可以让你的身高加权:

float height = Math.Abs(offset) * ABS_FACTOR + offset*offset * QUADRATIC_FACTOR;