<a id="e3d-base-types"></a>

# Base Types

This section presents the fundamental types of **Easy3D** to represent objects in a 3D space.

<a id="e3d-point"></a>

## E3DPoint

The object [`E3DPoint`](../../../doxygen_cpp/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>.NET</sub>](../../../doxygen_cs/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPoint.html) represents points in a 3D space. An [`E3DPoint`](../../../doxygen_cpp/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>.NET</sub>](../../../doxygen_cs/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPoint.html) is the basic container for data processing in a 3D space.

* A [`E3DPoint`](../../../doxygen_cpp/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>.NET</sub>](../../../doxygen_cs/structeVision_1_1Easy3D_1_1E3DPoint.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPoint.html) is defined by its X, Y and Z coordinates.
* Use the function [`E3DPoint::DistanceTo`](../../../doxygen_cpp/structeVision_1_1Easy3D_1_1E3DPoint.html#af92120de9620917814cc4f05877e215b) [<sub>.NET</sub>](../../../doxygen_cs/structeVision_1_1Easy3D_1_1E3DPoint.html#a5ac835dbb23e0b255ad12f97960a5ff7) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPoint.html#ae1c2f6e819089f6adc80ef388a893e59) to compute distances between points
* You can combine points to form point clouds (see below).

<a id="e3d-line"></a>

## E3DLine

The object [`E3DLine`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DLine.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DLine.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DLine.html) represents lines in a 3D space.

* An [`E3DLine`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DLine.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DLine.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DLine.html) is defined by two points.

<a id="e3d-plane"></a>

## E3DPlane

The object [`E3DPlane`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DPlane.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DPlane.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPlane.html) represents planes in a 3D space.

* An [`E3DPlane`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DPlane.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DPlane.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPlane.html) is defined by its normal vector and the signed distance to the origin of the axes.
* Use the function [`E3DPlane::DistanceTo`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DPlane.html#a874afc8c57b9784002d1021b69fca542) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DPlane.html#ada5b28fdaeba570a317ec581796df1d2) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPlane.html#acd05b1d6a57db89ed9096a91709bb09a) to compute the distance to any point.
* Use the function [`E3DPlane::ProjectPoint`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DPlane.html#a05ce3eb8ad12e776eac0d09d9dc51b1c) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DPlane.html#a8815a44706ea5bcfefcbccaa706e50fc) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPlane.html#a5bd3c1a4cac5cd7abce0c431fb4f5c1d) to project points onto planes.
* Use the function [`E3DPlane::Transform`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DPlane.html#ac690613a83e9eab4aa7ac73f947ec746) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DPlane.html#a176b56acf7ffac277c248361eef97621) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DPlane.html#a0ce37c3297e69785706d7aecb19f8beb) with transformation matrices to rotate and translate planes.

<a id="e3d-sphere"></a>

## E3DSphere

The object [`E3DSphere`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DSphere.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DSphere.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DSphere.html) represents spheres in a 3D space.

* An [`E3DSphere`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DSphere.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DSphere.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DSphere.html) is defined by its center point and its radius.
* Use the function [`E3DSphere::DistanceTo`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DSphere.html#a49e95e85e37c038153372f7e31e3d8e6) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DSphere.html#a8814cb4e2e0d22923ea9a6fb5ff38a02) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DSphere.html#ade68c6b0ae98c0939198ab3e010fea02) to compute the distance to any point.
* Use the function [`E3DSphere::Transform`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DSphere.html#a35600377665eb77abb4cda7c0a601ec9) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DSphere.html#af386b148235baaf7601e61f3ee11ec3e) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DSphere.html#ab37030fb3c2e574a03ea773619db238e) with transformation matrices to rotate and translate spheres.

<a id="e3d-box"></a>

## E3DBox

An [`E3DBox`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DBox.html) is a rectangular parallelepiped in a 3D space. It can have any orientation and be centered on any point in the 3D space.

* An [`E3DBox`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DBox.html) is defined by a center point, 3 axes and the extension of the box along each axis.
* Use the function [`E3DBox::Transform`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DBox.html#a60a2b38b6861f679a8853bfb09987991) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DBox.html#a456131f8b80cd9638b010472d921f365) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DBox.html#ad3a2bd86781f718a943ff4aea4921c2f) with transformation matrices to rotate and translate boxes.

<a id="e3d-object"></a>

## E3DObject

In **eVision**, an [`E3DObject`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DObject.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DObject.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DObject.html) is a geometric representation of a set of 3D points.

* Use the [`E3DObject`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DObject.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DObject.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DObject.html) to get the characteristics such as the extend along the 3 axes, the area, the total volume and the average position of the set of points.
* Use the function [`E3DObject::GetBasePlane`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DObject.html#ac82f643ed05930cc9dd3f943200007de) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DObject.html#afa90f8c85c1c4210b4d02406b822e677) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DObject.html#a31f3e79ebdfa0e750ddadbc9bc438aad) to get the fitted plane of the set of points.
* Use the function [`E3DObject::GetBoundingBox`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DObject.html#acc54f5f7fa115035d3f6150293d4f1e6) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DObject.html#a2d96d7f6da605f0acac50d4c0dede238) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DObject.html#a2caf4af475ec74c43059ca954eabc508) to get the bounding box, represented by a [`E3DBox`](../../../doxygen_cpp/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1Easy3D_1_1E3DBox.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1Easy3D_1_1E3DBox.html) enclosing the set of points.
