GA-FuL Projektstruktur
Inhaltsverzeichnis
Γbersicht
Das GA-FuL-Projekt ist in mehrere Module unterteilt, die jeweils spezifische FunktionalitΓ€ten bereitstellen. Die Struktur folgt dem geschichteten Design der Bibliothek.
GeometricAlgebraFulcrumLib/
βββ GeometricAlgebraFulcrumLib/ # Hauptordner mit allen Modulen
β βββ GeometricAlgebraFulcrumLib.Algebra/
β βββ GeometricAlgebraFulcrumLib.Modeling/
β βββ GeometricAlgebraFulcrumLib.MetaProgramming/
β βββ GeometricAlgebraFulcrumLib.Utilities.*/
β βββ GeometricAlgebraFulcrumLib.Applications/
β βββ GeometricAlgebraFulcrumLib.Mathematica/
β βββ GeometricAlgebraFulcrumLib.Matlab/
β βββ ...
βββ GeometricAlgebraFulcrumLib.Documentation/
βββ GeometricAlgebraFulcrumLib.Visualizations/
βββ docs/ # Diese Dokumentation
βββ assets/
βββ README.adoc
βββ LICENSE
Hauptmodule
Kern-Module (Algebra-Schicht)
1. GeometricAlgebraFulcrumLib.Algebra
Zweck: Kern-Algebra-Implementierung
Hauptkomponenten:
GeometricAlgebra/: GA-Operationen und MultivektorenBasis/: Basis-Blades und Index-SetsDense/: Optimierte Dense-ImplementierungExtended/: Erweiterte GA (XGa)Restricted/: EingeschrΓ€nkte GA (RGa)
ComplexAlgebra/: Komplexe ZahlenLinearAlgebra/: Vektoren, Matrizen, TensorenScalars/: Skalar-ProzessorenGeometricFrequency/: Spektralanalyse
AbhΓ€ngigkeiten:
- MathNet.Numerics
- PeterO.Numbers
- AngouriMath
- NumpyDotNet
Wichtige Klassen:
GeometricAlgebra/
βββ XGaProcessor<T> # Haupt-GA-Prozessor
βββ XGaMultivector<T> # Multivektor
βββ XGaKVector<T> # k-Vektor
βββ XGaBasisBlade # Basis-Blade
βββ XGaMetric # Metrik-Definition
βββ Composers/
βββ XGaMultivectorComposer<T> # Multivektor-Builder
2. GeometricAlgebraFulcrumLib.Utilities.Structures
Zweck: Grundlegende Datenstrukturen
Hauptkomponenten:
IndexSets/: Implementierungen von IIndexSetDictionaries/: Optimierte Dictionary-ImplementierungenCollections/: Spezialisierte CollectionsBitManipulation/: Bit-Operationen fΓΌr effiziente Index-Sets
Wichtige Klassen:
IndexSets/
βββ IIndexSet # Interface
βββ EmptyIndexSet # Leere Menge
βββ SingleIndexSet # Ein Element
βββ UInt64IndexSet # FΓΌr Dimension < 64
βββ DenseIndexSet # Dense-Array
βββ SparseIndexSet # Sparse-HashSet
3. GeometricAlgebraFulcrumLib.Utilities.Text
Zweck: Text- und LaTeX-Generierung
Hauptkomponenten:
Text/: Formatierte Text-GenerierungLaTeX/: LaTeX-Code-CompositionParametric/: Template-basierte Text-GenerierungFiles/: Datei- und Ordner-Hierarchie-Erstellung
4. GeometricAlgebraFulcrumLib.Utilities.Code
Zweck: Code-Generierungs-Utilities
Hauptkomponenten:
SyntaxTree/: Abstract Syntax Trees (AST)Languages/: Sprach-spezifische Code-GeneratorenExpressions/: Expression-ReprΓ€sentationen
5. GeometricAlgebraFulcrumLib.Utilities.Web
Zweck: Web-Grafik-Utilities
Hauptkomponenten:
Svg/: SVG-GenerierungHtml/: HTML-GenerierungJavaScript/: JavaScript-Code-GenerierungBabylonJs/: Babylon.js-Integration
Modellierungs-Module
6. GeometricAlgebraFulcrumLib.Modeling
Zweck: Geometrische Modellierung
Hauptkomponenten:
Geometry/: Geometrische ObjekteCGa/: Conformal Geometric AlgebraPGa/: Projective Geometric AlgebraEuclidean/: Euklidische Geometrie
Graphics/: Grafik-PrimitivenCalculus/: Geometrischer KalkΓΌl (in Entwicklung)
Wichtige Klassen:
Geometry/
βββ CGa/
βββ CGaGeometricSpace5D<T> # 5D-CGA fΓΌr 3D-Geometrie
βββ CGaGeometricSpace4D<T> # 4D-CGA fΓΌr 2D-Geometrie
βββ Encoding/
βββ EncodeIpnsRound # IPNS Round-Objects
βββ EncodeOpnsFlat # OPNS Flat-Objects
βββ Decode # Dekodierung
Metaprogrammierungs-Module
7. GeometricAlgebraFulcrumLib.MetaProgramming
Zweck: Code-Generierung und Optimierung
Hauptkomponenten:
Context/: Meta-KontextExpressions/: Meta-ExpressionsComposers/: Code-ComposerOptimizers/: Code-OptimiererApplications/: Anwendungsbeispiele
Wichtige Klassen:
MetaProgramming/
βββ MetaContext # Haupt-Kontext
βββ IMetaExpression # Expression-Interface
βββ MetaExpressionComposer # Expression-Builder
βββ CodeComposer # Code-Generator
βββ Optimizers/
βββ ConstantPropagation
βββ CommonSubexpressionElimination
βββ GeneticProgramming
Integrations-Module
8. GeometricAlgebraFulcrumLib.Mathematica
Zweck: Wolfram Mathematica Integration
Hauptkomponenten:
Processors/: Mathematica-Skalar-ProzessorExpressions/: Mathematica-Expression-WrapperUtilities/: Hilfsfunktionen
AbhΓ€ngigkeiten:
- Wolfram.NETLink
9. GeometricAlgebraFulcrumLib.Matlab
Zweck: MATLAB Integration und Toolbox
Hauptkomponenten:
GA-FuL MATLAB Toolbox/: VollstΓ€ndige MATLAB-ToolboxProcessors/: MATLAB-Skalar-ProzessorCodeGeneration/: MATLAB-Code-Generierung
Features:
- MATLAB-Funktions-Generierung
- GA-Operationen in MATLAB
- Visualisierung
Anwendungs-Module
10. GeometricAlgebraFulcrumLib.Applications
Zweck: Allgemeine Anwendungsbeispiele
Hauptkomponenten:
- Verschiedene Anwendungsbeispiele fΓΌr GA-FuL
- Demos und Tutorials
11. GeometricAlgebraFulcrumLib.Applications.Symbolic
Zweck: Symbolische Anwendungen
Hauptkomponenten:
- Symbolische GA-Berechnungen
- Mathematica-basierte Anwendungen
12. GeometricAlgebraFulcrumLib.Samples.Generations
Zweck: Code-Generierungs-Beispiele
Hauptkomponenten:
- Code-Generierungs-Samples
- Template-Beispiele
ZusΓ€tzliche Module
13. GeometricAlgebraFulcrumLib.MonoGame
Zweck: MonoGame-Integration fΓΌr Spiele und Grafik
14. GeometricAlgebraFulcrumLib.Stride
Zweck: Stride Game Engine Integration
15. GeometricAlgebraFulcrumLib.Optimization
Zweck: Optimierungsalgorithmen
16. GeometricAlgebraFulcrumLib.Benchmarks
Zweck: Performance-Benchmarks
Tools:
- BenchmarkDotNet
- Performance-Tests
17. GeometricAlgebraFulcrumLib.UnitTests
Zweck: Unit-Tests
Framework:
- xUnit oder NUnit
Verzeichnisstruktur
Typische Modul-Struktur
GeometricAlgebraFulcrumLib.ModuleName/
βββ GeometricAlgebraFulcrumLib.ModuleName.csproj
βββ Namespace1/
β βββ Class1.cs
β βββ Class2.cs
β βββ Subfolder/
β βββ Class3.cs
βββ Namespace2/
β βββ ...
βββ Properties/
βββ AssemblyInfo.cs (optional)
Beispiel: Algebra-Modul
GeometricAlgebraFulcrumLib.Algebra/
βββ GeometricAlgebraFulcrumLib.Algebra.csproj
βββ Scalars/
β βββ IScalarProcessor.cs
β βββ ScalarProcessorOfFloat64.cs
β βββ ScalarProcessorOfFloat32.cs
β βββ ...
βββ GeometricAlgebra/
β βββ Basis/
β β βββ IIndexSet.cs
β β βββ XGaBasisBlade.cs
β β βββ ...
β βββ Extended/
β β βββ XGaProcessor.cs
β β βββ XGaMultivector.cs
β β βββ XGaKVector.cs
β β βββ Composers/
β β βββ XGaMultivectorComposer.cs
β βββ Restricted/
β βββ RGaProcessor.cs
β βββ ...
βββ LinearAlgebra/
β βββ Vectors/
β βββ Matrices/
β βββ Tensors/
βββ ComplexAlgebra/
βββ ...
AbhΓ€ngigkeiten
AbhΓ€ngigkeits-Graph
βββββββββββββββββββββββββββββββββββββββ
β Applications, Samples, Tests β
ββββββββββββββ¬βββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββββββββββββββ
β MetaProgramming, Mathematica β
ββββββββββββββ¬βββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββββββββββββββ
β Modeling β
ββββββββββββββ¬βββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββββββββββββββ
β Algebra β
ββββββββββββββ¬βββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββββββββββββββ
β Utilities (Text, Code, β
β Structures, Web) β
βββββββββββββββββββββββββββββββββββββββ
NuGet-Pakete
Algebra-Modul:
<PackageReference Include="AngouriMath" Version="1.3.0" />
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
<PackageReference Include="PeterO.Numbers" Version="1.8.2" />
<PackageReference Include="NumpyDotNet" Version="0.9.87.2" />
<PackageReference Include="OxyPlot.Core" Version="2.2.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.10" />
<PackageReference Include="EPPlus" Version="8.0.7" />
<PackageReference Include="Dew.Math" Version="6.2.3" />
Mathematica-Modul:
<Reference Include="Wolfram.NETLink" />
Build-Konfiguration
.NET-Konfiguration
Alle Projekte verwenden:
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Build-Befehle
Gesamte Solution bauen:
cd GeometricAlgebraFulcrumLib
dotnet build GeometricAlgebraFulcrumLib.sln
Spezifisches Projekt bauen:
cd GeometricAlgebraFulcrumLib/GeometricAlgebraFulcrumLib.Algebra
dotnet build
Tests ausfΓΌhren:
cd GeometricAlgebraFulcrumLib/GeometricAlgebraFulcrumLib.UnitTests
dotnet test
Release-Build:
dotnet build -c Release
Namenskonventionen
Assembly-Namen
Format: GeometricAlgebraFulcrumLib.<ModuleName>
Beispiele:
GeometricAlgebraFulcrumLib.AlgebraGeometricAlgebraFulcrumLib.ModelingGeometricAlgebraFulcrumLib.MetaProgramming
Namespace-Konventionen
Format: GeometricAlgebraFulcrumLib.<ModuleName>.<SubNamespace>
Beispiele:
GeometricAlgebraFulcrumLib.Algebra.ScalarsGeometricAlgebraFulcrumLib.Algebra.GeometricAlgebra.BasisGeometricAlgebraFulcrumLib.Modeling.Geometry.CGa
Klassen-PrΓ€fixe
| PrΓ€fix | Bedeutung | Beispiel |
|---|---|---|
XGa |
Extended GA | XGaProcessor<T> |
RGa |
Restricted GA | RGaProcessor<T> |
CGa |
Conformal GA | CGaGeometricSpace5D<T> |
PGa |
Projective GA | PGaGeometricSpace<T> |
Float64 |
64-bit float optimiert | RGaFloat64Multivector |
Zusammenfassung
Die Projektstruktur von GA-FuL:
β Modular: Klare Trennung der Verantwortlichkeiten β Geschichtet: Von Utilities bis Applications β Erweiterbar: Einfaches HinzufΓΌgen neuer Module β Gut organisiert: Konsistente Namenskonventionen β Dokumentiert: Klare Struktur und AbhΓ€ngigkeiten