1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#![doc(test(no_crate_inject))]
#![allow(unused_imports)]
#![doc(html_playground_url = "https://rgeometry.org/rgeometry-playground/")]
#![doc(test(no_crate_inject))]
use num_traits::*;
use std::iter::Sum;
use std::ops::*;
pub mod algorithms;
mod array;
pub mod data;
mod intersection;
mod matrix;
mod transformation;
pub use array::Orientation;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Error {
InsufficientVertices,
SelfIntersections,
ConvexViolation,
ClockWiseViolation,
}
pub trait PolygonScalar<T = Self, Output = Self>:
PolygonScalarRef<T, Output>
+ AddAssign<Output>
+ MulAssign<Output>
+ FromPrimitive
+ One
+ Zero
+ Sum
+ Ord
+ Neg<Output = Output>
{
}
impl<T, Rhs, Output> PolygonScalar<Rhs, Output> for T where
T: PolygonScalarRef<Rhs, Output>
+ AddAssign<Output>
+ MulAssign<Output>
+ FromPrimitive
+ One
+ Zero
+ Sum
+ Ord
+ Neg<Output = Output>
{
}
pub trait PolygonScalarRef<T = Self, Output = Self>: Clone + NumOps<T, Output> {}
impl<T, Rhs, Output> PolygonScalarRef<Rhs, Output> for T where T: Clone + NumOps<Rhs, Output> {}