More Rotation

Angle(radian) and Axis(normalized) to Quaternion

quaternion[axis.x * sin(angle/2), axis.y * sin(angle/2), axis.z * sin(angle/2), cos(angle/2)]

Quaternion to Euler(in Houdini)

  • Quaternion to Matrix3 -> Matrix3 to Matrix4 -> Extract Transform

Euler angle(order xyz) to point position

  • add rotation X (x, y*cos(rx) + z*sin(rx), y*-sin(rx) + z*cos(rx))

(x, y*cos(rx) + z*sin(Rx), y*-sin(rx) + z*cos(rx))

x = x

y = y*cos(rx) + z*sin(Rx)

z = y*-sin(rx) + z*cos(rx)

  • add rotation Y (x*cos(ry) + z*-cos(ry), y, x*sin(ry) + z*cos(ry))

(x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry), y*cos(rx) + z*sin(Rx), x*sin(ry) + {y*-sin(rx) + z*cos(r)}*cos(ry))

x = x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry)

y = y*cos(rx) + z*sin(Rx)

z = x*sin(ry) + { y*-sin(rx) + z*cos(rx) }*cos(ry)

  • add rotation Z (x*cos(rz) + y*sin(rz), x*-sin(rz) + y*cos(rz), z)

([ x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry) ]*cos(rz) + {y*cos(rx) + z*sin(Rx)}*sin(rz), [x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry)]*-sin(rz) + [y*cos(rx) + z*sin(rx)]*cos(rz), x*sin(ry) + { y*-sin(rx) + z*cos(rx) }*cos(ry))

x = [ x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry) ]*cos(rz) + {y*cos(rx) + z*sin(Rx)}*sin(rz)

= x*cos(ry)*cos(rz) + y*sin(rx)*cos(ry)*cos(rz) + z*cos(rx)*-cos(ry)*cos(rz) + y*cos(rx)*sin(rz) + z*sin(Rx)*sin(rz)

= x*cos(ry)*cos(rz) + y*{sin(rx)*cos(ry)*cos(rz) + cos(rx)*sin(rz)} + z*{cos(rx)*-cos(ry)*cos(rz) + sin(Rx)*sin(rz)}

y = [ x*cos(ry) + { y*-sin(rx) + z*cos(rx) }*-cos(ry) ]*-sin(rz) + [y*cos(rx) + z*sin(Rx)]*cos(rz)

= x*cos(ry)*-sin(rz) - y*sin(rx)*cos(ry)*sin(rz) + z*cos(rx)*cos(ry)*sin(rz) + y*cos(rx)*cos(rz) + z*sin(rx)*cos(rz)

= x*cos(ry)*-sin(rz) + y*{-sin(rx)*cos(ry)*sin(rz) + cos(rx)*cos(rz)} + z*{cos(rx)*cos(ry)*sin(rz) + sin(rx)*cos(rz)}

z = x*sin(ry) + { y*-sin(rx) + z*cos(rx) }*cos(ry)

= x*sin(ry) - y*sin(rx)*cos(ry) + z*cos(rx)*cos(ry)