【问题标题】:Convert incremental grid index to (x,y) coordinates将增量网格索引转换为 (x,y) 坐标
【发布时间】:2019-08-02 12:25:37
【问题描述】:

我正在拼命寻找每个i 给我xy 的表达式,以这种方式排序:

x = f(i) ??
y = f(i) ??

我正在使用 GLSL 进行编码,因此我可以访问基本的数学函数(模数、下限、平方根...)以及 if/else 语句。我只能访问 i 变量。

【问题讨论】:

  • @RoryDaulton 两者都是,我编辑了我的问题。编程代码对我来说很好,但最好的答案是内联表达式(可能涉及三元运算符......)。
  • 没有必要让事情变得比应有的更紧凑和更难阅读。我建议创建一个函数并调用它,除非有一些特殊的原因可以避免这种情况。

标签: algorithm math layout formula algebra


【解决方案1】:

我不知道 GLSL,但这里是 Python 3 中的代码。这应该很容易转换为其他语言。 (您可以在此处使用floor 而不是int。)此版本使用Python 为一个输入值i 返回两个输出值xy。在 Python 3 中,代码顶部需要 from math import sqrt 行。

def f(i):
    base = int(sqrt(i))
    remains = i - base * base
    if remains <= base:
        x = remains
        y = base
    else:
        x = base
        y = 2 * base - remains
    return x, y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多