# Struct graphene::Triangle

``pub struct Triangle { /* private fields */ }``
Expand description

A triangle.

## Implementations§

source§

### impl Triangle

source

source

#### pub unsafe fn from_glib_ptr_borrow<'a>( ptr: *const graphene_triangle_t ) -> &'a Self

Borrows the underlying C value.

source

#### pub unsafe fn from_glib_ptr_borrow_mut<'a>( ptr: *mut graphene_triangle_t ) -> &'a mut Self

Borrows the underlying C value mutably.

source§

### impl Triangle

source

#### pub fn contains_point(&self, p: &Point3D) -> bool

Checks whether the given triangle `self` contains the point `p`.

##### §Returns

`true` if the point is inside the triangle

source

#### pub fn area(&self) -> f32

Computes the area of the given `Triangle`.

##### §Returns

the area of the triangle

source

#### pub fn barycoords(&self, p: Option<&Point3D>) -> Option<Vec2>

Computes the barycentric coordinates of the given point `p`.

The point `p` must lie on the same plane as the triangle `self`; if the point is not coplanar, the result of this function is undefined.

If we place the origin in the coordinates of the triangle’s A point, the barycentric coordinates are `u`, which is on the AC vector; and `v` which is on the AB vector:

The returned `Vec2` contains the following values, in order:

• `res.x = u`
• `res.y = v`
##### §Returns

`true` if the barycentric coordinates are valid

###### §`res`

return location for the vector with the barycentric coordinates

source

#### pub fn bounding_box(&self) -> Box

Computes the bounding box of the given `Triangle`.

##### §Returns
###### §`res`

return location for the box

source

#### pub fn midpoint(&self) -> Point3D

Computes the coordinates of the midpoint of the given `Triangle`.

The midpoint G is the centroid of the triangle, i.e. the intersection of its medians.

##### §Returns
###### §`res`

return location for the coordinates of the midpoint

source

#### pub fn normal(&self) -> Vec3

Computes the normal vector of the given `Triangle`.

##### §Returns
###### §`res`

return location for the normal vector

source

#### pub fn plane(&self) -> Plane

Computes the plane based on the vertices of the given `Triangle`.

##### §Returns
###### §`res`

return location for the plane

source

#### pub fn points(&self) -> (Point3D, Point3D, Point3D)

Retrieves the three vertices of the given `Triangle` and returns their coordinates as `Point3D`.

##### §Returns
###### §`a`

return location for the coordinates of the first vertex

###### §`b`

return location for the coordinates of the second vertex

###### §`c`

return location for the coordinates of the third vertex

source

#### pub fn uv( &self, p: Option<&Point3D>, uv_a: &Vec2, uv_b: &Vec2, uv_c: &Vec2 ) -> Option<Vec2>

Computes the UV coordinates of the given point `p`.

The point `p` must lie on the same plane as the triangle `self`; if the point is not coplanar, the result of this function is undefined. If `p` is `None`, the point will be set in (0, 0, 0).

The UV coordinates will be placed in the `res` vector:

• `res.x = u`
• `res.y = v`

See also: `barycoords()`

###### §`uv_a`

the UV coordinates of the first point

###### §`uv_b`

the UV coordinates of the second point

###### §`uv_c`

the UV coordinates of the third point

##### §Returns

`true` if the coordinates are valid

###### §`res`

a vector containing the UV coordinates of the given point `p`

source

#### pub fn vertices(&self) -> (Vec3, Vec3, Vec3)

Retrieves the three vertices of the given `Triangle`.

##### §Returns
###### §`a`

return location for the first vertex

###### §`b`

return location for the second vertex

###### §`c`

return location for the third vertex

source§

### impl Triangle

source

#### pub fn from_float(a: [f32; 3], b: [f32; 3], c: [f32; 3]) -> Self

Initializes a `Triangle` using the three given arrays of floating point values, each representing the coordinates of a point in 3D space.

###### §`a`

an array of 3 floating point values

###### §`b`

an array of 3 floating point values

###### §`c`

an array of 3 floating point values

##### §Returns

the initialized `Triangle`

source

#### pub fn from_point3d( a: Option<&Point3D>, b: Option<&Point3D>, c: Option<&Point3D> ) -> Self

Initializes a `Triangle` using the three given 3D points.

##### §Returns

the initialized `Triangle`

source

#### pub fn from_vec3(a: Option<&Vec3>, b: Option<&Vec3>, c: Option<&Vec3>) -> Self

Initializes a `Triangle` using the three given vectors.

##### §Returns

the initialized `Triangle`

## Trait Implementations§

source§

### impl Clone for Triangle

source§

#### fn clone(&self) -> Self

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 Debug for Triangle

source§

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

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

### impl HasParamSpec for Triangle

§

§

#### type SetValue = Triangle

Preferred value to be used as setter for the associated ParamSpec.
§

source§

source§

### impl PartialEq for Triangle

source§

#### fn eq(&self, other: &Self) -> 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 StaticType for Triangle

source§

#### fn static_type() -> Type

Returns the type identifier of `Self`.
source§

source§

§

§

§

§

§

§

## Blanket Implementations§

source§

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

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for Twhere T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

source§

### impl<T, U> Into<U> for Twhere 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§

source§

source§

§

source§

§

source§

source§

### impl<T> StaticTypeExt for Twhere T: StaticType,

source§

#### fn ensure_type()

Ensures that the type has been registered with the type system.
source§

### impl<T> ToOwned for Twhere 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> ToSendValue for Twhere T: Send + ToValue + ?Sized,

source§

#### fn to_send_value(&self) -> SendValue

Returns a `SendValue` clone of `self`.
source§

### impl<T, U> TryFrom<U> for Twhere 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§

source§

source§

### impl<T, U> TryInto<U> for Twhere 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§