/* applyAttr: * Attractive force = weight*(d*d)/K * or force = (d - L(e))*weight(e) */ static void applyAttr (Agnode_t* p, Agnode_t* q, Agedge_t* e) { double xdelta, ydelta; double force; double dist; double dist2; xdelta = ND_pos(q)[0] - ND_pos(p)[0]; ydelta = ND_pos(q)[1] - ND_pos(p)[1]; dist2 = xdelta*xdelta + ydelta*ydelta; while (dist2 == 0.0) { xdelta = 5 - rand()%10; ydelta = 5 - rand()%10; dist2 = xdelta*xdelta + ydelta*ydelta; } dist = sqrt (dist2); if (T_useNew) force = (ED_factor(e) * (dist - ED_dist(e)))/dist; else force = (ED_factor(e) * dist)/ED_dist(e); DISP(q)[0] -= xdelta * force; DISP(q)[1] -= ydelta * force; DISP(p)[0] += xdelta * force; DISP(p)[1] += ydelta * force; }
static void circular_init_edge(edge_t * e) { agbindrec(e, "Agedgeinfo_t", sizeof(Agedgeinfo_t), TRUE); //node custom data common_init_edge(e); ED_factor(e) = late_double(e, E_weight, 1.0, 0.0); }
/* init_edge: */ static void init_edge(edge_t * e, attrsym_t * E_len) { ED_factor(e) = late_double(e, E_weight, 1.0, 0.0); ED_dist(e) = late_double(e, E_len, fdp_parms.K, 0.0); common_init_edge(e); }
static void twopi_init_edge(edge_t * e) { #ifdef WITH_CGRAPH agbindrec(e, "Agedgeinfo_t", sizeof(Agedgeinfo_t), TRUE); //edge custom data #endif /* WITH_CGRAPH */ common_init_edge(e); ED_factor(e) = late_double(e, E_weight, 1.0, 0.0); }
void neato_init_edge(edge_t * e) { common_init_edge(e); ED_factor(e) = late_double(e, E_weight, 1.0, 1.0); }
static void twopi_init_edge(edge_t * e) { common_init_edge(e); ED_factor(e) = late_double(e, E_weight, 1.0, 0.0); }