railway_phi = atan2(*dq_plane[0:2]) - railway_angleoffset
railway_cos_theta = cos(railway_theta)
railway_cos_phi = cos(railway_phi)
+
+ railway_inplane_basis_x = np.hstack((q_plane[0:2], [0]))
+ railway_inplane_basis = np.column_stack((
+ railway_inplane_basis_x,
+ np.cross([0,0,1], railway_inplane_basis_x),
+ [0,0,1],
+ [0,0,0],
+ ))
+ #dbg('railway_inplane_basis\n', railway_inplane_basis)
+ railway_inplane_basis = np.vstack((railway_inplane_basis,
+ [0,0,0,1]))
+ dbg('railway_inplane_basis\n', railway_inplane_basis)
+ railway_basis = matmatmultiply(dPQplane_basis, railway_inplane_basis)
+ dbg('railway_basis\n', railway_basis)
+ vdbg().basis(railway_basis, hue=(1,0,1))
dbg('railway:', railway_theta, railway_phi, railway_angleoffset)
+
if railway_cos_theta**2 + railway_cos_phi**2 > 1E-6:
railway_roots = np.roots([
2 * (1 + cos(railway_theta - railway_phi)),