algorithm - 存储形状(或线条)数据的有效数据结构是什么

标签 algorithm graphics data-structures

在我的应用程序中,客户端用户可以绘制一些形状或线条,然后将这些形状数据发送到服务器并保存到数据库中。形状应该可以在客户端重新绘制。

我的问题是如何设计一种有效的数据结构来表示形状,数据结构应该易于传输和保存到数据库。

谢谢!

EDTION:这些形状包括规则形状(如圆形)和用户可以自由绘制的不规则形状。

最佳答案

我认为这取决于您让用户绘制形状的方式。他们只是在 Canvas 上移动光标吗?如果是这样的话,那么数学就没什么用了,所以 cbranch 的解决方案可能是一个不错的选择。它只需要是一组开/关位。您甚至可以使用某种压缩技术对其进行优化。

但是,如果您为他们提供特定的绘制方式,例如方形工具、圆形工具、贝塞尔工具,那么每一种都可以比像素数据更有效地存储。一个正方形可以存储为一个简单的结构,例如:

struct square {
    int x;
    int y;
    int length;
}

一个圆圈:

struct circle {
    int x;
    int y;
    int radius;
}

贝塞尔曲线:

struct bezier {
    int x1;
    int y1;
    int x2;
    int y2;
}

然后,当您在屏幕上绘制数据时,只需根据数据重新创建适当类型的形状即可。

关于algorithm - 存储形状(或线条)数据的有效数据结构是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170525/

相关文章:

python - 将 BST 转换为排序列表

algorithm - 哪种算法可用于解决分区概率的这种变化?

c++ - 专用 Nvidia GPU 无法绘制 OpenGL

java - Graphics2D 插值不能很好地处理非常小的 BufferedImages

c++ - 延迟着色 DirectX 演示?

algorithm - 数据结构 - 检查数组是否包含 2 个整数,第一个比第二个大 2 倍

algorithm - 广度优先搜索算法(由邻接表表示的图)具有二次时间复杂度?

algorithm - weka 中有哪些算法可以自动对数据集的特征进行加权?

algorithm - 图像稳定/对齐算法

c++ - 使用deque的滑动窗口(运行时错误)