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
impl Triangle
Sourcepub fn new(vertex_a: Point2D, vertex_b: Point2D, vertex_c: Point2D) -> Self
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);Sourcepub fn side_length(&self, start: &Point2D, end: &Point2D) -> f64
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);Sourcepub fn perimeter(&self) -> f64
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();Sourcepub fn area(&self) -> f64
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();Sourcepub fn semi_perimeter(&self) -> f64
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();Sourcepub fn in_circle(&self) -> Circle
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();Sourcepub fn rotate_around_point(
&self,
center: &Point2D,
angle_degrees: f64,
) -> Triangle
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(¢er, 45.0);Sourcepub fn point_inside_triangle(&self, p: &Point2D) -> bool
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 });Sourcepub fn barycentric_coordinates(&self, p: &Point2D) -> [f64; 3]
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 });Sourcepub fn orthocenter(&self) -> Point2D
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();Sourcepub fn centroid(&self) -> Point2D
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();Sourcepub fn incenter(&self) -> Point2D
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();Sourcepub fn circumcenter(&self) -> Point2D
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();pub fn classify_triangle(&self) -> TriangleType
Sourcepub fn classify_angles(&self) -> (f64, f64, f64)
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§
impl StructuralPartialEq for Triangle
Auto Trait Implementations§
impl Freeze for Triangle
impl RefUnwindSafe for Triangle
impl Send for Triangle
impl Sync for Triangle
impl Unpin for Triangle
impl UnwindSafe for Triangle
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