aboutsummaryrefslogtreecommitdiff
path: root/src/geometry/polygon.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-12-17 18:37:16 +0100
committerCrozet Sébastien <developer@crozet.re>2020-12-29 11:31:59 +0100
commit8fe2df126a279a435cc544b150aadf8f7b757868 (patch)
tree5e574a98190b393d3d54af8922146d5078058824 /src/geometry/polygon.rs
parent29717c2887b2db39faf9c25053730b661dc5da2b (diff)
downloadrapier-8fe2df126a279a435cc544b150aadf8f7b757868.tar.gz
rapier-8fe2df126a279a435cc544b150aadf8f7b757868.tar.bz2
rapier-8fe2df126a279a435cc544b150aadf8f7b757868.zip
Remove some irrelevant code.
Diffstat (limited to 'src/geometry/polygon.rs')
-rw-r--r--src/geometry/polygon.rs78
1 files changed, 0 insertions, 78 deletions
diff --git a/src/geometry/polygon.rs b/src/geometry/polygon.rs
deleted file mode 100644
index 15cf005..0000000
--- a/src/geometry/polygon.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-#![allow(dead_code)] // TODO: remove this once we support polygons.
-
-use crate::math::{Isometry, Point, Vector};
-use eagl::bounding_volume::AABB;
-
-#[derive(Clone)]
-#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
-/// A convex planar polygon.
-pub struct Polygon {
- pub(crate) vertices: Vec<Point<f32>>,
- pub(crate) normals: Vec<Vector<f32>>,
-}
-
-impl Polygon {
- /// Builds a new polygon from a set of vertices and normals.
- ///
- /// The vertices must be ordered in such a way that two consecutive
- /// vertices determines an edge of the polygon. For example `vertices[0], vertices[1]`
- /// is an edge, `vertices[1], vertices[2]` is the next edge, etc. The last edge will
- /// be `vertices[vertices.len() - 1], vertices[0]`.
- /// The vertices must be given in counter-clockwise order.
- /// The vertices must form a convex polygon.
- ///
- /// One normal must be provided per edge and mut point towards the outside of the polygon.
- pub fn new(vertices: Vec<Point<f32>>, normals: Vec<Vector<f32>>) -> Self {
- Self { vertices, normals }
- }
-
- /// Compute the axis-aligned bounding box of the polygon.
- pub fn aabb(&self, pos: &Isometry<f32>) -> AABB {
- let p0 = pos * self.vertices[0];
- let mut mins = p0;
- let mut maxs = p0;
-
- for pt in &self.vertices[1..] {
- let pt = pos * pt;
- mins = mins.inf(&pt);
- maxs = maxs.sup(&pt);
- }
-
- AABB::new(mins.into(), maxs.into())
- }
-
- /// The vertices of this polygon.
- pub fn vertices(&self) -> &[Point<f32>] {
- &self.vertices
- }
-
- pub(crate) fn support_point(&self, dir: &Vector<f32>) -> usize {
- let mut best_dot = -f32::MAX;
- let mut best_i = 0;
-
- for (i, pt) in self.vertices.iter().enumerate() {
- let dot = pt.coords.dot(&dir);
- if dot > best_dot {
- best_dot = dot;
- best_i = i;
- }
- }
-
- best_i
- }
-
- pub(crate) fn support_face(&self, dir: &Vector<f32>) -> usize {
- let mut max_dot = -f32::MAX;
- let mut max_dot_i = 0;
-
- for (i, normal) in self.normals.iter().enumerate() {
- let dot = normal.dot(dir);
- if dot > max_dot {
- max_dot = dot;
- max_dot_i = i;
- }
- }
-
- max_dot_i
- }
-}