def augment0(v): return np.append(v, 0)
def unaugment(v): return v[0:3]
+def matmultiply(mat,vect):
+ # both are "array"s
+ # we would prefer to write mat @ vect
+ # but that doesn't work in Python 2
+ return np.array((vect * np.matrix(mat).T))[0,:]
+
+def augmatmultiply(mat,unaugvect):
+ return unaugment(matmultiply(mat, augment(unaugvect)))
+
findcurve_subproc = None
class HelixishCurve():
dp,
dPQplane_normal,
p));
+ dbg(dPQplane_basis)
dPQplane_basis = np.vstack((dPQplane_basis, [0,0,0,1]))
+ dbg(dPQplane_basis)
dPQplane_into = np.linalg.inv(dPQplane_basis)
- dp_plane = unaugment(dPQplane_into * augment0(dp))
- dq_plane = unaugment(dPQplane_into * augment0(dq))
- q_plane = unaugment(dPQplane_into * augment(q))
+ dp_plane = augmatmultiply(dPQplane_into, dp)
+ dq_plane = augmatmultiply(dPQplane_into, dq)
+ q_plane = augmatmultiply(dPQplane_into, q)
dist_pq_plane = np.linalg.norm(q_plane)
# two circular arcs of equal maximum possible radius
0, sin(tilt), cos(tilt), 0,
0, 0, 0, 1,
])
- findcurve_basis = dPQplane_basis * tilt_basis
+ findcurve_basis = augmatmultiply(dPQplane_basis, tilt_basis)
findcurve_into = np.linalg.inv(findcurve_basis)
q_findcurve = unaugment(findcurve_into, augment(q))