Table of Contents

Struct ContactData.Contact

Namespace
Jitter2.Dynamics
Assembly
Jitter2.dll

Represents a single contact point between two rigid bodies.

public struct ContactData.Contact
Inherited Members

Remarks

This structure is layout-sensitive and stored in unmanaged memory as part of a ContactData. It contains geometric information (normal, tangents, positions) and solver state (accumulated impulses, bias).

Do not cache or store references to this structure across simulation steps.

Fields

AllowedPenetration

Penetration depth below which no position correction is applied.

public const float AllowedPenetration = 0.01

Field Value

float

Bias

Velocity bias for restitution (bounce).

public float Bias

Field Value

float

BiasFactor

Fraction of penetration corrected per step (Baumgarte stabilization).

public const float BiasFactor = 0.2

Field Value

float

BreakThreshold

Separation distance beyond which a contact is considered broken.

public const float BreakThreshold = 0.02

Field Value

float

Flag

Current contact state flags.

public ContactData.Contact.Flags Flag

Field Value

ContactData.Contact.Flags

MaximumBias

Maximum position-correction bias applied per iteration.

public const float MaximumBias = 100

Field Value

float

PenaltyBias

Position-correction bias computed from penetration depth.

public float PenaltyBias

Field Value

float

RelativePosition1

Position of the contact relative to the center of mass on the first body.

[ReferenceFrame(ReferenceFrame.World)]
public JVector RelativePosition1

Field Value

JVector

RelativePosition2

Position of the contact relative to the center of mass on the second body.

[ReferenceFrame(ReferenceFrame.World)]
public JVector RelativePosition2

Field Value

JVector

Properties

Impulse

The impulse applied in the normal direction which has been used to solve the contact.

public readonly float Impulse { get; }

Property Value

float

Normal

Normal direction (normalized) of the contact. Pointing from the collision point on the surface of Body2 to the collision point on the surface of Body1.

[ReferenceFrame(ReferenceFrame.World)]
public readonly JVector Normal { get; }

Property Value

JVector

Tangent1

Tangent (normalized) to the contact Normal in the direction of the relative movement of both bodies, at the time when the contact is created.

[ReferenceFrame(ReferenceFrame.World)]
public readonly JVector Tangent1 { get; }

Property Value

JVector

Tangent2

A second tangent forming an orthonormal basis with Normal and Tangent1.

[ReferenceFrame(ReferenceFrame.World)]
public readonly JVector Tangent2 { get; }

Property Value

JVector

TangentImpulse1

The impulse applied in the first tangent direction which has been used to solve the contact.

public readonly float TangentImpulse1 { get; }

Property Value

float

TangentImpulse2

The impulse applied in the second tangent direction which has been used to solve the contact.

public readonly float TangentImpulse2 { get; }

Property Value

float

Methods

Initialize(ref RigidBodyData, ref RigidBodyData, in JVector, in JVector, in JVector, bool, float)

public void Initialize(ref RigidBodyData b1, ref RigidBodyData b2, in JVector point1, in JVector point2, in JVector n, bool newContact, float restitution)

Parameters

b1 RigidBodyData
b2 RigidBodyData
point1 JVector
point2 JVector
n JVector
newContact bool
restitution float

Iterate(ContactData*, bool)

public void Iterate(ContactData* cd, bool applyBias)

Parameters

cd ContactData*
applyBias bool

IterateAccelerated(ContactData*, bool)

public void IterateAccelerated(ContactData* cd, bool applyBias)

Parameters

cd ContactData*
applyBias bool

PrepareForIteration(ContactData*, float)

public void PrepareForIteration(ContactData* cd, float idt)

Parameters

cd ContactData*
idt float

PrepareForIterationAccelerated(ContactData*, float)

public void PrepareForIterationAccelerated(ContactData* cd, float idt)

Parameters

cd ContactData*
idt float

UpdatePosition(ContactData*)

public readonly bool UpdatePosition(ContactData* cd)

Parameters

cd ContactData*

Returns

bool