class_docstr: A plane is a flat, two-dimensional surface. A plane is the two-dimensional
  analogue of a point (zero-dimensions), a line (one-dimension) and a solid
  (three-dimensions). A plane can generally be constructed by two types of
  inputs. They are:
  - three non-collinear points
  - a point and the plane's normal vector
  
  Attributes
  ==========
  
  p1
  normal_vector
  
  Examples
  ========
  
  >>> from sympy import Plane, Point3D
  >>> Plane(Point3D(1, 1, 1), Point3D(2, 3, 4), Point3D(2, 2, 2))
  Plane(Point3D(1, 1, 1), (-1, 2, -1))
  >>> Plane((1, 1, 1), (2, 3, 4), (2, 2, 2))
  Plane(Point3D(1, 1, 1), (-1, 2, -1))
  >>> Plane(Point3D(1, 1, 1), normal_vector=(1,4,7))
  Plane(Point3D(1, 1, 1), (1, 4, 7))
docstr: The equation of the Plane.
  
  Examples
  ========
  
  >>> from sympy import Point3D, Plane
  >>> a = Plane(Point3D(1, 1, 2), Point3D(2, 4, 7), Point3D(3, 5, 1))
  >>> a.equation()
  -23*x + 11*y - 2*z + 16
  >>> a = Plane(Point3D(1, 4, 2), normal_vector=(6, 6, 6))
  >>> a.equation()
  6*x + 6*y + 6*z - 42
code: def equation(self, x=None, y=None, z=None):
      """The equation of the Plane.
  
      Examples
      ========
  
      >>> from sympy import Point3D, Plane
      >>> a = Plane(Point3D(1, 1, 2), Point3D(2, 4, 7), Point3D(3, 5, 1))
      >>> a.equation()
      -23*x + 11*y - 2*z + 16
      >>> a = Plane(Point3D(1, 4, 2), normal_vector=(6, 6, 6))
      >>> a.equation()
      6*x + 6*y + 6*z - 42
  
      """
      x, y, z = [
          i if i else Symbol(j, real=True)
          for i, j in zip((x, y, z), "xyz")
      ]
      a = Point3D(x, y, z)
      b = self.p1.direction_ratio(a)
      c = self.normal_vector
      return sum(i * j for i, j in zip(b, c))
  
imports: from sympy.core import Dummy, Rational, S, Symbol
  from sympy.core.symbol import _symbol
  from sympy.functions.elementary.trigonometric import cos, sin, acos, asin, sqrt
  from .entity import GeometryEntity
  from .line import Line, Ray, Segment, Line3D, LinearEntity, LinearEntity3D, Ray3D, Segment3D
  from .point import Point, Point3D
  from sympy.matrices import Matrix
  from sympy.polys.polytools import cancel
  from sympy.solvers import solve, linsolve
  from sympy.utilities.iterables import uniq, is_sequence
  from sympy.utilities.misc import filldedent, func_name, Undecidable
  from mpmath.libmp.libmpf import prec_to_dps
  import random
label_desc: Use image node_id 9 for calling the Plane obj's underlying member method code with example usage: obj.equation(x, y, z) and returns: sum