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


#####
Plane
#####

.. js:class:: common.Plane

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



.. rst-class:: kind-group kind-constructors

.. rubric:: Constructors
   :class: kind-group-title


.. js:method:: common.Plane.constructor

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



.. rst-class:: kind-group kind-properties

.. rubric:: Properties
   :class: kind-group-title


.. js:data:: common.Plane.d

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



.. js:data:: common.Plane.normal

      .. rst-class:: sig-pretty-signature
      
         | normal: :js:class:`Point3 <common.Point3>`
      



.. rst-class:: kind-group kind-methods

.. rubric:: Methods
   :class: kind-group-title


.. js:method:: static common.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 <common.Plane>`
      
      **Parameters**
      
      
         **a**\ : *number*
      
         **b**\ : *number*
      
         **c**\ : *number*
      
         **d**\ : *number*
      
      
      **Returns**\ : :js:class:`Plane <common.Plane>`
      



.. js:method:: static common.Plane.createFromPointAndNormal

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



.. js:method:: static common.Plane.createFromPoints

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



.. js:method:: common.Plane.assign

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



.. js:method:: common.Plane.copy

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



.. js:method:: common.Plane.determineSide

      .. rst-class:: sig-pretty-signature
      
         | determineSide(**p**\ : :js:class:`Point3 <common.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 <common.Point3>`
      
      
            The point to test.
      
      
      
      **Returns**\ : *boolean*
      



.. js:method:: common.Plane.distanceToPoint

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



.. js:method:: common.Plane.equals

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



.. js:method:: common.Plane.getCoefficients

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



.. js:method:: common.Plane.intersectsRay

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



.. js:method:: common.Plane.rayIntersection

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



.. js:method:: common.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:: common.Plane.setFromPointAndNormal

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



.. js:method:: common.Plane.setFromPoints

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




