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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
pub use crate::math::*;

mod io;
#[doc(inline)]
pub use io::*;

mod utility;
#[doc(inline)]
pub use utility::*;

mod append;
#[doc(inline)]
pub use append::*;

mod cleanup;
#[doc(inline)]
pub use cleanup::*;

mod ids;
#[doc(inline)]
pub use ids::*;

mod iterators;
#[doc(inline)]
pub use iterators::*;

mod traversal;
#[doc(inline)]
pub use traversal::*;

mod edit;
#[doc(inline)]
pub use edit::*;

mod orientation;
#[doc(inline)]
pub use orientation::*;

mod connectivity_info;

use crate::mesh::connectivity_info::ConnectivityInfo;
use std::collections::HashMap;

///
/// A representation of a triangle mesh which is efficient for calculating on and making changes to a mesh.
///
/// Use [Mesh::new] to construct a new mesh.
/// Use [Mesh::export] to export the mesh to a format that is efficient for visualization.
///
/// ## Basic functionality:
/// - [Iterators](#iterators)
/// - [Traversal](#traversal)
/// - [Edit](#edit)
/// - [Orientation](#orientation)
///
/// ## Simple operations
/// - [Connectivity](#connectivity)
/// - [Vertex measures](#vertex-measures)
/// - [Edge measures](#edge-measures)
/// - [Face measures](#face-measures)
/// - [Transformations](#transformations)
/// - [Bounding box](#bounding-box)
/// - [Validity](#validity)
///
/// ## Advanced operations
/// - [Quality](#quality)
/// - [Connected components](#connected-components)
/// - [Intersection](#intersection)
/// - [Merge](#merge)
/// - [Split](#split)
///
#[derive(Debug, Clone)]
pub struct Mesh {
    connectivity_info: ConnectivityInfo,
}