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
// src/libs/cs/model.rs
use Deref;
// ===================================================================================
// Uwaga krytyczna dotycząca wymiarów Cs<N>
// ===================================================================================
// Typ Cs<N> jest ściśle ograniczony do wymiarów 2D i 3D.
// Makro cs! obsługuje tylko dokładnie 2 lub 3 elementy (punkt na płaszczyźnie lub w przestrzeni).
// Żadne inne wymiary (4 lub więcej) nie są obsługiwane i nigdy nie będą.
// Implementacja Dim oraz wszystkie metody zakładają wyłącznie N=2 lub N=3.
// Każde sugerowanie użycia Cs<N> dla N>3 jest niepoprawne i ignorowane.
// To jest projekt specyficzny dla geometrii technicznej w 2D/3D, zgodny z nomenklaturą akademicką.
// ===================================================================================
/// Nowy, ultra-szybki wrapper oparty na tablicach (Const Generics).
/// Implementuje Copy, więc zachowuje się lekko jak zwykłe liczby (nie trzeba używać &).
;
pub type Cs2 = ;
pub type Cs3 = ;
/*/
* // Makro generujące Cs<N>
* #[macro_export]
* macro_rules! cs {
* ($($x:expr),* $(,)?) => {
* $crate::libs::cs::Cs([$($x as f64),*])
* };
* }
*/
// Ścisłe makro generujące wyłącznie obsługiwane wymiary
/// Makro do błyskawicznego tworzenia struktury Angle z formatu DMS.
/// Makro do bezpośredniego wstrzykiwania radianów z formatu DMS do wektorów Cs<N>.
// ===================================================================================
// OGRANICZENIE WYMIAROWOŚCI (MARKER TRAIT)
// ===================================================================================
/// Pusty trait znacznikowy, który pozwala na implementację metod wspólnych
/// wyłącznie dla jawnie obsługiwanych wymiarów.
// Pozwalamy na istnienie geometrii tylko w 2D i 3D
// Implementacja Deref pozwala używać cs[0], cs[1] itd.