< Summary

Line coverage
100%
Covered lines: 381
Uncovered lines: 0
Coverable lines: 381
Total lines: 578
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Response/Exact/ExactLever3D.Arithmetic.cs

#LineLine coverage
 1//=======================================================================
 2// ExactLever3D.Arithmetic.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2026-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using FixedMathSharp;
 9using FixedMathSharp.Geometry;
 10
 11namespace Gravitas.CollisionHandling;
 12
 13/// <content>
 14/// Contains exact point-velocity, quadratic-form, and transformed-cross
 15/// arithmetic for rigid-body contact levers.
 16/// </content>
 17internal readonly partial struct ExactLever3D
 18{
 19    internal static void GetRelativePointVelocityRatio(
 20        Vector3d firstLinearVelocity,
 21        Vector3d firstAngularVelocity,
 22        in ExactLever3D firstLever,
 23        Vector3d secondLinearVelocity,
 24        Vector3d secondAngularVelocity,
 25        in ExactLever3D secondLever,
 26        Vector3d projectionAxis,
 27        out Signed832 numerator,
 28        out Signed832 denominator)
 29    {
 30        // Normalized anchors bound each lever denominator below the Signed320 width.
 270731        Signed320 firstDenominator =
 270732            Signed320.NarrowValue(firstLever.Denominator);
 270733        Signed320 secondDenominator =
 270734            Signed320.NarrowValue(secondLever.Denominator);
 270735        Signed704 firstAngular =
 270736            GetCrossProductProjectionNumerator(
 270737                firstLever,
 270738                projectionAxis,
 270739                firstAngularVelocity);
 270740        Signed704 secondAngular =
 270741            GetCrossProductProjectionNumerator(
 270742                secondLever,
 270743                projectionAxis,
 270744                secondAngularVelocity);
 270745        Signed192 linear = WideGeometry.GetDifferenceDotProduct3D(
 270746            secondLinearVelocity.X,
 270747            firstLinearVelocity.X,
 270748            secondLinearVelocity.Y,
 270749            firstLinearVelocity.Y,
 270750            secondLinearVelocity.Z,
 270751            firstLinearVelocity.Z,
 270752            projectionAxis.X,
 270753            Fixed64.Zero,
 270754            projectionAxis.Y,
 270755            Fixed64.Zero,
 270756            projectionAxis.Z,
 270757            Fixed64.Zero);
 270758        Signed576 commonLeverDenominator =
 270759            WideArithmetic.MultiplySigned320(
 270760                firstDenominator,
 270761                secondDenominator);
 270762        Signed576 linearAtCommonDenominator =
 270763            WideArithmetic.MultiplySigned576(
 270764                commonLeverDenominator,
 270765                linear,
 270766                Signed192.One);
 270767        numerator = WideArithmetic.AddSigned832(
 270768            Signed832.ExtendValue(linearAtCommonDenominator),
 270769            WideArithmetic.MultiplySigned704ToSigned832(
 270770                secondAngular,
 270771                firstDenominator));
 270772        numerator = WideArithmetic.SubtractSigned832(
 270773            numerator,
 270774            WideArithmetic.MultiplySigned704ToSigned832(
 270775                firstAngular,
 270776                secondDenominator));
 270777        Signed576 narrowDenominator = WideArithmetic.MultiplySigned576(
 270778            commonLeverDenominator,
 270779            Signed192.One,
 270780            Signed192.One);
 270781        denominator = Signed832.ExtendValue(narrowDenominator);
 270782    }
 83
 84    internal static void GetCrossProductQuadraticFormRatio(
 85        in ExactLever3D lever,
 86        Vector3d crossVector,
 87        Fixed3x3 transform,
 88        out Signed832 numerator,
 89        out Signed832 denominator)
 90    {
 541491        GetCrossProductNumerators(
 541492            lever.XNumerator,
 541493            lever.YNumerator,
 541494            lever.ZNumerator,
 541495            crossVector,
 541496            out Signed704 crossX,
 541497            out Signed704 crossY,
 541498            out Signed704 crossZ);
 99
 5414100        numerator = GetQuadraticTerm(
 5414101            crossX, crossX, transform.M11);
 5414102        numerator = WideArithmetic.AddSigned832(
 5414103            numerator,
 5414104            GetQuadraticTerm(crossX, crossY, transform.M21));
 5414105        numerator = WideArithmetic.AddSigned832(
 5414106            numerator,
 5414107            GetQuadraticTerm(crossX, crossZ, transform.M31));
 5414108        numerator = WideArithmetic.AddSigned832(
 5414109            numerator,
 5414110            GetQuadraticTerm(crossY, crossX, transform.M12));
 5414111        numerator = WideArithmetic.AddSigned832(
 5414112            numerator,
 5414113            GetQuadraticTerm(crossY, crossY, transform.M22));
 5414114        numerator = WideArithmetic.AddSigned832(
 5414115            numerator,
 5414116            GetQuadraticTerm(crossY, crossZ, transform.M32));
 5414117        numerator = WideArithmetic.AddSigned832(
 5414118            numerator,
 5414119            GetQuadraticTerm(crossZ, crossX, transform.M13));
 5414120        numerator = WideArithmetic.AddSigned832(
 5414121            numerator,
 5414122            GetQuadraticTerm(crossZ, crossY, transform.M23));
 5414123        numerator = WideArithmetic.AddSigned832(
 5414124            numerator,
 5414125            GetQuadraticTerm(crossZ, crossZ, transform.M33));
 126
 5414127        denominator = WideArithmetic.MultiplySigned576ToSigned832(
 5414128            lever.Denominator,
 5414129            lever.Denominator);
 130        // A raw quadratic result carries four Q32.32 denominator factors.
 5414131        denominator = WideArithmetic.MultiplySigned832(
 5414132            denominator,
 5414133            Signed192.One);
 5414134        denominator = WideArithmetic.MultiplySigned832(
 5414135            denominator,
 5414136            Signed192.One);
 5414137        denominator = WideArithmetic.MultiplySigned832(
 5414138            denominator,
 5414139            Signed192.One);
 5414140        denominator = WideArithmetic.MultiplySigned832(
 5414141            denominator,
 5414142            Signed192.One);
 5414143    }
 144
 145    internal static bool TryGetTransformedScaledCrossProduct(
 146        in ExactLever3D lever,
 147        Vector3d crossVector,
 148        Fixed3x3 transform,
 149        Fixed64 firstMultiplier,
 150        Fixed64 secondMultiplier,
 151        Fixed64 divisor,
 152        out Vector3d result)
 153    {
 95154        GetTransformedCrossProduct(
 95155            lever,
 95156            crossVector,
 95157            transform,
 95158            out Signed832 transformedX,
 95159            out Signed832 transformedY,
 95160            out Signed832 transformedZ);
 95161        Signed832 denominator = GetTransformedCrossProductDenominator(
 95162            lever,
 95163            Signed192.Raw(divisor));
 95164        return TryGetScaledVector(
 95165            transformedX,
 95166            transformedY,
 95167            transformedZ,
 95168            firstMultiplier,
 95169            secondMultiplier,
 95170            denominator,
 95171            out result);
 172    }
 173
 174    internal static bool TryGetTransformedWeightedCrossProduct(
 175        in ExactLever3D lever,
 176        Vector3d first,
 177        Fixed64 firstScale,
 178        Vector3d second,
 179        Fixed64 secondScale,
 180        Vector3d third,
 181        Fixed64 thirdScale,
 182        Fixed3x3 transform,
 183        out Vector3d result)
 184    {
 7185        GetTransformedCrossProduct(
 7186            lever,
 7187            first,
 7188            transform,
 7189            out Signed832 firstX,
 7190            out Signed832 firstY,
 7191            out Signed832 firstZ);
 7192        GetTransformedCrossProduct(
 7193            lever,
 7194            second,
 7195            transform,
 7196            out Signed832 secondX,
 7197            out Signed832 secondY,
 7198            out Signed832 secondZ);
 7199        GetTransformedCrossProduct(
 7200            lever,
 7201            third,
 7202            transform,
 7203            out Signed832 thirdX,
 7204            out Signed832 thirdY,
 7205            out Signed832 thirdZ);
 7206        Signed832 denominator = GetTransformedCrossProductDenominator(
 7207            lever,
 7208            Signed192.One);
 7209        bool representable = TryGetWeightedComponent(
 7210                firstX,
 7211                firstScale,
 7212                secondX,
 7213                secondScale,
 7214                thirdX,
 7215                thirdScale,
 7216                denominator,
 7217                out Fixed64 resultX)
 7218            & TryGetWeightedComponent(
 7219                firstY,
 7220                firstScale,
 7221                secondY,
 7222                secondScale,
 7223                thirdY,
 7224                thirdScale,
 7225                denominator,
 7226                out Fixed64 resultY)
 7227            & TryGetWeightedComponent(
 7228                firstZ,
 7229                firstScale,
 7230                secondZ,
 7231                secondScale,
 7232                thirdZ,
 7233                thirdScale,
 7234                denominator,
 7235                out Fixed64 resultZ);
 7236        result = representable
 7237            ? new Vector3d(resultX, resultY, resultZ)
 7238            : default;
 7239        return representable;
 240    }
 241
 242    internal static void GetTransformedCrossProduct(
 243        in ExactLever3D lever,
 244        Vector3d crossVector,
 245        Fixed3x3 transform,
 246        out Signed832 x,
 247        out Signed832 y,
 248        out Signed832 z)
 249    {
 4480250        GetCrossProductNumerators(
 4480251            lever.XNumerator,
 4480252            lever.YNumerator,
 4480253            lever.ZNumerator,
 4480254            crossVector,
 4480255            out Signed704 crossX,
 4480256            out Signed704 crossY,
 4480257            out Signed704 crossZ);
 4480258        x = TransformCrossProduct(
 4480259            crossX,
 4480260            crossY,
 4480261            crossZ,
 4480262            transform.M11,
 4480263            transform.M21,
 4480264            transform.M31);
 4480265        y = TransformCrossProduct(
 4480266            crossX,
 4480267            crossY,
 4480268            crossZ,
 4480269            transform.M12,
 4480270            transform.M22,
 4480271            transform.M32);
 4480272        z = TransformCrossProduct(
 4480273            crossX,
 4480274            crossY,
 4480275            crossZ,
 4480276            transform.M13,
 4480277            transform.M23,
 4480278            transform.M33);
 4480279    }
 280
 281    private static bool TryGetScaledVector(
 282        Signed832 transformedX,
 283        Signed832 transformedY,
 284        Signed832 transformedZ,
 285        Fixed64 firstMultiplier,
 286        Fixed64 secondMultiplier,
 287        Signed832 denominator,
 288        out Vector3d result)
 289    {
 95290        bool representable = TryGetScaledComponent(
 95291                transformedX,
 95292                firstMultiplier,
 95293                secondMultiplier,
 95294                denominator,
 95295                out Fixed64 resultX)
 95296            & TryGetScaledComponent(
 95297                transformedY,
 95298                firstMultiplier,
 95299                secondMultiplier,
 95300                denominator,
 95301                out Fixed64 resultY)
 95302            & TryGetScaledComponent(
 95303                transformedZ,
 95304                firstMultiplier,
 95305                secondMultiplier,
 95306                denominator,
 95307                out Fixed64 resultZ);
 95308        result = representable
 95309            ? new Vector3d(resultX, resultY, resultZ)
 95310            : default;
 95311        return representable;
 312    }
 313
 314    private static void GetRawCrossProduct(
 315        Vector3d first,
 316        Vector3d second,
 317        out Signed320 x,
 318        out Signed320 y,
 319        out Signed320 z)
 320    {
 5414321        x = WideArithmetic.SubtractSigned320(
 5414322            WideArithmetic.MultiplySigned192(
 5414323                Signed192.Raw(first.Y),
 5414324                Signed192.Raw(second.Z)),
 5414325            WideArithmetic.MultiplySigned192(
 5414326                Signed192.Raw(first.Z),
 5414327                Signed192.Raw(second.Y)));
 5414328        y = WideArithmetic.SubtractSigned320(
 5414329            WideArithmetic.MultiplySigned192(
 5414330                Signed192.Raw(first.Z),
 5414331                Signed192.Raw(second.X)),
 5414332            WideArithmetic.MultiplySigned192(
 5414333                Signed192.Raw(first.X),
 5414334                Signed192.Raw(second.Z)));
 5414335        z = WideArithmetic.SubtractSigned320(
 5414336            WideArithmetic.MultiplySigned192(
 5414337                Signed192.Raw(first.X),
 5414338                Signed192.Raw(second.Y)),
 5414339            WideArithmetic.MultiplySigned192(
 5414340                Signed192.Raw(first.Y),
 5414341                Signed192.Raw(second.X)));
 5414342    }
 343
 344    private static Signed704 GetCrossProductProjectionNumerator(
 345        in ExactLever3D lever,
 346        Vector3d crossVector,
 347        Vector3d projectionVector)
 348    {
 5414349        GetRawCrossProduct(
 5414350            crossVector,
 5414351            projectionVector,
 5414352            out Signed320 coefficientX,
 5414353            out Signed320 coefficientY,
 5414354            out Signed320 coefficientZ);
 5414355        return WideArithmetic.AddSigned704(
 5414356            WideArithmetic.AddSigned704(
 5414357                WideArithmetic.MultiplySigned576ToSigned704(
 5414358                    lever.XNumerator,
 5414359                    coefficientX),
 5414360                WideArithmetic.MultiplySigned576ToSigned704(
 5414361                    lever.YNumerator,
 5414362                    coefficientY)),
 5414363            WideArithmetic.MultiplySigned576ToSigned704(
 5414364                lever.ZNumerator,
 5414365                coefficientZ));
 366    }
 367
 368    private static void GetCrossProductNumerators(
 369        Signed576 x,
 370        Signed576 y,
 371        Signed576 z,
 372        Vector3d vector,
 373        out Signed704 crossX,
 374        out Signed704 crossY,
 375        out Signed704 crossZ)
 376    {
 9894377        Signed320 vectorX =
 9894378            Signed320.ExtendValue(Signed192.Raw(vector.X));
 9894379        Signed320 vectorY =
 9894380            Signed320.ExtendValue(Signed192.Raw(vector.Y));
 9894381        Signed320 vectorZ =
 9894382            Signed320.ExtendValue(Signed192.Raw(vector.Z));
 9894383        crossX = WideArithmetic.SubtractSigned704(
 9894384            WideArithmetic.MultiplySigned576ToSigned704(y, vectorZ),
 9894385            WideArithmetic.MultiplySigned576ToSigned704(z, vectorY));
 9894386        crossY = WideArithmetic.SubtractSigned704(
 9894387            WideArithmetic.MultiplySigned576ToSigned704(z, vectorX),
 9894388            WideArithmetic.MultiplySigned576ToSigned704(x, vectorZ));
 9894389        crossZ = WideArithmetic.SubtractSigned704(
 9894390            WideArithmetic.MultiplySigned576ToSigned704(x, vectorY),
 9894391            WideArithmetic.MultiplySigned576ToSigned704(y, vectorX));
 9894392    }
 393
 394    private static Signed832 TransformCrossProduct(
 395        Signed704 x,
 396        Signed704 y,
 397        Signed704 z,
 398        Fixed64 coefficientX,
 399        Fixed64 coefficientY,
 400        Fixed64 coefficientZ) =>
 13440401        WideArithmetic.AddSigned832(
 13440402            WideArithmetic.AddSigned832(
 13440403                WideArithmetic.MultiplySigned704ToSigned832(
 13440404                    x,
 13440405                    Signed192.Raw(coefficientX)),
 13440406                WideArithmetic.MultiplySigned704ToSigned832(
 13440407                    y,
 13440408                    Signed192.Raw(coefficientY))),
 13440409            WideArithmetic.MultiplySigned704ToSigned832(
 13440410                z,
 13440411                Signed192.Raw(coefficientZ)));
 412
 413    private static Signed832 GetTransformedCrossProductDenominator(
 414        in ExactLever3D lever,
 415        Signed192 divisor)
 416    {
 102417        Signed320 fixedScaleSquared = WideArithmetic.MultiplySigned192(
 102418            Signed192.One,
 102419            Signed192.One);
 102420        Signed704 transformedDenominator =
 102421            WideArithmetic.MultiplySigned576ToSigned704(
 102422                lever.Denominator,
 102423                fixedScaleSquared);
 102424        Signed320 scaleAndDivisor = WideArithmetic.MultiplySigned192(
 102425            Signed192.One,
 102426            divisor);
 102427        return WideArithmetic.MultiplySigned704ToSigned832(
 102428            transformedDenominator,
 102429            scaleAndDivisor);
 430    }
 431
 432    private static bool TryGetScaledComponent(
 433        Signed832 value,
 434        Fixed64 firstMultiplier,
 435        Fixed64 secondMultiplier,
 436        Signed832 denominator,
 437        out Fixed64 result) =>
 285438        Fixed64.TryGetSignedRawRatio(
 285439            WideArithmetic.MultiplySigned832(
 285440                WideArithmetic.MultiplySigned832(
 285441                    value,
 285442                    Signed192.Raw(firstMultiplier)),
 285443                Signed192.Raw(secondMultiplier)),
 285444            denominator,
 285445            0,
 285446            out result);
 447
 448    private static bool TryGetWeightedComponent(
 449        Signed832 first,
 450        Fixed64 firstScale,
 451        Signed832 second,
 452        Fixed64 secondScale,
 453        Signed832 third,
 454        Fixed64 thirdScale,
 455        Signed832 denominator,
 456        out Fixed64 result)
 457    {
 21458        Signed832 numerator = WideArithmetic.AddSigned832(
 21459            WideArithmetic.AddSigned832(
 21460                WideArithmetic.MultiplySigned832(
 21461                    first,
 21462                    Signed192.Raw(firstScale)),
 21463                WideArithmetic.MultiplySigned832(
 21464                    second,
 21465                    Signed192.Raw(secondScale))),
 21466            WideArithmetic.MultiplySigned832(
 21467                third,
 21468                Signed192.Raw(thirdScale)));
 21469        return Fixed64.TryGetSignedRawRatio(
 21470            WideArithmetic.MultiplySigned832(
 21471                numerator,
 21472                Signed192.One),
 21473            denominator,
 21474            0,
 21475            out result);
 476    }
 477
 478    private static Signed832 GetQuadraticTerm(
 479        Signed704 left,
 480        Signed704 right,
 481        Fixed64 coefficient)
 482    {
 48726483        if (left.IsZero | right.IsZero | coefficient == Fixed64.Zero)
 43453484            return default;
 485
 5273486        return WideArithmetic.MultiplySigned704ToSigned832(
 5273487            left,
 5273488            right,
 5273489            Signed192.Raw(coefficient));
 490    }
 491}

