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)