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
76
77
78
79
80
81
82
83
use crate::topo_traits::*;
use truck_topology::*;
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Vertex<P> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
_: &FC,
_: &FS,
) -> Self {
self.mapped(point_mapping)
}
}
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Edge<P, C> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
curve_mapping: &FC,
_: &FS,
) -> Self {
self.mapped(point_mapping, curve_mapping)
}
}
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Wire<P, C> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
curve_mapping: &FC,
_: &FS,
) -> Self {
self.mapped(point_mapping, curve_mapping)
}
}
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Face<P, C, S> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
curve_mapping: &FC,
surface_mapping: &FS,
) -> Self {
self.mapped(point_mapping, curve_mapping, surface_mapping)
}
}
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Shell<P, C, S> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
curve_mapping: &FC,
surface_mapping: &FS,
) -> Self {
self.mapped(point_mapping, curve_mapping, surface_mapping)
}
}
impl<P: Clone, C: Clone, S: Clone> Mapped<P, C, S> for Solid<P, C, S> {
#[inline(always)]
fn mapped<FP: Fn(&P) -> P, FC: Fn(&C) -> C, FS: Fn(&S) -> S>(
&self,
point_mapping: &FP,
curve_mapping: &FC,
surface_mapping: &FS,
) -> Self {
Solid::debug_new(
self.boundaries()
.iter()
.map(|shell| shell.mapped(point_mapping, curve_mapping, surface_mapping))
.collect(),
)
}
}