/home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Response/Exact/ExactLever3D.cs

#LineLine coverage
 1//=======================================================================
 2// ExactLever3D.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2026-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using FixedMathSharp;
 9using FixedMathSharp.Geometry;
 10
 11namespace Gravitas.CollisionHandling;
 12
 13/// <summary>
 14/// Represents a rigid-body contact lever without narrowing its point-anchor
 15/// displacement to the Q32.32 scalar domain.
 16/// </summary>
 17internal readonly partial struct ExactLever3D
 18{
 19    private ExactLever3D(
 20        Signed576 xNumerator,
 21        Signed576 yNumerator,
 22        Signed576 zNumerator,
 23        Signed576 denominator)
 24    {
 429625        XNumerator = xNumerator;
 429626        YNumerator = yNumerator;
 429627        ZNumerator = zNumerator;
 429628        Denominator = denominator;
 429629    }
 30
 31    internal Signed576 XNumerator { get; }
 32
 33    internal Signed576 YNumerator { get; }
 34
 35    internal Signed576 ZNumerator { get; }
 36
 37    internal Signed576 Denominator { get; }
 38
 39    internal static ExactLever3D Create(
 40        in FixedPointAnchor point,
 41        in FixedPointAnchor center)
 42    {
 410443        WidePointAnchor3d.GetExactRelativeOffsetRatio(
 410444            point.Origin,
 410445            point.Rotation,
 410446            point.LocalPoint,
 410447            point.LocalDisplacement,
 410448            point.LocalTranslation,
 410449            point.ExactLocalTerm,
 410450            center.Origin,
 410451            center.Rotation,
 410452            center.LocalPoint,
 410453            center.LocalDisplacement,
 410454            center.LocalTranslation,
 410455            center.ExactLocalTerm,
 410456            out Signed576 x,
 410457            out Signed576 y,
 410458            out Signed576 z,
 410459            out Signed576 denominator);
 410460        return new ExactLever3D(x, y, z, denominator);
 61    }
 62
 63    internal static ExactLever3D CreateXZ(
 64        in FixedPointAnchor2d point,
 65        in FixedPointAnchor2d center)
 66    {
 19267        WidePointAnchor2d.GetExactRelativeOffsetRatio(
 19268            point.Origin,
 19269            point.LocalPoint,
 19270            point.LocalDisplacement,
 19271            point.ExactLocalTerm,
 19272            point.Rotation,
 19273            center.Origin,
 19274            center.LocalPoint,
 19275            center.LocalDisplacement,
 19276            center.ExactLocalTerm,
 19277            center.Rotation,
 19278            out Signed320 x,
 19279            out Signed320 z,
 19280            out Signed320 denominator);
 19281        return new ExactLever3D(
 19282            Signed576.ExtendValue(x),
 19283            default,
 19284            Signed576.ExtendValue(z),
 19285            Signed576.ExtendValue(denominator));
 86    }
 87}

