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>
impl<T: Scalar> Triangle<T>
sourcepub fn into_array(self) -> [[T; 3]; 3]
pub fn into_array(self) -> [[T; 3]; 3]
Convert this triangle into an array of vertex positions.
source§impl<T> Triangle<T>
impl<T> Triangle<T>
sourcepub fn area_normal(&self) -> [T; 3]
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.
sourcepub fn area_normal_gradient(&self, wrt: usize) -> [[T; 3]; 3]
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.
sourcepub fn area_normal_hessian_product(
wrt_row: usize,
at_col: usize,
lambda: [T; 3]
) -> [[T; 3]; 3]
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> Centroid<[T; 3]> for &'a Triangle<T>where
T: Scalar + ClosedAdd<T> + ClosedDiv<T> + FromPrimitive,
impl<'a, T> Centroid<[T; 3]> for &'a Triangle<T>where
T: Scalar + ClosedAdd<T> + ClosedDiv<T> + FromPrimitive,
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,
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§impl<'a, T> Normal<Matrix<T, Const<3>, Const<1>, ArrayStorage<T, 3, 1>>> for &'a Triangle<T>where
T: SimdRealField,
impl<'a, T> Normal<Matrix<T, Const<3>, Const<1>, ArrayStorage<T, 3, 1>>> for &'a Triangle<T>where
T: SimdRealField,
source§impl<T: PartialEq + Scalar> PartialEq for Triangle<T>
impl<T: PartialEq + Scalar> PartialEq for Triangle<T>
source§impl<'a, T: Scalar + ClosedSub<T>> ShapeMatrix<[[T; 3]; 2]> for &'a Triangle<T>
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]
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>
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]
fn shape_matrix(self) -> [[T; 3]; 2]
Return a shape matrix of the given type
M
.impl<T: Copy + Scalar> Copy for Triangle<T>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneBytes for Twhere
T: Clone + 'static,
impl<T> CloneBytes for Twhere
T: Clone + 'static,
unsafe fn clone_bytes(src: &[MaybeUninit<u8>]) -> Box<[MaybeUninit<u8>]>
unsafe fn clone_from_bytes(dst: &mut [MaybeUninit<u8>], src: &[MaybeUninit<u8>])
unsafe fn clone_into_raw_bytes( src: &[MaybeUninit<u8>], dst: &mut [MaybeUninit<u8>] )
source§impl<T> DebugBytes for Twhere
T: Debug + 'static,
impl<T> DebugBytes for Twhere
T: Debug + 'static,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn 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>
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)
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)
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
impl<T> DowncastSync for T
source§impl<T> DropBytes for Twhere
T: 'static,
impl<T> DropBytes for Twhere
T: 'static,
unsafe fn drop_bytes(bytes: &mut [MaybeUninit<u8>])
source§impl<'a, S, I> Get<'a, I> for Swhere
I: GetIndex<'a, S>,
impl<'a, S, I> Get<'a, I> for Swhere
I: GetIndex<'a, S>,
type Output = <I as GetIndex<'a, S>>::Output
fn get(&self, idx: I) -> Option<<I as GetIndex<'a, S>>::Output>
source§fn at(&self, idx: I) -> Self::Output
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 moresource§unsafe fn at_unchecked(&self, idx: I) -> Self::Output
unsafe fn at_unchecked(&self, idx: I) -> Self::Output
Return a value at the given index. Read more
source§impl<S, I> Isolate<I> for Swhere
I: IsolateIndex<S>,
impl<S, I> Isolate<I> for Swhere
I: IsolateIndex<S>,
source§impl<T> PartialEqBytes for Twhere
T: PartialEq + 'static,
impl<T> PartialEqBytes for Twhere
T: PartialEq + 'static,
unsafe fn eq_bytes(a: &[MaybeUninit<u8>], b: &[MaybeUninit<u8>]) -> bool
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T, N> PushArrayToVec<N> for T
impl<T, N> PushArrayToVec<N> for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
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
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
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
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.