public static void Intersects(ref Vector2 vertex1, ref Vector2 vertex2, ref Ray2D ray, out float result,
                                      float tolerance = 0.0001f)
        {
            Vector2 tangent, normal;
            float   edgeMagnitude;

            Vector2.Subtract(ref vertex1, ref vertex2, out tangent);
            Vector2Helper.Normalize(ref tangent, out edgeMagnitude, out tangent);
            Vector2Helper.RightPerp(ref tangent, out normal);

            float dir;

            Vector2.Dot(ref normal, ref ray.Direction, out dir);
            if (MathF.Abs(dir) >= tolerance)
            {
                Vector2 originDiff;
                Vector2.Subtract(ref ray.Origin, ref vertex2, out originDiff);
                float actualDistance;
                Vector2.Dot(ref normal, ref originDiff, out actualDistance);
                var distanceFromOrigin = -(actualDistance / dir);
                if (distanceFromOrigin >= 0)
                {
                    Vector2 intersectPos;
                    Vector2.Multiply(ref ray.Direction, distanceFromOrigin, out intersectPos);
                    Vector2.Add(ref intersectPos, ref originDiff, out intersectPos);

                    float distanceFromSecond;
                    Vector2.Dot(ref intersectPos, ref tangent, out distanceFromSecond);

                    if (distanceFromSecond >= 0 && distanceFromSecond <= edgeMagnitude)
                    {   // Hit!
                        result = distanceFromOrigin;
                        return;
                    }
                }
            }
            // No hit.
            result = -1;
        }