Methods/Properties

GetRelativePointVelocityRatio(FixedMathSharp.Vector3d,FixedMathSharp.Vector3d,Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Vector3d,Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Signed832&,FixedMathSharp.Signed832&)
GetCrossProductQuadraticFormRatio(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Fixed3x3,FixedMathSharp.Signed832&,FixedMathSharp.Signed832&)
TryGetTransformedScaledCrossProduct(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Fixed3x3,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64,FixedMathSharp.Vector3d&)
TryGetTransformedWeightedCrossProduct(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Fixed64,FixedMathSharp.Vector3d,FixedMathSharp.Fixed64,FixedMathSharp.Vector3d,FixedMathSharp.Fixed64,FixedMathSharp.Fixed3x3,FixedMathSharp.Vector3d&)
GetTransformedCrossProduct(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Fixed3x3,FixedMathSharp.Signed832&,FixedMathSharp.Signed832&,FixedMathSharp.Signed832&)
TryGetScaledVector(FixedMathSharp.Signed832,FixedMathSharp.Signed832,FixedMathSharp.Signed832,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64,FixedMathSharp.Signed832,FixedMathSharp.Vector3d&)
GetRawCrossProduct(FixedMathSharp.Vector3d,FixedMathSharp.Vector3d,FixedMathSharp.Signed320&,FixedMathSharp.Signed320&,FixedMathSharp.Signed320&)
GetCrossProductProjectionNumerator(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Vector3d,FixedMathSharp.Vector3d)
GetCrossProductNumerators(FixedMathSharp.Signed576,FixedMathSharp.Signed576,FixedMathSharp.Signed576,FixedMathSharp.Vector3d,FixedMathSharp.Signed704&,FixedMathSharp.Signed704&,FixedMathSharp.Signed704&)
TransformCrossProduct(FixedMathSharp.Signed704,FixedMathSharp.Signed704,FixedMathSharp.Signed704,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64)
GetTransformedCrossProductDenominator(Gravitas.CollisionHandling.ExactLever3D&,FixedMathSharp.Signed192)
TryGetScaledComponent(FixedMathSharp.Signed832,FixedMathSharp.Fixed64,FixedMathSharp.Fixed64,FixedMathSharp.Signed832,FixedMathSharp.Fixed64&)
TryGetWeightedComponent(FixedMathSharp.Signed832,FixedMathSharp.Fixed64,FixedMathSharp.Signed832,FixedMathSharp.Fixed64,FixedMathSharp.Signed832,FixedMathSharp.Fixed64,FixedMathSharp.Signed832,FixedMathSharp.Fixed64&)
GetQuadraticTerm(FixedMathSharp.Signed704,FixedMathSharp.Signed704,FixedMathSharp.Fixed64)
.ctor(FixedMathSharp.Signed576,FixedMathSharp.Signed576,FixedMathSharp.Signed576,FixedMathSharp.Signed576)
Create(FixedMathSharp.Geometry.FixedPointAnchor&,FixedMathSharp.Geometry.FixedPointAnchor&)
CreateXZ(FixedMathSharp.Geometry.FixedPointAnchor2d&,FixedMathSharp.Geometry.FixedPointAnchor2d&)