gamnit: intro `Model::dimensions & center`
authorAlexis Laferrière <alexis.laf@xymus.net>
Sat, 25 Jun 2016 20:50:22 +0000 (16:50 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Sun, 26 Jun 2016 12:03:54 +0000 (08:03 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/gamnit/depth/model_dimensions.nit

index 37327af..1e6a8ba 100644 (file)
@@ -17,6 +17,54 @@ module model_dimensions
 
 import depth_core
 
+redef class Model
+
+       # Dimensions of the bounding box containing all vertices
+       var dimensions = new Point3d[Float](max.x-min.x, max.y-min.y, max.z-min.z) is lazy, writable
+
+       # Center coordinates of all the vertices
+       var center = new Point3d[Float]((min.x+max.x)/2.0, (min.y+max.y)/2.0, (min.z+max.z)/2.0) is lazy, writable
+
+       # Minimum coordinates of all vertices on each axes
+       #
+       # This is a corner of the bounding box.
+       var min: Point3d[Float] is lazy do
+               var mx = inf
+               var my = inf
+               var mz = inf
+               for leaf in leaves do
+                       var lm = leaf.mesh.min
+                       mx = mx.min(lm.x)
+                       my = my.min(lm.y)
+                       mz = mz.min(lm.z)
+               end
+               return new Point3d[Float](mx, my, mz)
+       end
+
+       # Maximum coordinates of all vertices on each axes
+       #
+       # This is a corner of the bounding box.
+       var max: Point3d[Float] is lazy do
+               var mx = -inf
+               var my = -inf
+               var mz = -inf
+               for leaf in leaves do
+                       var lm = leaf.mesh.max
+                       mx = mx.max(lm.x)
+                       my = my.max(lm.y)
+                       mz = mz.max(lm.z)
+               end
+               return new Point3d[Float](mx, my, mz)
+       end
+end
+
+redef class LeafModel
+
+       redef fun dimensions do return mesh.dimensions
+
+       redef fun center do return mesh.center
+end
+
 redef class Mesh
 
        # Dimensions of the bounding box containing all vertices