Aus öffentlichen Paketdaten erstellte Orientierung.
superdeclarative_geometry ist ein Dart-Paket, das erstklassigen Support für Winkel, Polarkoordinaten und geometrische Berechnungen bietet. Entwickelt für Präzision und Benutzerfreundlichkeit, liefert es intuitive APIs zur Arbeit mit Rotationsmathematik, Vektortransformationen und Koordinatensystemumrechnungen. Ideal für Anwendungen, die erweiterte Geometriebehandlung erfordern, wie Animationen, Spielentwicklung oder Datenvisualisierung. Das Paket ist plattformübergreifend und unterstützt Android, iOS, Web, macOS, Windows und Linux, wodurch es vielseitig für Flutter-Projekte auf verschiedenen Geräten ist.
Anwendungsfälle
2D/3D-Grafikrendering
Interaktive UI-Animationen
Spielentwicklungsmechaniken
Datenvisualisierung mit radialen Layouts
Koordinatensystemkonvertierungen
Rotationsphysik-Simulationen
Hauptmerkmale
Native Winkel- und Polarkoordinatentypen
Effiziente geometrische Transformationen
Plattformübergreifende Kompatibilität
Sauberer und lesbarer API-Entwurf
Unterstützung für Bogenmaß und Grad
Eingebaute Konvertierungshilfen
Geeignet für
Flutter-Entwickler, die mit Geometrie arbeiten
UI/UX-Designer, die präzise Drehungen benötigen
Gameentwickler, die Vektormathematik benötigen
Ersteller von Visualisierungstools
Bildungs-Apps, die mathematische Konzepte beinhalten
Hinweise
Erfordert Verständnis von polaren und Winkelmathematik
Kann für einfache lineare Layouts Overhead hinzufügen
Am besten geeignet für Projekte mit geometrischer Komplexität
Nicht für hochfrequente Echtzeitberechnungen optimiert
Angles are confined to values in (-360°, 360°). For values beyond this range, the concept of a Rotation is provided.
A Rotation is almost identical to an Angle except that a Rotation can be arbitrarily large in the positive or negative direction. This allows for the accumulation of turns over time.
Create a Rotation:
final rotation = Rotation.fromDegrees(540);
Add, subtract, multiply, and divide Rotations just like Angles.
Reduce a Rotation to an Angle:
Rotation.fromDegrees(540).reduceToAngle();
Polar Coordinates
Define polar coordinates by a radius and an angle, or by a Cartesian point:
// Map to Cartesian coordinates.finalPoint point = PolarCoord(100, Angle.fromDegrees(45)).toCartesian();
Cartesian Orientations
Different use-cases treat angles in different ways.
Mathematics treats the positive x-axis as a 0° angle and treats positive angles as running counter-clockwise.
Flutter app screens treat the positive x-axis as a 0° angle, but then treats positive angles as running clockwise.
Ship navigation treats the positive y-axis as a 0° angle and then treats positive angles as running clockwise.
Each of these situations apply a different orientation when mapping an angle, or a polar coordinate, to a location in Cartesian space. This concept of orientation is supported by superdeclarative_geometry by way of CartesianOrientations.
Both Angle and PolarCoord support CartesianOrientation mappings.
final polarCoord = PolarCoord(100, Angle.fromDegrees(30));
// Treat angles like a Flutter screen.// This point is 30° clockwise from the x-axis.final screenPoint = polarCoord.toCartesian(); // defaults to "screen" orientation// Treat angles like mathematics.// This point is 30° counter-clockwise from the x-axis.final mathPoint = polarCoord.toCartesian(orientation: CartesianOrientation.math);
// Treat angles like navigators.// This point is 30° clockwise from the y-axis.final navigationPoint = polarCoord.toCartesian(orientation: CartesianOrientation.navigation);
You can define a custom CartesianOrientation by implementing the interface. Then, you can pass an instance of your custom orientation into PolarCoord's toCartesian() method.