Struct TwistServoFunctions
- Namespace
- BepuPhysics.Constraints
- Assembly
- BepuPhysics.dll
public struct TwistServoFunctions : ITwoBodyConstraintFunctions<TwistServoPrestepData, Vector<float>>
- Implements
- Inherited Members
Properties
RequiresIncrementalSubstepUpdates
Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
public static bool RequiresIncrementalSubstepUpdates { get; }
Property Value
Methods
ApplyImpulse(ref Vector3Wide, ref Vector3Wide, in Vector3Wide, in Vector3Wide, in Vector<float>)
public static void ApplyImpulse(ref Vector3Wide angularVelocityA, ref Vector3Wide angularVelocityB, in Vector3Wide impulseToVelocityA, in Vector3Wide negatedImpulseToVelocityB, in Vector<float> csi)
Parameters
angularVelocityA
Vector3WideangularVelocityB
Vector3WideimpulseToVelocityA
Vector3WidenegatedImpulseToVelocityB
Vector3Widecsi
Vector<float>
ComputeCurrentAngle(in Vector3Wide, in Vector3Wide, in Matrix3x3Wide, out Vector<float>)
public static void ComputeCurrentAngle(in Vector3Wide basisBX, in Vector3Wide basisBZ, in Matrix3x3Wide basisA, out Vector<float> angle)
Parameters
ComputeEffectiveMass(float, in SpringSettingsWide, in Symmetric3x3Wide, in Symmetric3x3Wide, in Vector3Wide, out Vector3Wide, out Vector3Wide, out Vector<float>, out Vector<float>, out Vector<float>, out Vector3Wide)
public static void ComputeEffectiveMass(float dt, in SpringSettingsWide springSettings, in Symmetric3x3Wide inverseInertiaA, in Symmetric3x3Wide inverseInertiaB, in Vector3Wide jacobianA, out Vector3Wide impulseToVelocityA, out Vector3Wide negatedImpulseToVelocityB, out Vector<float> positionErrorToVelocity, out Vector<float> softnessImpulseScale, out Vector<float> effectiveMass, out Vector3Wide velocityToImpulseA)
Parameters
dt
floatspringSettings
SpringSettingsWideinverseInertiaA
Symmetric3x3WideinverseInertiaB
Symmetric3x3WidejacobianA
Vector3WideimpulseToVelocityA
Vector3WidenegatedImpulseToVelocityB
Vector3WidepositionErrorToVelocity
Vector<float>softnessImpulseScale
Vector<float>effectiveMass
Vector<float>velocityToImpulseA
Vector3Wide
ComputeEffectiveMassContributions(in Symmetric3x3Wide, in Symmetric3x3Wide, in Vector3Wide, out Vector3Wide, out Vector3Wide, out Vector<float>)
public static void ComputeEffectiveMassContributions(in Symmetric3x3Wide inverseInertiaA, in Symmetric3x3Wide inverseInertiaB, in Vector3Wide jacobianA, out Vector3Wide impulseToVelocityA, out Vector3Wide negatedImpulseToVelocityB, out Vector<float> unsoftenedInverseEffectiveMass)
Parameters
inverseInertiaA
Symmetric3x3WideinverseInertiaB
Symmetric3x3WidejacobianA
Vector3WideimpulseToVelocityA
Vector3WidenegatedImpulseToVelocityB
Vector3WideunsoftenedInverseEffectiveMass
Vector<float>
ComputeJacobian(in QuaternionWide, in QuaternionWide, in QuaternionWide, in QuaternionWide, out Vector3Wide)
public static void ComputeJacobian(in QuaternionWide orientationA, in QuaternionWide orientationB, in QuaternionWide localBasisA, in QuaternionWide localBasisB, out Vector3Wide jacobianA)
Parameters
orientationA
QuaternionWideorientationB
QuaternionWidelocalBasisA
QuaternionWidelocalBasisB
QuaternionWidejacobianA
Vector3Wide
ComputeJacobian(in QuaternionWide, in QuaternionWide, in QuaternionWide, in QuaternionWide, out Vector3Wide, out Vector3Wide, out Matrix3x3Wide, out Vector3Wide)
public static void ComputeJacobian(in QuaternionWide orientationA, in QuaternionWide orientationB, in QuaternionWide localBasisA, in QuaternionWide localBasisB, out Vector3Wide basisBX, out Vector3Wide basisBZ, out Matrix3x3Wide basisA, out Vector3Wide jacobianA)
Parameters
orientationA
QuaternionWideorientationB
QuaternionWidelocalBasisA
QuaternionWidelocalBasisB
QuaternionWidebasisBX
Vector3WidebasisBZ
Vector3WidebasisA
Matrix3x3WidejacobianA
Vector3Wide
IncrementallyUpdateForSubstep(in Vector<float>, in BodyVelocityWide, in BodyVelocityWide, ref TwistServoPrestepData)
public static void IncrementallyUpdateForSubstep(in Vector<float> dt, in BodyVelocityWide wsvA, in BodyVelocityWide wsvB, ref TwistServoPrestepData prestepData)
Parameters
dt
Vector<float>wsvA
BodyVelocityWidewsvB
BodyVelocityWideprestepData
TwistServoPrestepData
Solve(in Vector3Wide, in QuaternionWide, in BodyInertiaWide, in Vector3Wide, in QuaternionWide, in BodyInertiaWide, float, float, ref TwistServoPrestepData, ref Vector<float>, ref BodyVelocityWide, ref BodyVelocityWide)
public static void Solve(in Vector3Wide positionA, in QuaternionWide orientationA, in BodyInertiaWide inertiaA, in Vector3Wide positionB, in QuaternionWide orientationB, in BodyInertiaWide inertiaB, float dt, float inverseDt, ref TwistServoPrestepData prestep, ref Vector<float> accumulatedImpulses, ref BodyVelocityWide wsvA, ref BodyVelocityWide wsvB)
Parameters
positionA
Vector3WideorientationA
QuaternionWideinertiaA
BodyInertiaWidepositionB
Vector3WideorientationB
QuaternionWideinertiaB
BodyInertiaWidedt
floatinverseDt
floatprestep
TwistServoPrestepDataaccumulatedImpulses
Vector<float>wsvA
BodyVelocityWidewsvB
BodyVelocityWide
WarmStart(in Vector3Wide, in QuaternionWide, in BodyInertiaWide, in Vector3Wide, in QuaternionWide, in BodyInertiaWide, ref TwistServoPrestepData, ref Vector<float>, ref BodyVelocityWide, ref BodyVelocityWide)
public static void WarmStart(in Vector3Wide positionA, in QuaternionWide orientationA, in BodyInertiaWide inertiaA, in Vector3Wide positionB, in QuaternionWide orientationB, in BodyInertiaWide inertiaB, ref TwistServoPrestepData prestep, ref Vector<float> accumulatedImpulses, ref BodyVelocityWide wsvA, ref BodyVelocityWide wsvB)
Parameters
positionA
Vector3WideorientationA
QuaternionWideinertiaA
BodyInertiaWidepositionB
Vector3WideorientationB
QuaternionWideinertiaB
BodyInertiaWideprestep
TwistServoPrestepDataaccumulatedImpulses
Vector<float>wsvA
BodyVelocityWidewsvB
BodyVelocityWide