Struct meshx::prim::triangle::Triangle

source ·
pub struct Triangle<T: Scalar>(pub Vector3<T>, pub Vector3<T>, pub Vector3<T>);
Expand description

Generic triangle with three points

Tuple Fields§

§0: Vector3<T>§1: Vector3<T>§2: Vector3<T>

Implementations§

source§

impl<T: Scalar> Triangle<T>

source

pub fn from_indexed_slice<V: Into<[T; 3]> + Clone>( indices: &[usize; 3], slice: &[V] ) -> Triangle<T>

Build a Triangle from a triplet of indices.

source

pub fn new([a, b, c]: [[T; 3]; 3]) -> Self

Build a new triangle from an array of vertex positions.

source§

impl<T: Scalar + Pod> Triangle<T>

source

pub fn as_array(&self) -> &[[T; 3]; 3]

Return this triangle as an array of vertex positions.

This can be useful for performing custom arithmetic on the triangle positions.

source§

impl<T: Scalar> Triangle<T>

source

pub fn into_array(self) -> [[T; 3]; 3]

Convert this triangle into an array of vertex positions.

source§

impl<T> Triangle<T>
where T: Scalar + Zero + ClosedAdd<T> + ClosedMul<T> + ClosedSub<T> + Neg<Output = T>,

source

pub fn area_normal(&self) -> [T; 3]

Compute the area weighted normal of this triangle. This is the standard way to compute the normal and the area of the triangle.

Note the area of the triangle is half of the norm of this vector.

source

pub fn area_normal_gradient(&self, wrt: usize) -> [[T; 3]; 3]

Compute the gradient of the area weighted normal with respect to the given vertex. The returned matrix is in column-major format.

source

pub fn area_normal_hessian_product( wrt_row: usize, at_col: usize, lambda: [T; 3] ) -> [[T; 3]; 3]

Compute the hessian of the area weighted normal with respect to the given vertex (row index) at a given vertex (column index) multiplied by a given vector (lambda).

The returned matrix is in column-major format.

Trait Implementations§

source§

impl<'a, T> Area<T> for &'a Triangle<T>
where T: SimdRealField,

source§

fn area(self) -> T

Compute the area of the object.
source§

fn signed_area(self) -> T

Compute the signed area of the object. The area is negative when the object is inverted.
source§

impl<T> Area<T> for Triangle<T>
where T: SimdRealField,

source§

fn area(self) -> T

Compute the area of the object.
source§

fn signed_area(self) -> T

Compute the signed area of the object. The area is negative when the object is inverted.
source§

impl<'a, T> Centroid<[T; 3]> for &'a Triangle<T>
where T: Scalar + ClosedAdd<T> + ClosedDiv<T> + FromPrimitive,

source§

fn centroid(self) -> [T; 3]

Compute the centroid of the object.
source§

impl<'a, T> Centroid<Matrix<T, Const<3>, Const<1>, ArrayStorage<T, 3, 1>>> for &'a Triangle<T>
where T: Scalar + ClosedAdd<T> + ClosedDiv<T> + FromPrimitive,

source§

fn centroid(self) -> Vector3<T>

Compute the centroid of the object.
source§

impl<T: Clone + Scalar> Clone for Triangle<T>

source§

fn clone(&self) -> Triangle<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug + Scalar> Debug for Triangle<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Scalar> Index<usize> for Triangle<T>

§

type Output = Matrix<T, Const<3>, Const<1>, ArrayStorage<T, 3, 1>>

The returned type after indexing.
source§

