PlayRho  1.1.0
An Interactive Real-Time-Oriented C++ Physics Engine & Library
playrho::ToiConf Struct Reference

Time of impact configuration. More...

#include <TimeOfImpact.hpp>

Collaboration diagram for playrho::ToiConf:
[legend]

Public Types

using root_iter_type = std::remove_const< decltype(DefaultMaxToiRootIters)>::type
 Root iteration type.
 
using toi_iter_type = std::remove_const< decltype(DefaultMaxToiIters)>::type
 TOI iteration type.
 
using dist_iter_type = std::remove_const< decltype(DefaultMaxDistanceIters)>::type
 Distance iteration type.
 

Public Member Functions

constexpr ToiConfUseTimeMax (Real value) noexcept
 Uses the given time max value.
 
constexpr ToiConfUseTargetDepth (Length value) noexcept
 Uses the given target depth value.
 
constexpr ToiConfUseTolerance (NonNegative< Length > value) noexcept
 Uses the given tolerance value.
 
constexpr ToiConfUseMaxRootIters (root_iter_type value) noexcept
 Uses the given max root iterations value.
 
constexpr ToiConfUseMaxToiIters (toi_iter_type value) noexcept
 Uses the given max TOI iterations value.
 
constexpr ToiConfUseMaxDistIters (dist_iter_type value) noexcept
 Uses the given max distance iterations value.
 

Public Attributes

Real tMax = 1
 T-Max.
 
Length targetDepth = DefaultLinearSlop * Real{3}
 Targeted depth of impact. More...
 
NonNegative< Lengthtolerance = NonNegative<Length>{DefaultLinearSlop / Real{4}}
 Tolerance. More...
 
root_iter_type maxRootIters = DefaultMaxToiRootIters
 Maximum number of root finder iterations. More...
 
toi_iter_type maxToiIters = DefaultMaxToiIters
 Max time of impact iterations.
 
dist_iter_type maxDistIters = DefaultMaxDistanceIters
 Max distance iterations.
 

Related Functions

(Note that these are not member functions.)

constexpr auto GetDefaultToiConf ()
 Gets the default time of impact configuration.
 

Detailed Description

Time of impact configuration.

These parameters effect time of impact calculations by limiting the definitions of time and impact. If total radius is expressed as TR, and target depth as TD, then: the max target distance is (TR - TD) + tolerance; and the min target distance is (TR - TD) - tolerance.

Note
Max target distance must be less than or equal to the total radius as the target range has to be chosen such that the contact manifold will have a greater than zero contact point count.
A max target of totalRadius - DefaultLinearSlop * x where x is <= 1 is increasingly slower as x goes below 1.
Min target distance needs to be significantly less than the max target distance and significantly more than 0.
See also
SolvePositionConstraints
SolveTOIPositionConstraints

Member Data Documentation

◆ maxRootIters

root_iter_type playrho::ToiConf::maxRootIters = DefaultMaxToiRootIters

Maximum number of root finder iterations.

This is the maximum number of iterations for calculating the 1-dimensional root of f(t) - (totalRadius - targetDepth) < tolerance where f(t) is the distance between the shapes at time t, and totalRadius is the sum of the vertex radiuses of 2 distance proxies.

Note
This value never needs to be more than the number of iterations needed to achieve full machine precision.

Referenced by playrho::d2::GetToiViaSat().

◆ targetDepth

Length playrho::ToiConf::targetDepth = DefaultLinearSlop * Real{3}

Targeted depth of impact.

Note
Value must be less than twice the minimum vertex radius of any shape.

Referenced by playrho::d2::GetToiViaSat().

◆ tolerance

NonNegative<Length> playrho::ToiConf::tolerance = NonNegative<Length>{DefaultLinearSlop / Real{4}}

Tolerance.

Provides a +/- range from the target depth that defines a minimum and maximum target depth within which inclusively, time of impact calculating code is expected to return a "touching" status.

Note
Use the default value unless you really know what you're doing.
Use 0 to require a TOI at exactly the target depth. This is ill-advised.

Referenced by playrho::d2::GetToiViaSat().


The documentation for this struct was generated from the following file: