c - 具有离散建模的图形 : faster?

标签 c memory assembly discrete-mathematics data-manipulation

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

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

这不是更有意义吗?将所有这些数据初始化,这样内存就不会浪费在计算上,而不是仅仅使用简单的离散操作来引用数据位置,这不会提高性能吗?所以在直线的情况下,为什么不简单地做 line[3] 而不是在 y = 4 时找到 x?

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

最佳答案

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

x    x
 x  x 
  xx
  xx
 x  x
x    x

当您进行数学计算时,您可以非常确定在几乎所有情况下您都会得到一个合理的答案,如果您将您的视野限制在像素上,您注定会犯错误。

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

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

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

关于c - 具有离散建模的图形 : faster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045559/

相关文章:

c - 如何在C中选择寄存器变量?

c - 如何读取、加密和覆盖文本文件

np.loadtxt 和 iter_loadtxt 中的 Python MemoryError 或 ValueError

将 x86 程序集跳转表转换为 C

c - gcc 内联汇编的奇怪行为?

c - C中的全局部分规则

c++ - SSE 指令在实践中优化了什么,编译器如何启用和使用它们?

C 基本字符串问题

python - 内存错误和列表限制?

assembly - DOSBox:debug.exe 读取文件 - 错误地处理命令