繁体   English   中英

在网格中查找偏移量

[英]Find Offset in Grid

我对这个模糊的标题感到抱歉,但我不确定如何在不具体的情况下问这个问题。 如果你建议一个更清楚的标题,我会尽快改变它。

无论如何,如果没有首先提供一些背景信息,我认为我不能非常简洁地提出我的问题。 在2D空间中,我正在创建“英亩”,其中包含“瓷砖”。

64块瓷砖

[一英亩64块砖]

为了清楚起见,我们假设在这个特定的例子中,有12英亩,第一行有4英亩,第二行有4英亩,第三行有4英亩。 每英亩有64个瓷砖,八个八个网格。

十二英亩

[十二英亩,每个有64个瓷砖]

我正在生成纹理所需数量的英亩的宽度和高度,乘以每英亩的瓦片数量(在我们的例子中,纹理将是32像素宽[水平行中的英亩数量{4}乘以通过英亩{8}]中的瓦片数量,以及24像素高[垂直列中的英亩数量{3}乘以英亩{8}中的瓦片数量])。 然后用perlin噪声填充纹理,我想用它来为每个瓷砖着色。

培林

[单英亩,64块瓷砖,旁边为它生成的Perlin图像(按比例放大)。 这有一个轻微的随机颜色变化应用于每个瓷砖。]

我想为所有的土地生成一个图像,并在每次创建新的英亩时从中读取,但其中存在问题,以及我的问题的主题。 如何获得偏移,以便每个相邻的英亩继续模式?

我想要的是

[我想要的(为了得到这个,我刚创建了一个更大的瓷砖)]

然而,我目前使用的方法似乎不起作用,并最终创建如下所示的内容。

奇怪的结果http://2catstudios.github.io/images/StackOverflow/150113_Grid_Offset/Perlin_Twelve_Acres_NoSpace.png [奇怪的结果]

以下是我正在使用的代码,用于查找(不正确,我假设)偏移量。 该链接指向Gist,其中粘贴了perlin生成函数和acre / tile生成函数。

int xOffset = ( parentAcreXIndex * desiredWidth );
int yOffset = ( parentAcreYIndex * desiredHeight );

new Color ( 0.000f, 0.502f + ( parentWorld.worldPerlin.GetPixel ( xOffset + ( desiredWidth - tileXIndex ), yOffset + ( desiredHeight - tileYIndex )).grayscale * 0.3f ), 0.000f, 1 );

全班(链接到GitHub的Gist),上面一行是100

我真的不知道还有什么可说的; 试图弄清楚这一点,我的思绪有点“模糊”,所以如果我遗漏了重要的东西,请原谅我。 请告诉我,我将使用所需信息更新我的帖子。

此外,我对这个问题感到抱歉,一定很难理解。 在我发布之后,我将阅读这几次,看看我是否可以改进措辞。

感谢您的时间! 迈克尔

编辑

谢谢你看看这个! 原来问题是我用于可视化的飞机实际上是倒置的。 我将确保将来检查这样的简单事情,对不起给您带来困惑! 我已经离开了这个问题,因为我在这里给了足够的分数来发布图像,当我试图删除它时,这些点被撤销了。 当我获得更多积分时,我会回来删除它。 谢谢!

你似乎在问这个:

如果我有一个像素网格,它被分组为“英亩”(32x32),我如何从给定像素(作为一英亩的行和列)映射到整个像素?

英亩开始于每32个像素,因此对于给定的英亩(acreX,acreY)

acreOriginInTextureX = acreX * 8;
acreOriginInTextureY = acreY * 8;

因此,一英亩内的给定图块(tileX,tileY)将是:

tilePosInTextureX = acreOriginInTextureX + tileX
                  = acreX * 8 + tileX
tilePosInTextureY = acreY * 8 + tileY

真的是这样的:

tilePosInTextureX = acreX * tilesPerAcreX + tileX

......和Y一样

注意:我假设到处都是零索引。 如果没有,你需要从acreX,acreY,tileX,tileY中减去1,而不是从 tilesPerAcreX或Y中减去1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM