Пример #1
0
        private static bool ComputeCylinderIntersection
        (
            Vector3 localFixedPoint,
            Vector3 localMovingPoint,
            float combinedRadius,
            ref Vector3 intersectionPoint
        )
        {
            float t1;
            float t2;
            var   projectedFixedPoint  = new Vector2(localFixedPoint.x, localFixedPoint.z);
            var   projectedMovingPoint = new Vector2(localMovingPoint.x, localMovingPoint.z);

            if (!SpringSphereCollider.FindLineSegmentIntersection(
                    new Vector2(0f, 0f),
                    combinedRadius,
                    projectedFixedPoint,
                    projectedMovingPoint,
                    out t1,
                    out t2) ||
                t1 >= 1f ||
                t2 <= 0f)
            {
                return(false);
            }

            intersectionPoint = localFixedPoint + t1 * (localMovingPoint - localFixedPoint);
            return(true);
        }