括号位置改变 OpenSimplex 产生噪声的结果

Parenthesis Position Changes Result of Noise Generation With OpenSimplex

这并不是真正的问题,因为我试图弄清楚为什么我的代码以某种方式工作。基本上,我正在尝试使用 OpenSimplex 制作一个二维随机网格。某些值范围被分配给某些单元格以形成 'biomes' 和小块资源。

最初,当我尝试使用随机生成来制作资源块时,我会将资源生成在一个圆圈的轮廓中而不是一个块中。

这是一张图片(黑色是有问题的资源):

所以,我决定尝试使用数学函数 tan,看看是否可行。它本身不起作用,但我犯了一个错误,将右括号放在了错误的位置。

这是结果的图片:

if math.tan(grid[row][column]['type']) <= -.8 and math.tan(grid[row][column]['type'] >= -.85):
    color = black

'grid' 是所有单元格的列表,'row' 是单元格所在的行,'column' 是单元格所在的列。这是在一个for 循环遍历每个单元格并确定其值 ['type'](由 OpenSimplex 分配)并为其分配颜色。

我的问题是,为什么当括号像上面那样放错位置时(math.tan 括号扩展到运算符)代码会创建资源块,但是当括号像这样放置时却不能正常工作下面?

if math.tan(grid[row][column]['type']) <= -.8 and math.tan(grid[row][column]['type']) >= -.85:
    color = black

我尝试更改 if 语句第一个条件的括号位置,但没有任何影响。

当你写:

math.tan(grid[row][column]['type'] >= -.85)

意思是计算grid[row][column]['type'] >= -.85的值,然后计算它的正切。该表达式的值是 TrueFalse,但 math.tan() 要求其参数是一个数字。 True 等同于 1False 等同于 0,因此它计算 math.tan(1)math.tan(0) 取决于类型与-.85.

顺便说一句,Python 允许你链接条件,所以如果你想测试它是否在两个数字之间,你不需要写两次表达式 math.tan(grid[row][column]['type'])

if -.85 <= math.tan(grid[row][column]['type']) <= -.8: