Sammen med GMlib følger en demoapplikasjon som du kan ha som utgangspunkt for å komme i gang.
Kjernen i GMlib er en scene (en Scene klasse). Scenen representerer et Euclidsk rom med affin struktur ( BB side14). Scenen har en scenegraf, som er et ikke syklisk tre (en hierarkisk modell) av SceneObject. Det betyr at Scenen har en liste av SceneObject, og hvert SceneObject har også en liste av SceneObject. Komandoen for å sette inn et objekt i scenegrafen er insert(object). Både scenen og sceneobjektene har insert() funksjon. Følgende regler må følges:
- SceneObject må lages med new ...
- Et SceneObject må bare settes inn en plass.
- Når et objekt er satt inn har objektet det er satt inn i overtatt ansvaret for det insatte objektet og dermed også sletting av det (delete)...
- Du kan få tilbake ansvaret med å bruke remove().Hvis objektet har enheten du vil ha og tillater at du tar det tilbake, returnerer det enhetens adresse og fjerner enheten fra sin liste, ellers returnerer den nullptr.
-
Core - Som er template-basert og inneholder:
- Types - Dette er kjernen i å håndtere en Affin struktur, og er statiske grunnleggende typer. Dette er:
- Angle
- Point, Vector, UnitVector
- Arrow, ScalarPoint, Sphere, Box, PlaneArrow
- Matrix, SqMatrix, HqMatrix
- Simplex, LineSegment, Triangle, Tetrahedron
- SubSpace, Line, Plane, Cube
- Conteiners - Dette er dynamiske typer som suplerer std:containerene. Dette er:
- Array, ArrayLX, ArrayT
- DVector, DVectorN, DMatrix Dette er mattematiske typer med operatorer og invertering
- Utils - inneholder en serie hjelpetyper og funksjoner som:
- Color
- Devided differrences
- Random
- Simplex methode
- SortObject
- Stream operator og Separator
- GMTimer
- compValueF, binomial, clamp
- Funksjoner til std::vector, streamoperator, isIn, findIndexToElem
- Types - Dette er kjernen i å håndtere en Affin struktur, og er statiske grunnleggende typer. Dette er:
- Scene - som inneholder Scene og SceneObject, samt:
- Kamera
- Camera, et kamera med standard projeksjon.
- IsoCamera, som bevarer mål.
- Light, baseklassen for
- PointLight
- SpotLight
- Sun
- Parametric - som er template-basert og er baseklassen for parametriserte kurver, flater og triangler:
- Kurver. Dette er:
- Line, Circle, Arc
- LogSpiral, RoseCurve, Butterfly, Lemniskate, ChrysanthemumCurve
- BezierCurve, HermiteCurve, BSplineCurve, BlendingSplineCurve
- Subdivisjonskurver:
- LaneRiesenfeldt, CatmullClarc, Chaikins
- CatmullRom
- Flater. Dette er:
- Plane, Cone, Cylinder, Sphere, Torus
- SweepSurf, CoonsPatch, PBezierCurveSurf, PHermiteCurveSurf, RotationalSurf
- BezierSurf, HermiteSurf, BSplineSurf, SubSurf, BlendingSplineSurf
- AsteroidalSphere, BentHorns, BohemianDome, Bottle8, BoysSurface
- CrossCap, DiniSurface, EightSurface, EnnepersSurface, Heart, Helicoid
- InsideOutTorus, KleinsBottle, KuenSurface, MoebiusStrip, MonkeySaddle
- Seashell, SinSurface, SlippersSurface, SteinerSurf, SwallowTail
- TrianguloidTrefoil, WhitneyUmbrella
- Subdivisjons-flater:
- Catmull-Clark, Doo-Sabin, Mid_Edge Konvergerer mot 3- og 2-grads B-splines
- Loop, Sqrt3-Kobbelt konvergerer mot box-splines, triangelbasert
- Butterfly, Modifiser Butterfly interpolerende subdivisjon - Lagrange
- Triangel-baserte flater parametrisert med homogene barysentriske koordinater. Dette er:
- BezierTriangle
- BlendingTriangle
- SubTriangle
- Kurver. Dette er:
- TriangleSystem - En klasse for Delaunay-triangulering av en sett med unike punkter.
- TriangleFacets Delaunay-triangulering
- TSVertex, TSEdge, TSTriangle
- TSTile Voronoi diagram
- TSLine, TSVEdge
I tillegg er det en modul som heter OpenGL. Modulen inneholder shadere og renderer.
Det er planlagt å lage modul for Vulkan også, slik at du kan velge grafikksystemet du vil bruke.
- TriangleFacets Delaunay-triangulering