coordinate-system 5.2.0__tar.gz → 5.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coordinate_system-5.2.0/coordinate_system.egg-info → coordinate_system-5.2.1}/PKG-INFO +10 -3
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/README.md +9 -2
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/__init__.py +8 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1/coordinate_system.egg-info}/PKG-INFO +10 -3
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system_binding.cpp +26 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/pmsys_minimal.hpp +35 -6
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/setup.py +2 -2
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/LICENSE +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/MANIFEST.in +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/MATHEMATICAL_FOUNDATION.md +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/curvature.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/curve_interpolation.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/differential_geometry.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/fourier_frames.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/fourier_spectral.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/visualization.py +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/SOURCES.txt +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/dependency_links.txt +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/not-zip-safe +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/requires.txt +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/top_level.txt +0 -0
- {coordinate_system-5.2.0 → coordinate_system-5.2.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: coordinate_system
|
|
3
|
-
Version: 5.2.
|
|
3
|
+
Version: 5.2.1
|
|
4
4
|
Summary: High-performance 3D coordinate system with C2-continuous curve interpolation, Fourier frames with operator overloading, and advanced 3D visualization
|
|
5
5
|
Home-page: https://github.com/panguojun/Coordinate-System
|
|
6
6
|
Author: PanGuoJun
|
|
@@ -50,13 +50,13 @@ Requires-Dist: matplotlib>=3.3.0
|
|
|
50
50
|
[](LICENSE)
|
|
51
51
|
|
|
52
52
|
**Author:** PanGuoJun
|
|
53
|
-
**Version:** 5.2.
|
|
53
|
+
**Version:** 5.2.1
|
|
54
54
|
**License:** MIT
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
## What's New in v5.2.
|
|
59
|
+
## What's New in v5.2.1 (2025-12-01)
|
|
60
60
|
|
|
61
61
|
### Fourier Frames with Operator Overloading
|
|
62
62
|
|
|
@@ -94,6 +94,13 @@ Requires-Dist: matplotlib>=3.3.0
|
|
|
94
94
|
- Full English documentation for global distribution
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
|
|
98
|
+
### v5.2.1 (2025-12-01) - Handedness Control
|
|
99
|
+
- ✨ **New**: C++ level handedness control (`set_handedness('left'/'right')`)
|
|
100
|
+
- 🔧 **Fixed**: Frenet frames now respect coordinate system handedness
|
|
101
|
+
- 📚 **Improved**: Global handedness setting for consistent behavior
|
|
102
|
+
|
|
103
|
+
|
|
97
104
|
## 🆕 What's New in v4.0.0
|
|
98
105
|
|
|
99
106
|
### 🎯 Fourier Spectral Geometry Analysis
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
10
|
**Author:** PanGuoJun
|
|
11
|
-
**Version:** 5.2.
|
|
11
|
+
**Version:** 5.2.1
|
|
12
12
|
**License:** MIT
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
## What's New in v5.2.
|
|
17
|
+
## What's New in v5.2.1 (2025-12-01)
|
|
18
18
|
|
|
19
19
|
### Fourier Frames with Operator Overloading
|
|
20
20
|
|
|
@@ -52,6 +52,13 @@
|
|
|
52
52
|
- Full English documentation for global distribution
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
|
|
56
|
+
### v5.2.1 (2025-12-01) - Handedness Control
|
|
57
|
+
- ✨ **New**: C++ level handedness control (`set_handedness('left'/'right')`)
|
|
58
|
+
- 🔧 **Fixed**: Frenet frames now respect coordinate system handedness
|
|
59
|
+
- 📚 **Improved**: Global handedness setting for consistent behavior
|
|
60
|
+
|
|
61
|
+
|
|
55
62
|
## 🆕 What's New in v4.0.0
|
|
56
63
|
|
|
57
64
|
### 🎯 Fourier Spectral Geometry Analysis
|
|
@@ -4,6 +4,14 @@ from .coordinate_system import vec3, vec2
|
|
|
4
4
|
from .coordinate_system import quat
|
|
5
5
|
from .coordinate_system import coord3
|
|
6
6
|
|
|
7
|
+
|
|
8
|
+
# Coordinate system handedness control (v5.2.1+)
|
|
9
|
+
from .coordinate_system import (
|
|
10
|
+
set_handedness,
|
|
11
|
+
get_handedness,
|
|
12
|
+
is_left_handed,
|
|
13
|
+
is_right_handed
|
|
14
|
+
)
|
|
7
15
|
# Differential geometry module (v3.3.0+)
|
|
8
16
|
from .differential_geometry import (
|
|
9
17
|
# Classes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: coordinate_system
|
|
3
|
-
Version: 5.2.
|
|
3
|
+
Version: 5.2.1
|
|
4
4
|
Summary: High-performance 3D coordinate system with C2-continuous curve interpolation, Fourier frames with operator overloading, and advanced 3D visualization
|
|
5
5
|
Home-page: https://github.com/panguojun/Coordinate-System
|
|
6
6
|
Author: PanGuoJun
|
|
@@ -50,13 +50,13 @@ Requires-Dist: matplotlib>=3.3.0
|
|
|
50
50
|
[](LICENSE)
|
|
51
51
|
|
|
52
52
|
**Author:** PanGuoJun
|
|
53
|
-
**Version:** 5.2.
|
|
53
|
+
**Version:** 5.2.1
|
|
54
54
|
**License:** MIT
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
## What's New in v5.2.
|
|
59
|
+
## What's New in v5.2.1 (2025-12-01)
|
|
60
60
|
|
|
61
61
|
### Fourier Frames with Operator Overloading
|
|
62
62
|
|
|
@@ -94,6 +94,13 @@ Requires-Dist: matplotlib>=3.3.0
|
|
|
94
94
|
- Full English documentation for global distribution
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
|
|
98
|
+
### v5.2.1 (2025-12-01) - Handedness Control
|
|
99
|
+
- ✨ **New**: C++ level handedness control (`set_handedness('left'/'right')`)
|
|
100
|
+
- 🔧 **Fixed**: Frenet frames now respect coordinate system handedness
|
|
101
|
+
- 📚 **Improved**: Global handedness setting for consistent behavior
|
|
102
|
+
|
|
103
|
+
|
|
97
104
|
## 🆕 What's New in v4.0.0
|
|
98
105
|
|
|
99
106
|
### 🎯 Fourier Spectral Geometry Analysis
|
|
@@ -535,4 +535,30 @@ PYBIND11_MODULE(coordinate_system, m) {
|
|
|
535
535
|
m.attr("__version__") = "4.0.1";
|
|
536
536
|
m.attr("__author__") = "PanGuoJun";
|
|
537
537
|
m.attr("__coordinate_system__") = "right-handed";
|
|
538
|
+
|
|
539
|
+
// ===========================================================================
|
|
540
|
+
// Coordinate System Handedness Control
|
|
541
|
+
// ===========================================================================
|
|
542
|
+
m.def("set_handedness", [](const std::string& handedness) {
|
|
543
|
+
if (handedness == "left" || handedness == "LEFT") {
|
|
544
|
+
set_coordinate_handedness(true);
|
|
545
|
+
} else if (handedness == "right" || handedness == "RIGHT") {
|
|
546
|
+
set_coordinate_handedness(false);
|
|
547
|
+
} else {
|
|
548
|
+
throw std::invalid_argument("handedness must be 'left' or 'right'");
|
|
549
|
+
}
|
|
550
|
+
}, "Set coordinate system handedness ('left' or 'right')", py::arg("handedness"));
|
|
551
|
+
|
|
552
|
+
m.def("get_handedness", []() -> std::string {
|
|
553
|
+
return get_coordinate_handedness() ? "left" : "right";
|
|
554
|
+
}, "Get current coordinate system handedness");
|
|
555
|
+
|
|
556
|
+
m.def("is_left_handed", []() -> bool {
|
|
557
|
+
return get_coordinate_handedness();
|
|
558
|
+
}, "Check if using left-handed coordinate system");
|
|
559
|
+
|
|
560
|
+
m.def("is_right_handed", []() -> bool {
|
|
561
|
+
return !get_coordinate_handedness();
|
|
562
|
+
}, "Check if using right-handed coordinate system");
|
|
563
|
+
|
|
538
564
|
}
|
|
@@ -148,6 +148,25 @@ inline real lerp(real h1, real h2, real alpha) {
|
|
|
148
148
|
return h1 * (1.0 - alpha) + h2 * alpha;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
// ==============================================================================
|
|
152
|
+
// Coordinate System Handedness (Left/Right)
|
|
153
|
+
// ==============================================================================
|
|
154
|
+
namespace {
|
|
155
|
+
// Global handedness setting: true = left-handed (default), false = right-handed
|
|
156
|
+
bool g_use_left_handed_system = true;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Set coordinate system handedness
|
|
160
|
+
inline void set_coordinate_handedness(bool use_left_handed) {
|
|
161
|
+
g_use_left_handed_system = use_left_handed;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Get current coordinate system handedness
|
|
165
|
+
inline bool get_coordinate_handedness() {
|
|
166
|
+
return g_use_left_handed_system;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
151
170
|
inline real sign(real x) {
|
|
152
171
|
return x < 0 ? -1.0 : (x > 0 ? 1.0 : 0.0);
|
|
153
172
|
}
|
|
@@ -877,12 +896,22 @@ struct vector3
|
|
|
877
896
|
}
|
|
878
897
|
DEVICE_CALLABLE vector3 cross(const vector3& v) const
|
|
879
898
|
{
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
899
|
+
// Use global handedness setting
|
|
900
|
+
if (g_use_left_handed_system) {
|
|
901
|
+
// Left-handed system
|
|
902
|
+
vector3 n;
|
|
903
|
+
n.x = -(y * v.z - z * v.y);
|
|
904
|
+
n.y = -(z * v.x - x * v.z);
|
|
905
|
+
n.z = -(x * v.y - y * v.x);
|
|
906
|
+
return n;
|
|
907
|
+
} else {
|
|
908
|
+
// Right-handed system
|
|
909
|
+
vector3 n;
|
|
910
|
+
n.x = (y * v.z - z * v.y);
|
|
911
|
+
n.y = (z * v.x - x * v.z);
|
|
912
|
+
n.z = (x * v.y - y * v.x);
|
|
913
|
+
return n;
|
|
914
|
+
}
|
|
886
915
|
}
|
|
887
916
|
DEVICE_CALLABLE vector3 cross_left(const vector3& v) const
|
|
888
917
|
{
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
setup.py - Cross-platform setup for coordinate_system package
|
|
3
3
|
|
|
4
4
|
Author: PanGuoJun
|
|
5
|
-
Version: 5.2.
|
|
5
|
+
Version: 5.2.1
|
|
6
6
|
License: MIT
|
|
7
7
|
"""
|
|
8
8
|
|
|
@@ -69,7 +69,7 @@ ext_modules = [
|
|
|
69
69
|
|
|
70
70
|
setup(
|
|
71
71
|
name='coordinate_system',
|
|
72
|
-
version='5.2.
|
|
72
|
+
version='5.2.1',
|
|
73
73
|
packages=find_packages(),
|
|
74
74
|
ext_modules=ext_modules, # Add extension modules
|
|
75
75
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/curve_interpolation.py
RENAMED
|
File without changes
|
{coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system/differential_geometry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coordinate_system-5.2.0 → coordinate_system-5.2.1}/coordinate_system.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|