Open admer456-stu opened 2 years ago
We got Plane
now.
Polygon
is underway.
Edit: Polygon
is now here too.
Okay, so, InstanceChain
has been renamed to just Chain
(hopefully not to be confused with swap chains), and some type aliases were added, like using String = std::string;
, which just looks good to my eyes. :3
This should be enough for now. After that, I'll do Library
, File
and other filesystem-related stuff.
Think I'll heavily reference JoltPhysics's maths library for Vec2, Vec4, Quat and Mat44.
More stuff for future reference, could probably carry over into a new issue:
Triangular barycentric coordinates: https://codeplea.com/triangular-interpolation
Tetrahedral barycentric coordinates: https://stackoverflow.com/questions/38545520/barycentric-coordinates-of-a-tetrahedron Can derive tetrahedral interpolation from this, which might be useful for things like these: https://www.gdcvault.com/play/1015312/Light-Probe-Interpolation-Using-Tetrahedral
Splines and trilinear interpolation: https://codeplea.com/introduction-to-splines http://paulbourke.net/miscellaneous/interpolation/
Investigate doing mesh tetrahedralisation (from now on: tetrameshing) with V-HACD and Qhull. https://github.com/kmammou/v-hacd https://github.com/qhull/qhull V-HACD will approximately generate a collection of convex hulls and Qhull can then generate tetrahedral meshes out of those. Should work, right?
V-HACD supports non-watertight meshes BTW. This is pretty nice. Also, still gotta cover Delaunay triangulation, tetrahedralisation and Voronoi fracturing.
Could refer to this for Delaunay triangulation in 3D: https://github.com/obviousjim/ofxDelaunay
This one's constrained and in 2D: https://github.com/artem-ogre/CDT
Voronoi in 3D: https://github.com/chr1shr/voro This one actually uses Voro++: https://github.com/patriciogonzalezvivo/ofxVoro
Voronoi in 2D: https://github.com/madc/ofxVoronoi https://github.com/JCash/voronoi
I think that'll cover it all.
Geometry processing (convex decomposition, convex hull generation, triangulation, tetrameshing, Voronoi cells) will be a separate issue in a couple of months, but it's satisfied for now in terms of prerequisites.
We got the Library
class now.
Added AABB
and Octree
(with a template N-dimensional tree of course), and a couple more things to the to-do list.
Added Vec2
, Vec4
and DateTime
.
Added a Mat4
draft, can be ticked off at this point. Mat34
will probably not be a thing, and frankly I don't know about Mat3
either, it looks like we could just use Mat4
for everything and enjoy the recent SIMD goodies.
Turns out the class won't be over just yet, so yay! This means I can write some more stuff.
So, this library's going pretty fine, but, there's some extra stuff I've identified that would be very useful to have:
Lexer
needs additional delimiters, e.g. if we wanna pass{}().,:;
to itLexerCache
class which contains all tokensLexer
extractsVec2
andVec4
Quat
like in GLMMat4
like in GLM(AlsoMat3
andMat34
?)Lerp.hpp
is the most basic of the basics)adm::format
std::string
File
class similar to the one in .NETDateTime
utilitiesPlane
like in Sledge EditorPolygon
like in Sledge Editor, to be used in my TrenchBroom map parserFrustum
class, to be used in culling and other thingsAABB
class for bounding boxes and octreesRect
class for 2D bounding volumes and quadtreesusing
s for stylistic consistencyBitBuffer
to write bits and bytes intoLibrary
class), could be a separate libraryOnce these are done, then I pretty much don't need anything else, as far as basic utilities are concerned. Eventually, maybe, down the road, there could be a quadtree
& octreein here, and maybe some sorting algorithms? But in general, this is pretty much it.For things like model loading, texture loading, I can generally just use other libraries.