railway_basis = matmatmultiply(dPQplane_basis, railway_inplane_basis)
dbg('railway_basis\n', railway_basis)
vdbg().basis(railway_basis, hue=(1,0,1))
+ vdbg_railway = MatrixVisdebug(vdbg(), railway_basis)
# two circular arcs of equal maximum possible radius
# algorithm courtesy of Simon Tatham (`Railway problem',
dbg('railway:', railway_theta, railway_phi, railway_angleoffset)
+ def vdbg_railway_plane_angle(start, angle, **kw):
+ vdbg_railway.arrow(start, [sin(angle), cos(angle), 0], **kw)
+ vdbg_railway_plane_angle([0,0,0], railway_theta, color=(1, 0.5, 0))
+ vdbg_railway_plane_angle([1,0,0], railway_phi, color=(1, 0.5, 0))
+
if railway_cos_theta**2 + railway_cos_phi**2 > 1E-6:
railway_roots = np.roots([
2 * (1 + cos(railway_theta - railway_phi)),