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
84
85
86
87
88
89
90
// src/libs/cs.rs
// 1. Rejestrujemy wszystkie prywatne/publiczne podmoduły
// 2. Wyciągamy na wierzch to, co ma być widoczne dla użytkownika końcowego
// (to "spłaszcza" Twoją skomplikowaną architekturę folderów na zewnątrz)
pub use ;
pub use *;
pub use SignStrExt;
// (Metody przypięte przez bloki 'impl Cs' z core.rs, math.rs, d2.rs, d3.rs
// ładują się automatycznie dla kompilatora, gdy tylko załadujemy moduł.
// Nie trzeba ich eksportować przez 'pub use'!)
// ===================================================================================
// LEGENDA / KLUCZE SYMBOLI W Cs<N>
// ===================================================================================
//
// 📖 Ćwiartki i oktanty:
//
// - q : numer ćwiartki (2D) lub oktantu (3D) w układzie kartezjańskim
// 2D: płaszczyzna XY, wartości 1-4:
// 1: (+X, +Y), 2: (-X, +Y), 3: (-X, -Y), 4: (+X, -Y)
// 3D: przestrzeń XYZ, wartości 1-8:
// 1: (+X, +Y, +Z), 2: (-X, +Y, +Z), 3: (-X, -Y, +Z), 4: (+X, -Y, +Z),
// 5: (+X, +Y, -Z), 6: (-X, +Y, -Z), 7: (-X, -Y, -Z), 8: (+X, -Y, -Z)
//
// - q_sign : alternatywna reprezentacja wizualna i logiczna dla ćwiartki/oktantu.
// Zwraca tablicę znaków kierunkowych osi ["+", "-"] w 2D lub ["+", "-", "+"] w 3D
// np. dla 2D punktu (-1.0, 2.0) → q = 2, q_sign = ["-", "+"]
// np. dla 3D punktu (-1.0, -2.0, 3.0) → q = 3, q_sign = ["-", "-", "+"]
//
// 📖 Współrzędne (Oraz ich bezpieczne odpowiedniki DTO):
//
// - xy (Coords2dXy) : współrzędne 2D kartezjańskie (x,y) lub lub wektor (x,y) lub płaszczyzna XY
// - xz (Coords2dXz) : współrzędne 2D kartezjańskie (x,z) lub lub wektor (x,z) lub płaszczyzna XZ
// - yz (Coords2dYz) : współrzędne 2D kartezjańskie (y,z) lub lub wektor (y,z) lub płaszczyzna YZ
// - rf (Coords2dXyPolar) : współrzędne 2D biegunowe/cylindryczne (R, Φ)
// - rf (Coords2dXzPolar) : współrzędne 2D biegunowe/cylindryczne (R, Φ)
// - rf (Coords2dZyPolar) : współrzędne 2D biegunowe/cylindryczne (R, Φ)
// - rfx (Coords3dYzCylindricalX) : współrzędne 3D cylindryczne względem osi X (R_yz, Φ, X)
// - rfy (Coords3dXzCylindricalY) : współrzędne 3D cylindryczne względem osi Y (R_xz, Φ, Y)
// - rfz (Coords3dXyCylindricalZ) : współrzędne 3D cylindryczne względem osi Z (R_xy, Φ, Z)
// - xyz (Coords3dXyz) : współrzędne 3D kartezjańskie (x,y,z) lub lub wektor (x,y,z) lub przestrzeń XYZ
// - rft (Coords3dXyzSpherical) : współrzędne 3D sferyczne (R, Φ, Θ)
//
// 📖 Współrzędne / Kąty (azymuty / inklinacje):
//
// - f (f_yx/f_zx/f_zy) : współrzędna 2D/3D (Φ) – kąt azymutu
// w płaszczyźnie XY/XZ/YZ lub
// w układach sferycznych RΦΘ lub
// w ukłądach cylindrycznych RΦX/RΦY/RΦZ.
// - t (t_zr) : współrzędna 3D (Θ) – kąt inklinacji w układzie sferycznym od osi Z/Y/X
//
// - y_x (f_yx) : arctan(y/x) – kąt/azymut w płaszczyźnie XY
// - z_x (f_zx) : arctan(z/x) – kąt/azymut w płaszczyźnie XZ
// - z_y (f_zy) : arctan(z/y) – kąt/azymut w płaszczyźnie YZ
// - x_rxyz (t_xr) : arccos(x/rxyz) – kąt/inklinacja względem osi X
// - y_rxyz (t_yr) : arccos(y/rxyz) – kąt/inklinacja względem osi Y
// - z_rxyz (t_zr) : arccos(z/rxyz) – kąt/inklinacja względem osi Z
//
// 📖 Współrzędne / Wektory, promienie, długości cząstkowe (projekcja na płaszczyzne):
//
// - {x, y, z}: współrzędna 2D/3D kartezjańska
// - r : współrzędna 2D/3D biegunowe/sferyczne/kartezjańkie - długość/wektor (promień) w 2D lub 3D
// - rxy : długość rzutu wektora na 2D płaszczyznę XY
// - rxz : długość rzutu wektora na 2D płaszczyznę XZ
// - ryz : długość rzutu wektora na 2D płaszczyznę YZ
// - rxyz : długość wektor w 3D przestrzeni XYZ
//
//
// 📖 Operacje wektorowe / pomocnicze:
//
// - add, sub : dodawanie / odejmowanie wektorów
// - dot : iloczyn skalarny
// - cross : iloczyn wektorowy (tylko w 3D)
// - perp : wektor prostopadły (tylko w 2D)
// - normalize_r_projection : normalizacja rzutu wektora na płaszczyznę
// - angle_between : kąt między dwoma wektorami
//
// ===================================================================================