Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


PhysicsMath

A set of mathematical operations that are useful for physics. These operations do not form a fully comprehensive mathematics library, they simply provide operations that are usually required when interacting with physics.
Read time 5 minutesLast updated 7 days ago

Definition

  • Type: Struct
  • Namespace: Unity.U2D.Physics
  • Assembly: UnityEngine.PhysicsCore2DModule
public readonly struct PhysicsMath

Static Properties

Property

Description

PIGet the value of PI used internally by the physics system. Using this will help with determinism.
TAUGet the value of tau (2 * PI) used internally by the physics system. Using this will help with determinism.

Static Methods

Method

Description

AngularVelocityToQuaternionCalculate a Quaternion given a 2D angular velocity and a time to integrate over using the selected transform plane. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
Atan2Calculate the arc-tangent i.e. the angle of the provided slope y/x. This operates as deterministically as possible across platforms.
CosSinCalculate both the Cosine and Sine of the specified angle.
GetRelativeMatrixGet the relative transformation matrix between the two specified transforms using the specified transform plane. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
GetRelativeMatrix2DGet the relative transformation matrix between the two specified transform matrix using the specified transform plane to transform into 2D space i.e. XY position and Z rotation.
GetRelativePose2DGet the relative transformation pose (translation, rotation and scale) between the two specified transform matrix using the specified transform plane to transform into 2D space.
GetRotationAxesGet the used rotation axes, given the specified transform plane. This is the inverse of PhysicsMath.GetRotationIgnoredAxes. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
GetRotationIgnoredAxesGet the ignored rotation axes, given the specified transform plane. This is the inverse of PhysicsMath.GetRotationAxes. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
GetTranslationAxesGet the used translation axes, given the specified transform plane. This is the inverse of PhysicsMath.GetTranslationIgnoredAxes. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
GetTranslationIgnoredAxesGet the ignored translation axes, given the specified transform plane. This is the inverse of PhysicsMath.GetTranslationAxes. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
GetTranslationIgnoredAxisGet the ignored translation axis, given the specified transform plane. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
MaxAbsComponentGet the maximum absolute value component from the specified vector.
MinAbsComponentGet the minimum absolute value component from the specified vector.
SetTransformFast2DSet the Transform position and rotation using the specified PhysicsWorld.TransformPlane. For position, only two axis will be updated with the others remaining unchanged. For rotation, only a single rotation axis will be changed with the others set to zero.
SetTransformSlow3DSet the Transform position and rotation using the specified PhysicsWorld.TransformPlane. For position, only two axis will be updated with the others remaining unchanged. For rotation, only a single rotation axis will be changed with the others remaining unchanged.
SpringDamperCalculate a one-dimensional mass-spring-damper simulation which drives towards a zero translation. You can then compute the new position using: "translation += newSpeed * deltaTime;"
SwizzleTransform a Matrix position (with perspective divide) into a Matrix position using the selected transform plane. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
ToDegreesConvert radians to degrees. This operates as deterministically as possible across platforms. See PhysicsMath.ToRadians.
ToPhysicsTransformTransform a 3D Transform position and rotation to a 2D PhysicsTransform. Scale is not part of a PhysicsTransform therefore it is ignored. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
ToPosition2DTransform a 3D position into a 2D position using the selected transform plane. If TransformPlane.Custom is used then PhysicsWorld.TransformPlane.XY is used.
ToPosition3DTransform a 2D position into a 3D position using the selected transform plane. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
ToRadiansConvert degrees to radians. This operates as deterministically as possible across platforms. See PhysicsMath.ToDegrees.
ToRotation2DTransform a 3D rotation into a 2D angle using the selected transform plane. If TransformPlane.Custom is used then PhysicsWorld.TransformPlane.XY is used.
ToRotationFast3DTransform a 2D angle into a 3D rotation using the selected transform plane (Fast). The transformation is fast because the rotation is simplified by the fact that only a single axis of rotation is handled. All other axis rotations are reset to zero. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.
ToRotationSlow3DTransform a 2D angle into a 3D rotation using the selected transform plane (Slow). The transformation is slower because the rotation is more complex due to the fact that changing a single axis of rotation requires it to not affect any other axis rotations. If PhysicsWorld.TransformPlane.Custom is used, PhysicsWorld.TransformPlane.XY will be used instead which may not provide the correct results.