Triangle

Struct Triangle 

Source
pub struct Triangle {
    pub vertex_a: Point2D,
    pub vertex_b: Point2D,
    pub vertex_c: Point2D,
}
Expand description

三角形结构体,由三个顶点组成。

Fields§

§vertex_a: Point2D

三角形的第一个顶点

§vertex_b: Point2D

三角形的第二个顶点

§vertex_c: Point2D

三角形的第三个顶点

Implementations§

Source§

impl Triangle

Source

pub fn new(vertex_a: Point2D, vertex_b: Point2D, vertex_c: Point2D) -> Self

构造函数,用于创建新的三角形实例。

§参数
  • vertex_a - 三角形的顶点 A。
  • vertex_b - 三角形的顶点 B。
  • vertex_c - 三角形的顶点 C。
§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::Triangle;

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
Source

pub fn side_length(&self, start: &Point2D, end: &Point2D) -> f64

计算三角形的边长。

§参数
  • start - 边的起点。
  • end - 边的终点。
§返回值

返回边的长度。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::Triangle;

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let length = triangle.side_length(&vertex_a, &vertex_b);
Source

pub fn perimeter(&self) -> f64

计算三角形的周长。

§返回值

返回三角形的周长。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let perimeter = triangle.perimeter();
Source

pub fn area(&self) -> f64

计算三角形的面积。

§返回值

返回三角形的面积。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let area = triangle.area();
Source

pub fn semi_perimeter(&self) -> f64

计算三角形的半周长。

§返回值

返回三角形的半周长。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let semi_perimeter = triangle.semi_perimeter();
Source

pub fn in_circle(&self) -> Circle

计算三角形的内切圆。

§返回值

返回一个 Circle 结构体,表示三角形的内切圆。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let in_circle = triangle.in_circle();
Source

pub fn rotate_around_point( &self, center: &Point2D, angle_degrees: f64, ) -> Triangle

绕着指定点旋转三角形,返回新的三角形实例。

§参数
  • center: 旋转中心点坐标。
  • angle_degrees: 旋转角度(度数)。
§返回值

返回一个新的 Triangle 结构体,表示旋转后的三角形。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let vertex_a = Point2D { x: 0.0, y: 0.0 };
let vertex_b = Point2D { x: 1.0, y: 0.0 };
let vertex_c = Point2D { x: 0.0, y: 1.0 };

let triangle = Triangle::new(vertex_a, vertex_b, vertex_c);
let center = Point2D { x: 0.5, y: 0.5 };
let rotated_triangle = triangle.rotate_around_point(&center, 45.0);
Source

pub fn point_inside_triangle(&self, p: &Point2D) -> bool

判断点是否在三角形内。

§参数
  • p: 要判断的点坐标。
§返回值

如果点在三角形内,返回 true,否则返回 false

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let point_inside = triangle.point_inside_triangle(&Point2D { x: 0.5, y: 0.5 });
Source

pub fn barycentric_coordinates(&self, p: &Point2D) -> [f64; 3]

辅助方法,计算点的重心坐标。

§参数
  • p: 要计算重心坐标的点。
§返回值

返回包含三个元素的数组,表示点的重心坐标。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let barycentric_coords = triangle.barycentric_coordinates(&Point2D { x: 0.5, y: 0.5 });
Source

pub fn orthocenter(&self) -> Point2D

计算垂心。

§返回值

返回垂心的坐标。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let orthocenter = triangle.orthocenter();
Source

pub fn centroid(&self) -> Point2D

计算重心。

§返回值

返回重心的坐标。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let centroid = triangle.centroid();
Source

pub fn incenter(&self) -> Point2D

计算内心。

§返回值

返回内心的坐标。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let incenter = triangle.incenter();
Source

pub fn circumcenter(&self) -> Point2D

计算外心。

§返回值

返回外心的坐标。

§示例
use rs_math::graphical::point_2d::Point2D;
use rs_math::graphical::triangle::{Triangle, TriangleType};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let circumcenter = triangle.circumcenter();
Source

pub fn classify_triangle(&self) -> TriangleType

Source

pub fn classify_angles(&self) -> (f64, f64, f64)

计算三角形的类型。

三角形的类型可以分为三种:锐角三角形、直角三角形和钝角三角形。

§返回值

返回三角形的类型。

§示例
use rs_math::graphical::triangle::{Triangle, TriangleType};
use rs_math::graphical::point_2d::{ Point2D};

let triangle = Triangle {
    vertex_a: Point2D { x: 0.0, y: 0.0 },
    vertex_b: Point2D { x: 1.0, y: 0.0 },
    vertex_c: Point2D { x: 0.0, y: 1.0 },
};
let triangle_type = triangle.classify_triangle();

Trait Implementations§

Source§

impl Debug for Triangle

Source§

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

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

impl PartialEq for Triangle

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Triangle

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.