code: function(matrix, x0, y0)
      {
          var epsilon = 1e-8;
          var i;
          // Vertices of the quad with transform matrix applied
          var points = [];
          for (i = 0; i < 4; ++i)
              points[i] = WebInspector.Geometry.multiplyVectorByMatrixAndNormalize(new WebInspector.Geometry.Vector(this.vertices[i * 3], this.vertices[i * 3 + 1], this.vertices[i * 3 + 2]), matrix);
          // Calculating quad plane normal
          var normal = WebInspector.Geometry.crossProduct(WebInspector.Geometry.subtract(points[1], points[0]), WebInspector.Geometry.subtract(points[2], points[1]));
          // General form of the equation of the quad plane: A * x + B * y + C * z + D = 0
          var A = normal.x;
          var B = normal.y;
          var C = normal.z;
          var D = -(A * points[0].x + B * points[0].y + C * points[0].z);
          // Finding t from the equation
          var t = -(D + A * x0 + B * y0) / C;
          // Point of the intersection
          var pt = new WebInspector.Geometry.Vector(x0, y0, t);
          // Vectors from the intersection point to vertices of the quad
          var tVects = points.map(WebInspector.Geometry.subtract.bind(null, pt));
          // Intersection point lies inside of the polygon if scalar products of normal of the plane and
          // cross products of successive tVects are all nonstrictly above or all nonstrictly below zero
          for (i = 0; i < tVects.length; ++i) {
              var product = WebInspector.Geometry.scalarProduct(normal, WebInspector.Geometry.crossProduct(tVects[i], tVects[(i + 1) % tVects.length]));
              if (product < 0)
                  return undefined;
          }
          return t;
      }
docs: Intersects quad with given transform matrix and line l(t) = (x0, y0, t)
  @param {!CSSMatrix} matrix
  @param {number} x0
  @param {number} y0
  @return {(number|undefined)}