Struct hexasphere::Subdivided [−][src]
pub struct Subdivided<T, S: BaseShape> { /* fields omitted */ }
A progressively subdivided shape which can record the indices of the points and list out the individual triangles of the resulting shape.
All base triangles specified by S
in BaseShape
are expected to be in counter clockwise winding.
Points are preferably stored with coordinates less
than or equal to 1.0
. This is why all default shapes
lie on the unit sphere.
Implementations
impl<T> Subdivided<T, IcoSphereBase>
[src]
impl<T> Subdivided<T, IcoSphereBase>
[src]pub fn radius_shapes(&self) -> f32
[src]
Calculate distance from the center of a shape (pentagon or hexagon) to one of the vertices of the shape.
In other words, the radius of the circumscribed circle.
impl<T, S: BaseShape + Default> Subdivided<T, S>
[src]
impl<T, S: BaseShape + Default> Subdivided<T, S>
[src]impl<T, S: BaseShape> Subdivided<T, S>
[src]
impl<T, S: BaseShape> Subdivided<T, S>
[src]pub fn new_custom_shape(
subdivisions: usize,
generator: impl FnMut(Vec3A) -> T,
shape: S
) -> Self
[src]
subdivisions: usize,
generator: impl FnMut(Vec3A) -> T,
shape: S
) -> Self
Creates the base shape from S
and subdivides it.
-
subdivisions
specifies the number of times a subdivision will be created. In other terms, this is the number of auxiliary points between the vertices on the original shape. -
generator
is a function run once all the subdivisions are applied and its values are stored in an internalVec
.
pub fn raw_points(&self) -> &[Vec3A]
[src]
The raw points created by the subdivision process.
pub fn get_indices(&self, triangle: usize, buffer: &mut Vec<u32>)
[src]
Appends the indices for the triangle into buffer
.
The specified triangle is a main triangle on the base shape. The range of this should be limited to the number of triangles in the base shape.
Alternatively, use get_all_indices
to get all the
indices.
pub fn get_all_indices(&self) -> Vec<u32>
[src]
Gets the indices for all main triangles in the shape.
pub fn subdivisions(&self) -> usize
[src]
Returns the number of subdivisions applied when this shape was created.
pub fn raw_data(&self) -> &[T]
[src]
Returns the custom data created by the generator function.
pub fn indices_per_main_triangle(&self) -> usize
[src]
Calculate the number of indices which each main triangle will add to the vertex buffer.
Equation
(subdivisions + 1)²
pub fn vertices_per_main_triangle_shared(&self) -> usize
[src]
Calculate the number of vertices contained within each main triangle including the vertices which are shared with another main triangle.
Equation
(subdivisions + 1) * (subdivisions + 2) / 2
pub fn vertices_per_main_triangle_unique(&self) -> usize
[src]
Calculate the number of vertices contained within each main triangle excluding the ones that are shared with other main triangles.
Equation
{
{ subdivisions < 2 : 0
{
{ subdivisions >= 2 : (subdivisions - 1) * subdivisions / 2
{
pub fn shared_vertices(&self) -> usize
[src]
Calculate the number of vertices along the edges of the main triangles and the vertices of the main triangles.
Equation
subdivisions * EDGES + INITIAL_POINTS
pub fn linear_distance(&self, p1: u32, p2: u32, radius: f32) -> f32
[src]
Linear distance between two points on this shape.
impl<T, S: BaseShape + EquilateralBaseShape> Subdivided<T, S>
[src]
impl<T, S: BaseShape + EquilateralBaseShape> Subdivided<T, S>
[src]pub fn main_triangle_intersect(point: Vec3A) -> usize
[src]
Closest “main” triangle.
Undefined results if the point is one of the vertices on the original base shape.
pub fn spherical_distance(&self, p1: u32, p2: u32, radius: f32) -> f32
[src]
Distance between two points on this sphere (assuming this is a sphere).
Auto Trait Implementations
impl<T, S> RefUnwindSafe for Subdivided<T, S> where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, S> RefUnwindSafe for Subdivided<T, S> where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, S> Send for Subdivided<T, S> where
S: Send,
T: Send,
impl<T, S> Send for Subdivided<T, S> where
S: Send,
T: Send,
impl<T, S> Sync for Subdivided<T, S> where
S: Sync,
T: Sync,
impl<T, S> Sync for Subdivided<T, S> where
S: Sync,
T: Sync,
impl<T, S> Unpin for Subdivided<T, S> where
S: Unpin,
T: Unpin,
impl<T, S> Unpin for Subdivided<T, S> where
S: Unpin,
T: Unpin,
impl<T, S> UnwindSafe for Subdivided<T, S> where
S: UnwindSafe,
T: UnwindSafe,
impl<T, S> UnwindSafe for Subdivided<T, S> where
S: UnwindSafe,
T: UnwindSafe,