Table of Contents

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

bool

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 Vector3Wide
angularVelocityB Vector3Wide
impulseToVelocityA Vector3Wide
negatedImpulseToVelocityB Vector3Wide
csi 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

basisBX Vector3Wide
basisBZ Vector3Wide
basisA Matrix3x3Wide
angle Vector<float>

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 float
springSettings SpringSettingsWide
inverseInertiaA Symmetric3x3Wide
inverseInertiaB Symmetric3x3Wide
jacobianA Vector3Wide
impulseToVelocityA Vector3Wide
negatedImpulseToVelocityB Vector3Wide
positionErrorToVelocity 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 Symmetric3x3Wide
inverseInertiaB Symmetric3x3Wide
jacobianA Vector3Wide
impulseToVelocityA Vector3Wide
negatedImpulseToVelocityB Vector3Wide
unsoftenedInverseEffectiveMass 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 QuaternionWide
orientationB QuaternionWide
localBasisA QuaternionWide
localBasisB QuaternionWide
jacobianA 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 QuaternionWide
orientationB QuaternionWide
localBasisA QuaternionWide
localBasisB QuaternionWide
basisBX Vector3Wide
basisBZ Vector3Wide
basisA Matrix3x3Wide
jacobianA 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 BodyVelocityWide
wsvB BodyVelocityWide
prestepData 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 Vector3Wide
orientationA QuaternionWide
inertiaA BodyInertiaWide
positionB Vector3Wide
orientationB QuaternionWide
inertiaB BodyInertiaWide
dt float
inverseDt float
prestep TwistServoPrestepData
accumulatedImpulses Vector<float>
wsvA BodyVelocityWide
wsvB 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 Vector3Wide
orientationA QuaternionWide
inertiaA BodyInertiaWide
positionB Vector3Wide
orientationB QuaternionWide
inertiaB BodyInertiaWide
prestep TwistServoPrestepData
accumulatedImpulses Vector<float>
wsvA BodyVelocityWide
wsvB BodyVelocityWide