in safety_gym/envs/engine.py [0:0]
def quat2zalign(quat):
''' From quaternion, extract z_{ground} dot z_{body} '''
# z_{body} from quaternion [a,b,c,d] in ground frame is:
# [ 2bd + 2ac,
# 2cd - 2ab,
# a**2 - b**2 - c**2 + d**2
# ]
# so inner product with z_{ground} = [0,0,1] is
# z_{body} dot z_{ground} = a**2 - b**2 - c**2 + d**2
a, b, c, d = quat
return a**2 - b**2 - c**2 + d**2