首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形绘制算法

图形绘制算法
EN

Stack Overflow用户
提问于 2012-03-21 21:24:22
回答 2查看 1.4K关注 0票数 0

我在矩阵上有一个无向图,通过这样的顶点邻接关系;

代码语言:javascript
复制
    /*    a  b  c  d
     * a -1  0  1  1
     * b  0 -1  1  1
     * c  1  1 -1  1
     * d  1  1  1 -1 
     *
     */

    int G[4][4] = {{-1, 0, 1, 1},
                   { 0,-1, 1, 1},
                   { 1, 1,-1, 1},
                   { 1, 1, 1,-1}};

我想在坐标系统上画这张图。通过任何方法(力定向,弹簧vs)给出每个顶点位置(x,y)的算法是什么?我只是要求伪代码,而不是任何库或软件来绘制。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-23 09:57:50

下面是用as3描述的算法。我解决了我的问题。谢谢。http://blog.ivank.net/force-based-graph-drawing-in-as3.html

票数 0
EN

Stack Overflow用户

发布于 2012-03-22 03:07:03

以下是从prefuse库中修改的圆形图形布局:

代码语言:javascript
复制
void layoutPoints(int rows, int cols, Point **coordinates, Rectangle maxSize)
{
    int nn = rows * cols;
    int width = maxSize.width;
    int height = maxSize.height;
    int centerX = maxSize.x + (width / 2);
    int centerX = maxSize.y + (width / 2);

    int radius = 0.45 * (height < width ? height : width);

    for (int i = 0; i < width; i++)
    {
        for (int j = 0; j < width; j++)
        {
             double angle = (2 * M_PI * i) / nn;
             double x = cos(angle) * radius + centerX;
             double y = sin(angle) * radius + centerY;
             coordinates[i][j].x = round(x);
             coordinates[i][j].y = round(y);
        }
    }
}

如果需要,您也可以将其更改为使用浮点数或双精度数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9805532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档