.. role:: clio-static
   :class: clio-flag clio-flag-static


#####
Plane
#####

.. js:class:: Plane

   Object representing a Plane.
   
   
   Index
   =====
   
   .. rubric:: Constructors
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:func:`~Plane.constructor`
   
   .. rubric:: Properties
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:data:`~Plane.d`
   * :js:data:`~Plane.normal`
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~Plane.assign`
   * :js:meth:`~Plane.copy`
   * :js:meth:`~Plane.determineSide`
   * :js:meth:`~Plane.distanceToPoint`
   * :js:meth:`~Plane.equals`
   * :js:meth:`~Plane.getCoefficients`
   * :js:meth:`~Plane.intersectsRay`
   * :js:meth:`~Plane.rayIntersection`
   * :js:meth:`~Plane.setFromCoefficients`
   * :js:meth:`~Plane.setFromPointAndNormal`
   * :js:meth:`~Plane.setFromPoints`
   * :js:meth:`~static Plane.createFromCoefficients`
   * :js:meth:`~static Plane.createFromPointAndNormal`
   * :js:meth:`~static Plane.createFromPoints`
   
   




Constructors
============

.. js:method:: Plane.constructor

   .. rst-class:: sig-pretty-signature
   
      | Plane(): :js:class:`~Plane`
   
   **Returns**\ : :js:class:`~Plane`
   





Properties
==========

.. js:data:: Plane.d

   .. rst-class:: sig-pretty-signature
   
      | d: *number*
   



.. js:data:: Plane.normal

   .. rst-class:: sig-pretty-signature
   
      | normal: :js:class:`~Point3`
   





Methods
=======

.. js:method:: Plane.assign

   .. rst-class:: sig-pretty-signature
   
      | assign(**plane**\ : :js:class:`~Plane`\ ): *void*
   
   Sets this plane equal to another plane
   
   **Parameters**
   
      **plane**\ : :js:class:`~Plane`
   
         the plane to assign
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Plane.copy

   .. rst-class:: sig-pretty-signature
   
      | copy(): :js:class:`~Plane`
   
   Creates a copy of this plane
   
   **Returns**\ : :js:class:`~Plane`
   
      a copy of this plane object
   
   



.. js:method:: Plane.determineSide

   .. rst-class:: sig-pretty-signature
   
      | determineSide(**p**\ : :js:class:`~Point3`\ ): *boolean*
   
   Returns true if the point is on the side of the plane that the plane's normal is directed. Returns false otherwise.
   
   **Parameters**
   
      **p**\ : :js:class:`~Point3`
   
         The point to test.
   
   
   
   **Returns**\ : *boolean*
   



.. js:method:: Plane.distanceToPoint

   .. rst-class:: sig-pretty-signature
   
      | distanceToPoint(**point**\ : :js:class:`~Point3`\ ): *number*
   
   **Parameters**
   
      **point**\ : :js:class:`~Point3`
   
   
   **Returns**\ : *number*
   



.. js:method:: Plane.equals

   .. rst-class:: sig-pretty-signature
   
      | equals(**plane**\ : :js:class:`~Plane`\ ): *boolean*
   
   Returns true if the normal and d value are the same.
   
   **Parameters**
   
      **plane**\ : :js:class:`~Plane`
   
   
   **Returns**\ : *boolean*
   



.. js:method:: Plane.getCoefficients

   .. rst-class:: sig-pretty-signature
   
      | getCoefficients(): [*number*\ , *number*\ , *number*\ , *number*\ ]
   
   **Returns**\ : [*number*\ , *number*\ , *number*\ , *number*\ ]
   



.. js:method:: Plane.intersectsRay

   .. rst-class:: sig-pretty-signature
   
      | intersectsRay(**ray**\ : :js:class:`~Ray`\ , **outPoint**\ : :js:class:`~Point3`\ ): *boolean*
   
   **Parameters**
   
      **ray**\ : :js:class:`~Ray`
   
      **outPoint**\ : :js:class:`~Point3`
   
   
   **Returns**\ : *boolean*
   



.. js:method:: Plane.rayIntersection

   .. rst-class:: sig-pretty-signature
   
      | rayIntersection(**ray**\ : :js:class:`~Ray`\ ): (*None* \| :js:class:`~Point3`\ )
   
   **Parameters**
   
      **ray**\ : :js:class:`~Ray`
   
   
   **Returns**\ : (*None* \| :js:class:`~Point3`\ )
   



.. js:method:: Plane.setFromCoefficients

   .. rst-class:: sig-pretty-signature
   
      | setFromCoefficients(**a**\ : *number*\ , **b**\ : *number*\ , **c**\ : *number*\ , **d**\ : *number*\ ): *void*
   
   **Parameters**
   
      **a**\ : *number*
   
      **b**\ : *number*
   
      **c**\ : *number*
   
      **d**\ : *number*
   
   
   **Returns**\ : *void*
   



.. js:method:: Plane.setFromPointAndNormal

   .. rst-class:: sig-pretty-signature
   
      | setFromPointAndNormal(**point**\ : :js:class:`~Point3`\ , **normal**\ : :js:class:`~Point3`\ ): *this*
   
   **Parameters**
   
      **point**\ : :js:class:`~Point3`
   
      **normal**\ : :js:class:`~Point3`
   
   
   **Returns**\ : *this*
   



.. js:method:: Plane.setFromPoints

   .. rst-class:: sig-pretty-signature
   
      | setFromPoints(**p1**\ : :js:class:`~Point3`\ , **p2**\ : :js:class:`~Point3`\ , **p3**\ : :js:class:`~Point3`\ ): *void*
   
   Update the plane to pass through the three points
   
   **Parameters**
   
      **p1**\ : :js:class:`~Point3`
   
      **p2**\ : :js:class:`~Point3`
   
      **p3**\ : :js:class:`~Point3`
   
   
   **Returns**\ : *void*
   



.. js:method:: static Plane.createFromCoefficients

   .. rst-class:: clio-flags
   
      :clio-static:`static`
   
   .. rst-class:: sig-pretty-signature
   
      | createFromCoefficients(**a**\ : *number*\ , **b**\ : *number*\ , **c**\ : *number*\ , **d**\ : *number*\ ): :js:class:`~Plane`
   
   **Parameters**
   
      **a**\ : *number*
   
      **b**\ : *number*
   
      **c**\ : *number*
   
      **d**\ : *number*
   
   
   **Returns**\ : :js:class:`~Plane`
   



.. js:method:: static Plane.createFromPointAndNormal

   .. rst-class:: clio-flags
   
      :clio-static:`static`
   
   .. rst-class:: sig-pretty-signature
   
      | createFromPointAndNormal(**point**\ : :js:class:`~Point3`\ , **normal**\ : :js:class:`~Point3`\ ): :js:class:`~Plane`
   
   **Parameters**
   
      **point**\ : :js:class:`~Point3`
   
      **normal**\ : :js:class:`~Point3`
   
   
   **Returns**\ : :js:class:`~Plane`
   



.. js:method:: static Plane.createFromPoints

   .. rst-class:: clio-flags
   
      :clio-static:`static`
   
   .. rst-class:: sig-pretty-signature
   
      | createFromPoints(**p1**\ : :js:class:`~Point3`\ , **p2**\ : :js:class:`~Point3`\ , **p3**\ : :js:class:`~Point3`\ ): :js:class:`~Plane`
   
   **Parameters**
   
      **p1**\ : :js:class:`~Point3`
   
      **p2**\ : :js:class:`~Point3`
   
      **p3**\ : :js:class:`~Point3`
   
   
   **Returns**\ : :js:class:`~Plane`
   





