我在矩阵上有一个无向图,通过这样的顶点邻接关系;
/* 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)的算法是什么?我只是要求伪代码,而不是任何库或软件来绘制。谢谢。
发布于 2012-03-23 09:57:50
下面是用as3描述的算法。我解决了我的问题。谢谢。http://blog.ivank.net/force-based-graph-drawing-in-as3.html
发布于 2012-03-22 03:07:03
以下是从prefuse库中修改的圆形图形布局:
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);
}
}
}如果需要,您也可以将其更改为使用浮点数或双精度数。
https://stackoverflow.com/questions/9805532
复制相似问题