Author: rambetter

New Revision: 376
Undoing revision 375 because it did not offer measured accuracy improvements
in the q3map2 math calculations.
This commit is contained in:
Rudolf Polzer 2010-12-29 17:36:09 +01:00
parent 887435af2b
commit 7daa362c91
2 changed files with 21 additions and 2 deletions

View File

@ -66,3 +66,18 @@ is this:
As you can see, all points but one have an increase in accuracy. This is As you can see, all points but one have an increase in accuracy. This is
still not accurate enough in my opinion, but is a step in the right direction. still not accurate enough in my opinion, but is a step in the right direction.
MORE NOTES:
===========
I attempted to improve upon revision 371 by streamlining the code in
BaseWindingForPlane() some more. Those attempts were committed as r375.
After revision 375:
(6784.09375000 16241.01757812 -1722.04687500)
(6144.00000000 16082.99414062 -1443.00390625)
(6144.00000000 16122.00000000 -1424.00097656)
Revision 375 has since been reverted (undone) because of the loss in
accuracy.

View File

@ -253,9 +253,13 @@ winding_t *BaseWindingForPlane (vec3_t normal, vec_t dist)
vright[2] = normal[1]; vright[2] = normal[1];
break; break;
} }
// NOTE: vright is NOT a unit vector at this point.
VectorSetLength(vright, MAX_WORLD_COORD * 2, vright);
CrossProduct(normal, vright, vup); CrossProduct(normal, vright, vup);
// IMPORTANT NOTE: vright and vup are NOT unit vectors at this point.
// However, normal, vup, and vright are pairwise perpendicular.
VectorSetLength(vup, MAX_WORLD_COORD * 2, vup);
VectorSetLength(vright, MAX_WORLD_COORD * 2, vright);
VectorScale(normal, dist, org); VectorScale(normal, dist, org);
w = AllocWinding(4); w = AllocWinding(4);