From 409783d01fc2147fd482dd1f1e4095f34cf76bf7 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 27 Jul 2011 18:27:11 -0400 Subject: [PATCH] Sketch.solve() returns solve result as integer --- Sketch.py | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/Sketch.py b/Sketch.py index 3b7a4c2..1d7974b 100644 --- a/Sketch.py +++ b/Sketch.py @@ -2,6 +2,11 @@ from numpy import * from FuncDesigner import * +UNDERCONSTRAINED = 0 +OVERCONSTRAINED = 1 +SOLVED = 2 +NO_SOLUTION = 3 + class Sketch(object): def __init__(self): self.shapes = [] @@ -35,23 +40,26 @@ class Sketch(object): dim = self.num_constraints if self.num_variables > dim: dim = self.num_variables - if self.num_variables == self.num_constraints: - sle_equs = [] - variables = oovars(dim) - for e in equations: - coeffs = e[0] - equ = -e[1] - for c in coeffs: - equ = c[0] * variables[shape_vars[c[1]]] + equ - sle_equs.append(equ) - s = sle(sle_equs) - r = s.solve() - if r.ff != float('inf'): - print "SOLVED: ", r(variables) - for i in range(len(variables)): - varid_to_shape_var[i][0].setVar(varid_to_shape_var[i][1], - r(variables[i])) - for s in self.shapes: - print 'shape:', repr(s.vars) - return True - return False + if self.num_variables < self.num_constraints: + return OVERCONSTRAINED + elif self.num_variables > self.num_constraints: + return UNDERCONSTRAINED + sle_equs = [] + variables = oovars(dim) + for e in equations: + coeffs = e[0] + equ = -e[1] + for c in coeffs: + equ = c[0] * variables[shape_vars[c[1]]] + equ + sle_equs.append(equ) + s = sle(sle_equs) + r = s.solve() + if r.ff != float('inf'): +# print "SOLVED: ", r(variables) + for i in range(len(variables)): + varid_to_shape_var[i][0].setVar(varid_to_shape_var[i][1], + r(variables[i])) +# for s in self.shapes: +# print 'shape:', repr(s.vars) + return SOLVED + return NO_SOLUTION