【问题标题】:Graphics with discrete modeling: faster?具有离散建模的图形:更快?
【发布时间】:2014-11-20 15:19:19
【问题描述】:

我想知道用离散数据集编码的二维图形。对我来说,似乎由于计算机是在离散的集合中运行的,所以对图形做同样的事情可能更有意义。

例如,与其让一条线由两个向量表示,并让计算机整理出像素配置,然后必须用代数方式确定一条线上的点,为什么不以离散的方式表示一条线,例如具有 x 和 y 坐标和有限长度的 3d 数组?

难道不是更有意义吗?初始化所有这些数据以使内存不会浪费在计算事物上而不是仅仅使用简单的离散操作来引用数据位置,这不会提高性能吗?所以对于一条线,而不是在 y = 4 时找到 x,为什么不简单地做 line[3] 呢?

我的问题是:以这种方式处理数据会更快吗?如果是,那么优化此类计算的最佳方法是什么?

【问题讨论】:

  • 通常,聪明的程序员会选择适合他们需要做的处理的数据表示。
  • 如果我想要 line[3.5] 怎么办?我们需要扩展我们的数组以覆盖半步。现在如果我想要 line[3.25] 怎么办?重复。
  • 我假设每个单位代表 1 个像素。因此,两者之间没有。
  • 还有奥利弗,我说的是数据建模的方式。例如,笛卡尔平面实际上并不存在于内存中,因此我建议将这些公式应用于谨慎的表示。
  • 算法通常需要像素之间的值...在取出它们之前我会非常确定您的应用程序。

标签: c memory assembly discrete-mathematics data-manipulation


【解决方案1】:

几乎只要涉及物理和线条(游戏、构造、可视化……),就会弹出线条是否与某物相交的问题。使用离散线方法,很可能会出现两条线相交的情况,而您却没有意识到,这仅仅是因为它们不共享一个像素。举个例子:

x    x
 x  x 
  xx
  xx
 x  x
x    x

当您进行数学运算时,您可以确定在几乎所有情况下都会得到合理的答案,如果您将视野限制在像素范围内,那么您注定会犯错误。

此外,方程ax + by = c 描述了任何二维线直到无穷大,而任何离散表示都需要大量麻烦才能实现相同的一般性。

第三,如果你在数学上相交两条二维线,你会在很短的固定时间内得到答案。但是,您的方法需要搜索,因此您的算法比数学方法更复杂。

离散方法根本没有回报。无论是在程序复杂性方面,还是在速度方面。

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多