所以我有一组随机生成的瓷砖包裹在一个圆圈中,我不确定如何围绕圆圈滚动它。基本上它是一个二维的侧视行星,需要以可控的速度包裹和移动,以给出行星旋转的幻觉。我将在下面发布我当前的渲染代码,以便您可以了解我正在使用的内容,但我不确定该如何处理x和y以使其滚动。这是行星的样子:https://imgur.com/Ytdz2mG
for (int x = 0; x < planet1.length; x++)
{
for (int y = 0; y < planet1[0].length; y++)
{
if (planet1[x][y] == 1 || planet1[x][y] == 2)
{
g.drawImage(water, x * 32, y * 32);
}
else if (planet1[x][y] == 3)
{
g.drawImage(desert, x * 32, y * 32);
}
else if (planet1[x][y] == 4)
{
g.drawImage(plains, x * 32, y * 32);
}
else if (planet1[x][y] == 5)
{
g.drawImage(grassland, x * 32, y * 32);
}
else if (planet1[x][y] == 6)
{
g.drawImage(forest, x * 32, y * 32);
}
else if (planet1[x][y] == 7)
{
g.drawImage(hills, x * 32, y * 32);
}
else if (planet1[x][y] == 8)
{
g.drawImage(mountain, x * 32, y * 32);
}
else if (planet1[x][y] == 9)
{
g.drawImage(mountain, x * 32, y * 32);
}
else if (planet1[x][y] == -1)
{
}
}
}
答案 0 :(得分:0)
从它的外观来看,你不是画一个球体,而是一个剪裁成圆形的重复矩形。
如果你想让它实际上显示为旋转,你需要进行球体的正投影。
在这种情况下,你需要将你的瓷砖数据存储在θ,φ上,然后创建使用φ= acos(长度(x,y)/半径)θ= atan(y / x)的屏幕上xy到角度的恒定映射
然后使用[θ+ roll,φ+ pitch]从地形数据中采样(不完全是滚动和俯仰,但足够接近)