def spring(v1, v2): force_vec = (v1-v2) #dist = force_vec.mag() force_vec = Vec (force_vec.x, force_vec.y) #node has mass #eval if (force_vec.mag()>=100) : return(Vec(-force_vec.x, -force_vec.y)) else : return(force_vec)
def force_layout(nodes): forces = {} for n in nodes: forces[n] = Vec(0, 0) for t in n.targets: forces[n] += spring(n.vec,t[1].vec) for nod in nodes: #if nod is not n.targets[1]: if nod is not n: forces[n] += ball(n.vec,nod.vec) for n in nodes: #if (forces[n]) n.vec += forces[n] * C4
def ensureVector(x, y=0, z=0, w=0): if isVector(x): return x else: return Vec.Vec(x, y, z, w)
def __init__(self, label): self.label = label self.targets = [] self.vec = Vec(0, 0)
if isVector(x): return x else: return Vec.Vec(x, y, z, w) # TODO: add to test_helpers.py with isMatrix and ensureMatrix # Ensure testMat is a Mat44 matrix (4 row Vec4s) def isMatrix(testMat): return isinstance(testMat, Mat44.Mat44) # Ensure matrix, either a Mat44 object, 4 row Vec4s, 16 matrix values zero = Vec.Vec(0, 0, 0, 0) def ensureMatrix(row0x, row0y=zero, row0z=zero, row0w=zero, row1x=zero, row1y=zero, row1z=zero, row1w=zero, row2x=zero, row2y=zero, row2z=zero, row2w=zero, row3x=zero,