microstructpy.geometry.Ellipsoid¶
- class microstructpy.geometry.Ellipsoid(**kwargs)[source]¶
Bases:
objectA 3D Ellipsoid
This class contains the data and functions for a 3D ellispoid. It is defined by its center, axes, and orientation.
If multiple keywords are given for the shape of the ellipsoid, there is no guarantee for which keywords are used.
- Parameters:
a (float) – (optional) First semi-axis of ellipsoid. Default is 1.
b (float) – (optional) Second semi-axis of ellipsoid. Default is 1.
c (float) – (optional) Third semi-axis of ellipsoid. Default is 1.
center (list) – (optional) The ellipsoid center. Defaults to (0, 0, 0).
axes (list) – (optional) List of 3 semi-axes. Defaults to (1, 1, 1).
size (float) – (optional) The diameter of a sphere with equal volume. Defaults to 2.
ratio_ab (float) – (optional) The ratio of a to b.
ratio_ac (float) – (optional) The ratio of a to c.
ratio_bc (float) – (optional) The ratio of b to c.
ratio_ba (float) – (optional) The ratio of b to a.
ratio_ca (float) – (optional) The ratio of c to a.
ratio_cb (float) – (optional) The ratio of c to b.
rot_seq (list) –
(optional) List of rotations (deg). Each element of the list should be an (axis, angle) tuple. The options for the axis are: ‘x’, ‘y’, ‘z’, 1, 2, or 3. For example:
rot_seq = [('x', 10), (2, -20), ('z', 85), ('x', 21)]
rot_seq_deg (list) – (optional) Alias for
rot_seq, with degrees stated explicitly.rot_seq_rad (list) – (optional) Same format as
rot_seq, except the angles are expressed in radians.matrix (numpy.ndarray) – (optional) A 3x3 rotation matrix expressing the orientation of the ellipsoid. Defaults to the identity.
position – (optional) Alias for
center.orientation – (optional) Alias for
matrix.
- approximate(x1=None)[source]¶
Approximate Ellipsoid with Spheres
This function approximates the ellipsoid by a set of spheres. It does so by approximating the x-z and y-z elliptical cross sections with circles, then scaling those circles and promoting them to spheres.
See the documentation for
microstructpy.geometry.Ellipse.approximate()for more details.- Parameters:
x1 (float) – (optional) Center position of the first sphere. Default is 0.75x the minimum semi-axis.
- Returns:
An Nx4 list of the (x, y, z, r) data of the spheres that approximate the ellipsoid.
- Return type:
- best_fit(points)[source]¶
Find ellipsoid of best fit.
This function takes a list of 3D points and computes the ellipsoid of best fit for the points. It uses a published algorithm to fit the ellipsoid, then attempts to define the axes in such a way that they most align with this ellipsoid’s axes. [1]
- plot(**kwargs)[source]¶
Plot the ellipsoid.
This function uses the
mpl_toolkits.mplot3d.axes3d.Axes3D.plot_surface()method to add an ellipsoid to the current axes. The keyword arguments are passes through to the plot_surface function.- Parameters:
**kwargs (dict) – Keyword arguments for matplotlib.
- reflect(points)[source]¶
Reflect points across surface.
This function reflects a point or set of points across the surface of the ellipsoid. Points at the center of the ellipsoid are not reflected.
- Parameters:
points (list or numpy.ndarray) – Points to reflect.
- Returns:
Reflected points.
- Return type:
- classmethod volume_expectation(**kwargs)[source]¶
Expected value of volume.
This function computes the expected value for the volume of an ellipsoid. The keyword arguments are the same as the input parameters for the class,
microstructpy.geometry.Ellipsoid. The values for these keywords can be either constants or distributions from the SciPyscipy.statsmodule.The expected value is computed by the following formula:
\[\begin{split}\mathbb{E}[V] &= \mathbb{E}[\frac{4}{3}\pi A B C] \\ &= \frac{4}{3}\pi \mathbb{E}[A] \mathbb{E}[B] \mathbb{E}[C] \\ &= \frac{4}{3}\pi \mu_A \mu_B \mu_C\end{split}\]If the ellisoid is specified by size and aspect ratios, then the expected volume is computed by:
\[\begin{split}\mathbb{E}[V] &= \mathbb{E}[\frac{\pi}{6} S^3] \\ &= \frac{\pi}{6} (\mu_S^3 + 3 \mu_S \sigma_S^2 + \gamma_{1, S} \sigma_S^3)\end{split}\]If the ellipsoid is specified using a combination of semi-axes and aspect ratios, then the expected volume is the mean of 1000 random samples:
\[\mathbb{E}[V] \approx \frac{1}{n} \sum_{i=1}^n V_i\]where \(n=1000\).
- Parameters:
**kwargs – Keyword arguments, see
microstructpy.geometry.Ellipsoid.- Returns:
Expected value of the volume of the sphere.
- Return type:
- within(points)[source]¶
Test if points are within ellipsoid.
This function tests whether a point or set of points are within the ellipsoid. For the set of points, a list of booleans is returned to indicate which points are within the ellipsoid.
- Parameters:
points (list or numpy.ndarray) – Point or list of points.
- Returns:
Set to True for points in geometry.
- Return type:
- property coefficients¶
coeffificients of equation, \((A, B, C, D, E, F, G, H, K, L)\) in \(Ax^2 + Bxy + Cxz + Dy^2 + Eyz + Fz^2 + Gx + Hy + Kz + L = 0\)
- Type:
- property matrix¶
A 3x3 rotation matrix
- Type:
- property matrix_quadeq¶
Matrix of the quadratic equation
- Type:
- property matrix_quadform¶
Matrix of the quadratic form
- Type:
- property orientation¶
A 3x3 rotation matrix
- Type: