public SetLocalAxes ( Matrix3x3 matrix ) : void | ||
matrix | Matrix3x3 | Rotation matrix representing the three axes. /// The matrix's backward vector is used as the primary axis. /// The matrix's right vector is used as the x axis. /// The matrix's up vector is used as the y axis. |
return | void |
public void SetLocalAxes(Matrix3x3 matrix)
{
if (Math.Abs(Vector3.Dot(matrix.Backward, matrix.Right)) > Toolbox.BigEpsilon ||
Math.Abs(Vector3.Dot(matrix.Backward, matrix.Up)) > Toolbox.BigEpsilon ||
Math.Abs(Vector3.Dot(matrix.Right, matrix.Up)) > Toolbox.BigEpsilon)
throw new ArgumentException("The axes provided to the joint transform do not form an orthonormal basis. Ensure that each axis is perpendicular to the other two.");
localPrimaryAxis = Vector3.Normalize(matrix.Backward);
localXAxis = Vector3.Normalize(matrix.Right);
localYAxis = Vector3.Normalize(matrix.Up);
ComputeWorldSpaceAxes();
}
JointBasis3D::SetLocalAxes ( Vector3 primaryAxis, Vector3 xAxis, Vector3 yAxis ) : void | |
JointBasis3D::SetLocalAxes ( Vector3 primaryAxis, Vector3 xAxis, Vector3 yAxis, Matrix3x3 rotationMatrix ) : void |