fn index(&self, i: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<T: Scalar> IndexMut<usize> for Triangle<T>

source§

fn index_mut(&mut self, i: usize) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<'a, T> Normal<[T; 3]> for &'a Triangle<T>
where T: SimdRealField,

source§

fn normal(self) -> [T; 3]

Compute the unit normal of this object.
source§

impl<'a, T> Normal<Matrix<T, Const<3>, Const<1>, ArrayStorage<T, 3, 1>>> for &'a Triangle<T>
where T: SimdRealField,

source§

fn normal(self) -> Vector3<T>

Compute the unit normal of this object.
source§

impl<T: PartialEq + Scalar> PartialEq for Triangle<T>

source§

fn eq(&self, other: &Triangle<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a, T: Scalar + ClosedSub<T>> ShapeMatrix<[[T; 3]; 2]> for &'a Triangle<T>

Returns a column major 3x2 matrix.

source§

fn shape_matrix(self) -> [[T; 3]; 2]

Return a shape matrix of the given type M.
source§

impl<T: Scalar + ClosedSub<T>> ShapeMatrix<[[T; 3]; 2]> for Triangle<T>

Returns a column major 3x2 matrix.

source§

fn shape_matrix(self) -> [[T; 3]; 2]

Return a shape matrix of the given type M.
source§

impl<T: Copy + Scalar> Copy for Triangle<T>

source§

impl<T: Scalar> StructuralPartialEq for Triangle<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Triangle<T>
where T: RefUnwindSafe,

§

impl<T> Send for Triangle<T>
where T: Send,

§

impl<T> Sync for Triangle<T>
where T: Sync,

§

impl<T> Unpin for Triangle<T>
where T: Unpin,

§

impl<T> UnwindSafe for Triangle<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Bytes for T

source§

fn as_bytes(&self) -> &[u8]

Get a slice of bytes representing Self.
source§

fn interpret_bytes(bytes: &[u8]) -> &Self

Panics if the size of the given bytes slice is not equal to the size of Self.
source§

impl<T> CloneBytes for T
where T: Clone + 'static,

source§

unsafe fn clone_bytes(src: &[MaybeUninit<u8>]) -> Box<[MaybeUninit<u8>]>

source§

unsafe fn clone_from_bytes(dst: &mut [MaybeUninit<u8>], src: &[MaybeUninit<u8>])

source§

unsafe fn clone_into_raw_bytes( src: &[MaybeUninit<u8>], dst: &mut [MaybeUninit<u8>] )

source§

impl<T> DebugBytes for T
where T: Debug + 'static,

source§

unsafe fn fmt_bytes( bytes: &[MaybeUninit<u8>], f: &mut Formatter<'_> ) -> Result<(), Error>

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DropBytes for T
where T: 'static,

source§

unsafe fn drop_bytes(bytes: &mut [MaybeUninit<u8>])

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<'a, S, I> Get<'a, I> for S
where I: GetIndex<'a, S>,

§

type Output = <I as GetIndex<'a, S>>::Output

source§

fn get(&self, idx: I) -> Option<<I as GetIndex<'a, S>>::Output>

source§

fn at(&self, idx: I) -> Self::Output

Return a value at the given index. This is provided as the checked version of get that will panic if the equivalent get call is None, which typically means that the given index is out of bounds. Read more
source§

unsafe fn at_unchecked(&self, idx: I) -> Self::Output

Return a value at the given index. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<S, I> Isolate<I> for S
where I: IsolateIndex<S>,

§

type Output = <I as IsolateIndex<S>>::Output

source§

unsafe fn isolate_unchecked(self, idx: I) -> <S as Isolate<I>>::Output

Unchecked version of isolate. Read more
source§

fn try_isolate(self, idx: I) -> Option<<S as Isolate<I>>::Output>

source§

fn isolate(self, idx: I) -> Self::Output
where Self: Sized,

Return a value at the given index. This is provided as the checked version of try_isolate that will panic if the equivalent try_isolate call is None, which typically means that the given index is out of bounds. Read more
source§

impl<T> PartialEqBytes for T
where T: PartialEq + 'static,

source§

unsafe fn eq_bytes(a: &[MaybeUninit<u8>], b: &[MaybeUninit<u8>]) -> bool

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, N> PushArrayToVec<N> for T
where T: Clone, N: Array<T>,

source§

fn push_to_vec(element: <N as Array<T>>::Array, set: &mut Vec<T>)

This method tells this type how it can be pushed to a Vec as an array.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AttributeValue for T
where T: Clone + PartialEq + Debug + Send + Sync + 'static,

source§

impl<T> CopyElem for T
where T: Any + Copy,

source§

impl<T> Elem for T
where T: Any + DropBytes,

source§

impl<T> Pod for T
where T: 'static + Copy + Send + Sync + Any,

source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,