Open
Description
Hello,
I noticed that matrices with long symbolic equations are printed very shrink.
I found my own priting method and I suggest to align them by the longest term like this:
def print_SE3(SE3_matrix : SE3):
SE3_numpy = SE3_matrix.A
max_item_length = SE3_numpy.astype(np.string_).dtype.itemsize
print(np.array2string(SE3_numpy,max_line_width=np.inf,precision=3,suppress_small=True,formatter = {'all':lambda x: f"{str(x):{max_item_length}}"}))
or:
def print_SE3(SE3_matrix : SE3):
SE3_numpy = SE3_matrix.A
max_item_length = SE3_numpy.astype(np.string_).dtype.itemsize
with np.printoptions(precision=3, suppress=True, linewidth = np.inf, formatter = {'all':lambda x: f"{str(x):{max_item_length}}"}):
print(SE3_numpy)
Results without print_SE3:
-1.0*sin(theta2)*cos(theta1) 1.0*sin(theta1) 1.0*cos(theta1)*cos(theta2) (d3 + l2)*cos(theta1)*cos(theta2)
-1.0*sin(theta1)*sin(theta2) -1.0*cos(theta1) 1.0*sin(theta1)*cos(theta2) (d3 + l2)*sin(theta1)*cos(theta2)
1.0*cos(theta2) 0 1.0*sin(theta2) l1 + (d3 + l2)*sin(theta2)
0 0 0 1
Results with print_SE3:
[[-1.0*sin(theta2)*cos(theta1) 1.0*sin(theta1) 1.0*cos(theta1)*cos(theta2) (d3 + l2)*cos(theta1)*cos(theta2)]
[-1.0*sin(theta1)*sin(theta2) -1.0*cos(theta1) 1.0*sin(theta1)*cos(theta2) (d3 + l2)*sin(theta1)*cos(theta2)]
[1.0*cos(theta2) 0 1.0*sin(theta2) l1 + (d3 + l2)*sin(theta2) ]
[0 0 0 1 ]]
I know that this function could be better so the inner columns should have less separation but I think it's good first step towards the good change.