Facebook
From Anorexic Marmoset, 3 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 94
  1.  
  2. def objFunc(p):
  3.     x0Val, z0Val, x1Val = p
  4.     C = (1,1,1)
  5.     A = (x0Val, 0, z0Val)
  6.     B = (x1Val, 0, 0)
  7.     #result already divided by 2
  8.     return 4*((1-x0Val)**2+1+(1-z0Val)**2)**0.5 + 2*((x0Val-x1Val)**2+z0Val**2)**0.5 + x1Val
  9.  
  10.  
  11. sol = minimize_constrained(objFunc, [(0, 1)]*3, (0.7, 0.5, 0.6))
  12. print ("x0, z0, x1 = ", sol)
  13. print ("total length = ", objFunc(sol))
  14.  
  15.  
  16. def getGraphic(x0Val, z0Val, x1Val):
  17.     #[(1, y, z) for y,z in itertools.product(*[[-1, 1]]*2)]
  18.     C1 = (1,1,1)
  19.     C2 = (1,-1,1)
  20.     C3 = (1,1,-1)
  21.     C4 = (1,-1,-1)
  22.     C5 = (-1,1,1)
  23.     C6 = (-1,-1,1)
  24.     C7 = (-1,1,-1)
  25.     C8 = (-1,-1,-1)
  26.    
  27.     A1 = (x0Val, 0, z0Val)
  28.     A2 = (x0Val, 0, -z0Val)
  29.     B = (x1Val, 0, 0)
  30.     B2 = (-x1Val, 0, 0)
  31.     A3 = (-x0Val, 0, z0Val)
  32.     A4 = (-x0Val, 0, -z0Val)
  33.    
  34.     allLines = (
  35.         [(C1, A1), (C2, A1), (C3, A2), (C4, A2), (A1, B), (A2, B),
  36.          (B, B2),
  37.         (C5, A3), (C6, A3), (C7, A4), (C8, A4), (A3, B2), (A4, B2)]
  38.     )
  39.    
  40.     g = Graphics()
  41.     g += points([C1,C2,C3,C4,C5,C6,C7,C8], size=20, color='blue')
  42.     for t in allLines: g += line(t, color='green', radius=0.015)
  43.    
  44.     return g
  45.  
  46. getGraphic(*sol).show()
  47.  
  48. #Output:
  49. #x0, z0, x1 =  (0.7114348459256075, 0.5006602988247546, 0.4225927055984936)
  50. #total length =  6.196153088395327
  51.