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

时间:2012-11-01 03:26:44

标签: algorithm graphics data-structures

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

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

谢谢!

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

1 个答案:

答案 0 :(得分:0)

我认为这取决于你如何让用户绘制形状。他们只是将光标移动到画布上吗?如果是这种情况,那么它没有太多的数学,所以cbranch的解决方案可能是一个很好的方法。它只需要是一个开/关位数组。您甚至可以使用某种压缩技术对其进行优化。

然而,如果你给他们特定的绘画方式,例如 - 方形工具,圆形工具,贝塞尔工具,那么每个工具都可以比像素数据更有效地存储。一个正方形可以存储为一个简单的结构,如:

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

圆圈:

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

Bezier曲线:

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

然后,只需在将数据绘制回屏幕时从数据中重新创建相应的形状类型。