Enum rgeometry::Orientation
source · [−]pub enum Orientation {
CounterClockWise,
ClockWise,
CoLinear,
}
Variants
CounterClockWise
ClockWise
CoLinear
Implementations
sourceimpl Orientation
impl Orientation
sourcepub fn new<T>(p1: &[T; 2], p2: &[T; 2], p3: &[T; 2]) -> Orientation where
T: PolygonScalar,
pub fn new<T>(p1: &[T; 2], p2: &[T; 2], p3: &[T; 2]) -> Orientation where
T: PolygonScalar,
Determine the direction you have to turn if you walk from p1
to p2
to p3
.
For fixed-precision types (i8,i16,i32,i64,etc), this function is guaranteed to work for any input and never cause any arithmetic overflows.
Polymorphism
This function works with both Points and Vectors. You should prefer to use Point::orient when possible.
Examples
let p1 = Point::new([ 0, 0 ]);
let p2 = Point::new([ 0, 1 ]); // One unit above p1.
// (0,0) -> (0,1) -> (0,2) == Orientation::CoLinear
assert!(Orientation::new(&p1, &p2, &Point::new([ 0, 2 ])).is_colinear());
// (0,0) -> (0,1) -> (-1,2) == Orientation::CounterClockWise
assert!(Orientation::new(&p1, &p2, &Point::new([ -1, 2 ])).is_ccw());
// (0,0) -> (0,1) -> (1,2) == Orientation::ClockWise
assert!(Orientation::new(&p1, &p2, &Point::new([ 1, 2 ])).is_cw());
Runsourcepub fn along_vector<T>(
p1: &[T; 2],
vector: &Vector<T, 2>,
p2: &[T; 2]
) -> Orientation where
T: PolygonScalar,
pub fn along_vector<T>(
p1: &[T; 2],
vector: &Vector<T, 2>,
p2: &[T; 2]
) -> Orientation where
T: PolygonScalar,
Locate p2
in relation to the line determined by the point p1
and the direction
vector.
For fixed-precision types (i8,i16,i32,i64,etc), this function is guaranteed to work for any input and never cause any arithmetic overflows.
This function is identical to Orientation::new
(p1, p1+v, p2)
but will never
cause arithmetic overflows even if p+v
would overflow.
Examples
let v = Vector([ 1, 1 ]); // Vector pointing to the top-right corner.
let p1 = Point::new([ 5, 5 ]);
assert!(Orientation::along_vector(&p1, &v, &Point::new([ 6, 6 ])).is_colinear());
assert!(Orientation::along_vector(&p1, &v, &Point::new([ 7, 8 ])).is_ccw());
assert!(Orientation::along_vector(&p1, &v, &Point::new([ 8, 7 ])).is_cw());
Runpub fn along_perp_vector<T>(
p1: &[T; 2],
vector: &Vector<T, 2>,
p2: &[T; 2]
) -> Orientation where
T: PolygonScalar,
pub fn is_colinear(self) -> bool
pub fn is_ccw(self) -> bool
pub fn is_cw(self) -> bool
pub fn then(self, other: Orientation) -> Orientation
pub fn break_ties(self, a: u32, b: u32, c: u32) -> SoS
pub fn sos(self, other: SoS) -> SoS
pub fn reverse(self) -> Orientation
pub fn ccw_cmp_around_with<T>(
vector: &Vector<T, 2>,
p1: &[T; 2],
p2: &[T; 2],
p3: &[T; 2]
) -> Ordering where
T: PolygonScalar,
Trait Implementations
sourceimpl Clone for Orientation
impl Clone for Orientation
sourcefn clone(&self) -> Orientation
fn clone(&self) -> Orientation
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for Orientation
impl Debug for Orientation
sourceimpl Ord for Orientation
impl Ord for Orientation
sourceimpl PartialEq<Orientation> for Orientation
impl PartialEq<Orientation> for Orientation
sourceimpl PartialOrd<Orientation> for Orientation
impl PartialOrd<Orientation> for Orientation
sourcefn partial_cmp(&self, other: &Orientation) -> Option<Ordering>
fn partial_cmp(&self, other: &Orientation) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl Copy for Orientation
impl Eq for Orientation
impl StructuralEq for Orientation
impl StructuralPartialEq for Orientation
Auto Trait Implementations
impl RefUnwindSafe for Orientation
impl Send for Orientation
impl Sync for Orientation
impl Unpin for Orientation
impl UnwindSafe for Orientation
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more