Class MathUtilities
Contains various math utility functions
Inherited Members
Namespace: Unity.CharacterController
Syntax
public static class MathUtilities
Methods
AngleRadians(float3, float3)
Calculates angles in radians between two normalized direction vectors
Declaration
public static float AngleRadians(float3 from, float3 to)
Parameters
Type | Name | Description |
---|---|---|
float3 | from | The source direction |
float3 | to | The destination direction |
Returns
Type | Description |
---|---|
Single | Angle in radians |
AngleRadiansToDotRatio(Single)
Calculates the dot product between two normalized direction vectors that are at a specified angle (in radians) from each other
Declaration
public static float AngleRadiansToDotRatio(float angleRadians)
Parameters
Type | Name | Description |
---|---|---|
Single | angleRadians | The angle in radians separating the two fictional direction vectors |
Returns
Type | Description |
---|---|
Single | The dot product result |
CalculatePointDisplacement(float3, RigidTransform, RigidTransform)
Calculates the displacement vector of a worldspace point from one transform pose to the next
Declaration
public static float3 CalculatePointDisplacement(float3 pointWorldSpace, RigidTransform fromTransform, RigidTransform toTransform)
Parameters
Type | Name | Description |
---|---|---|
float3 | pointWorldSpace | The worldspace point that gets moved (before movement) |
RigidTransform | fromTransform | The original transform pose |
RigidTransform | toTransform | The destination transform pose |
Returns
Type | Description |
---|---|
float3 |
CalculatePointDisplacementFromVelocity(Single, RigidTransform, float3, float3, float3)
Calculates the displacement vector of a worldspace point relatively to a transform that moves with linear/angular velocity
Declaration
public static float3 CalculatePointDisplacementFromVelocity(float deltaTime, RigidTransform bodyRigidTransform, float3 linearVelocity, float3 angularVelocity, float3 pointWorldSpace)
Parameters
Type | Name | Description |
---|---|---|
Single | deltaTime | The time delta of the movement |
RigidTransform | bodyRigidTransform | The transform pose of the moving body |
float3 | linearVelocity | The linear velocity of the moving body |
float3 | angularVelocity | The angular velocity of the moving body |
float3 | pointWorldSpace | The worldspace point to move |
Returns
Type | Description |
---|---|
float3 |
ClampToMaxLength(float3, Single)
Clamps a vector to a maximum length
Declaration
public static float3 ClampToMaxLength(float3 vector, float maxLength)
Parameters
Type | Name | Description |
---|---|---|
float3 | vector | The vector to clamp |
Single | maxLength | The max length to clamp to |
Returns
Type | Description |
---|---|
float3 | The clamped vector |
CreateRotationWithUpPriority(float3, float3)
Builds a rotation that prioritizes having its up direction aligned with the designated up direction. Then, it orients its forwards towards the designated forward direction as much as is can without breaking the primary up direction constraint
Declaration
public static quaternion CreateRotationWithUpPriority(float3 up, float3 forward)
Parameters
Type | Name | Description |
---|---|---|
float3 | up | The target up direction |
float3 | forward | The target forward direction |
Returns
Type | Description |
---|---|
quaternion | The resulting rotation |
DotRatioToAngleRadians(Single)
Calculates the angles in radians that represent the angle difference between two normalized direction vectors that would have a specified dot product result
Declaration
public static float DotRatioToAngleRadians(float dotRatio)
Parameters
Type | Name | Description |
---|---|---|
Single | dotRatio | The dot product result between the two fictional normalized direction vectors |
Returns
Type | Description |
---|---|
Single | The angle in radians |
FromToRotation(quaternion, quaternion)
Calculates a rotation delta from a certain rotation to another
Declaration
public static quaternion FromToRotation(quaternion from, quaternion to)
Parameters
Type | Name | Description |
---|---|---|
quaternion | from | The source rotation |
quaternion | to | The destination rotation |
Returns
Type | Description |
---|---|
quaternion | The rotation delta |
GetAxisSystemFromForward(float3, out float3, out float3)
Creates perpendicular right and up directions based on a given forward direction
Declaration
public static void GetAxisSystemFromForward(float3 fwd, out float3 right, out float3 up)
Parameters
Type | Name | Description |
---|---|---|
float3 | fwd | The designated forward direction |
float3 | right | Outputted right direction |
float3 | up | Outputted up direction |
GetForwardFromRotation(quaternion)
Gets the forward direction of a given quaternion
Declaration
public static float3 GetForwardFromRotation(quaternion rot)
Parameters
Type | Name | Description |
---|---|---|
quaternion | rot | The rotation in quaternion |
Returns
Type | Description |
---|---|
float3 | The forward direction |
GetRightFromRotation(quaternion)
Gets the right direction of a given quaternion
Declaration
public static float3 GetRightFromRotation(quaternion rot)
Parameters
Type | Name | Description |
---|---|---|
quaternion | rot | The rotation in quaternion |
Returns
Type | Description |
---|---|
float3 | The right direction |
GetSharpnessInterpolant(Single, Single)
Returns an interpolant parameter that represents interpolating with a given sharpness
Declaration
public static float GetSharpnessInterpolant(float sharpness, float dt)
Parameters
Type | Name | Description |
---|---|---|
Single | sharpness | The desired interpolation sharpness |
Single | dt | The interpolation time delta |
Returns
Type | Description |
---|---|
Single | The resulting interpolant |
GetUpFromRotation(quaternion)
Gets the up direction of a given quaternion
Declaration
public static float3 GetUpFromRotation(quaternion rot)
Parameters
Type | Name | Description |
---|---|---|
quaternion | rot | The rotation in quaternion |
Returns
Type | Description |
---|---|
float3 | The up direction |
ProjectOnPlane(float3, float3)
Projects a vector on a plane
Declaration
public static float3 ProjectOnPlane(float3 vector, float3 onPlaneNormal)
Parameters
Type | Name | Description |
---|---|---|
float3 | vector | The vector to project |
float3 | onPlaneNormal | The plane normal to project on |
Returns
Type | Description |
---|---|
float3 | The projected vector |
ReorientVectorOnPlaneAlongDirection(float3, float3, float3)
Reorients a vector on a plane while constraining its direction so that the resulting vector is between the original vector and the specified direction
Declaration
public static float3 ReorientVectorOnPlaneAlongDirection(float3 vector, float3 onPlaneNormal, float3 alongDirection)
Parameters
Type | Name | Description |
---|---|---|
float3 | vector | The original vector to reorient |
float3 | onPlaneNormal | The plane on which the vector should be reoriented |
float3 | alongDirection | The target direction along which the vector should be reoriented |
Returns
Type | Description |
---|---|
float3 | The reoriented vector |
ReverseProjectOnVector(float3, float3, Single)
Calculates a vectorA in the direction of "onNormalizedVector", such that if vectorA was projected on the "projectedVector"'s normalized direction, it would result in "projectedVector"
Declaration
public static float3 ReverseProjectOnVector(float3 projectedVector, float3 onNormalizedVector, float maxLength)
Parameters
Type | Name | Description |
---|---|---|
float3 | projectedVector | The projected vector that we want to de-project |
float3 | onNormalizedVector | The desired normalized direction of the de-projected vector |
Single | maxLength | The maximum length of the de-projected vector (de-projection can lead to very large or infinite values for near-perpendicular directions) |
Returns
Type | Description |
---|---|
float3 | The resulting de-projected vector |
RotateAroundPoint(ref quaternion, ref float3, float3, quaternion)
Applies a rotation delta to a transform's rotation, but also modifies its position so that the end result is as if the transform has rotated around a given point in order to reach the specified rotation
Declaration
public static void RotateAroundPoint(ref quaternion rotation, ref float3 position, float3 aroundPoint, quaternion addedRotation)
Parameters
Type | Name | Description |
---|---|---|
quaternion | rotation | The modified rotation |
float3 | position | The modified position |
float3 | aroundPoint | The point to rotate around |
quaternion | addedRotation | The desired rotation delta |
SetRotationAroundPoint(ref quaternion, ref float3, float3, quaternion)
Sets a transform's rotation to a target rotation, but also modifies its position so that the end result is as if the transform has rotated around a given point in order to reach the specified rotation
Declaration
public static void SetRotationAroundPoint(ref quaternion rotation, ref float3 position, float3 aroundPoint, quaternion targetRotation)
Parameters
Type | Name | Description |
---|---|---|
quaternion | rotation | The modified rotation |
float3 | position | The modified position |
float3 | aroundPoint | The point to rotate around |
quaternion | targetRotation | The desired rotation |