www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 3572c337d689075a8ddfb57f7ed119046e7c4a74
parent 7eea4892038ebee81cb4a080e83c4c4271234df3
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Thu, 12 Jan 2012 21:03:52 +0100

Correction des poids du LOD.

Diffstat:
Mlod.hh | 2+-
Mrules/chose.cpp | 17++++++++---------
Drules/route/routequadchaussee.cpp | 0
Drules/route/routequadchaussee.hh | 0
Drules/route/trottoirquadnormal.cpp | 0
Drules/route/trottoirquadnormal.hh | 0
6 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/lod.hh b/lod.hh @@ -24,7 +24,7 @@ public : struct LodNode { int heaps[18]; float aabb[6]; - float splitBox[12]; + float splitBox[6]; float mergeBox[6]; int inCounter; bool firstBBPoint; diff --git a/rules/chose.cpp b/rules/chose.cpp @@ -125,16 +125,15 @@ void Chose::updateAABB() { float dx = lod.aabb[1] - lod.aabb[0]; float dy = lod.aabb[3] - lod.aabb[2]; float dz = lod.aabb[5] - lod.aabb[4]; - float volume = dx*dy*dz; - float pseudoLength = std::max(1.f, std::pow(volume, 1.f/3.f) / 1000.f); - float splitFactor = 24 * pseudoLength; - float mergeFactor = 25 * pseudoLength; + // TODO pour la pseudoLength sur l'axe x, utiliser y*z, pseudolength_y = x*z, pseudolength_z = x*y. + float pseudoLength = std::sqrt(dx*dy + dy*dz + dx*dz); + float splitIncrement = 5 * pseudoLength; + float mergeIncrement = 6 * pseudoLength; for (int i = 0; i < 3; i++) { - float center = (lod.aabb[2*i] + lod.aabb[2*i+1]) / 2; - lod.splitBox[2*i] = (lod.aabb[2*i] - center) * splitFactor + center; - lod.splitBox[2*i+1] = (lod.aabb[2*i+1] - center) * splitFactor + center; - lod.mergeBox[2*i] = (lod.aabb[2*i] - center) * mergeFactor + center; - lod.mergeBox[2*i+1] = (lod.aabb[2*i+1] - center) * mergeFactor + center; + lod.splitBox[2*i] = lod.aabb[2*i] - splitIncrement; + lod.splitBox[2*i+1] = lod.aabb[2*i+1] + splitIncrement; + lod.mergeBox[2*i] = lod.aabb[2*i] - mergeIncrement; + lod.mergeBox[2*i+1] = lod.aabb[2*i+1] + splitIncrement; } } diff --git a/rules/route/routequadchaussee.cpp b/rules/route/routequadchaussee.cpp diff --git a/rules/route/routequadchaussee.hh b/rules/route/routequadchaussee.hh diff --git a/rules/route/trottoirquadnormal.cpp b/rules/route/trottoirquadnormal.cpp diff --git a/rules/route/trottoirquadnormal.hh b/rules/route/trottoirquadnormal.hh