Commit graph

386 commits

Author SHA1 Message Date
rambetter
0306f2c5b9 Getting ready to commit Rambetter-math-fix-experiments branch changes to
trunk, as pertaining to q3map2.  Some last-minute changes:

- EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES, EXPERIMENTAL_SNAP_NORMAL_FIX,
and EXPERIMENTAL_SNAP_PLANE_FIX all set to 0 to make sure stuff in trunk 
uses old "broken but stable" code, at least initially until there is further
testing done and/or some decision is made about which code to use.

- Fixing small typo in comment in PlaneEqual() in map.c.

- In comment to BaseWindingForPlane() function, describing why the old
function is broken as far as accuracy goes.  This used to be a TODO.

- VectorIsOnAxialPlane() function comment fixed	in mathlib.c.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@415 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-10 05:38:30 +00:00
rambetter
d10c0e21e3 - Adjusting various comments in EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES
code, etc.

- In CreateBrushWindings(), not going into FixWindingAccu() (in 
EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES code path) until a winding has
been chopped against all sides.  I don't see any reason to do it the old way
of fixing the winding after each chop, especially since endpoints of the 
winding	may not naturally lie on integer endpoint at that point.

- In q3map2.h, setting normalEpsilon and distanceEpsilon based on
EXPERIMENTAL_SNAP_NORMAL_FIX and EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES,
respectively.  The epsilons are adjusted to compensate for the new nature
of the code.

- Removing unused "ourNormalEpsilon" in SnapNormal().

- In FindFloatPlane(), changing '>' to '>=' for comparison of distanceEpsilon
to be consistent with definition of epsilon and with other code.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@414 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-10 04:23:32 +00:00
rambetter
0a6fabb079 Adding duplicate_plane regression test.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@413 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-10 01:45:52 +00:00
rambetter
44f06be22b Adding coarse_snap_normal regression test.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@411 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-09 20:57:52 +00:00
rambetter
41470e6a03 Adding plane_aliasing regression test as promised in an email. I was able
to come up with this regression test, demonstrating the error, on my first
try.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@410 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-05 05:43:57 +00:00
rambetter
f5ebc52dca Tie up some tid bit loose ends related to q3map2 math improvements:
- Improved comments on SnapWeldVectorAccu() and FixWindingAccu().
In particular, FixWindingAccu() has a new "protocol".  The return value
now has a different meaning.  qtrue means the winding was altered, qfalse
means it wasn't.  The caller should check for degenerate windings (2 points
or less in winding).  Also, input winding to FixWindingAccu() cannot be NULL,
otherwise error is raised.  This is just cleaner in my opinion.

- In code that calls FixWindingAccu(), extra logic for handling NULL (which
now isn't allowed) and degenerate output winding (2 points or less).

- In ChopWindingInPlaceAccu() in polylib.c, factoring code a little bit to
reduce verbosity.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@409 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-05 04:10:48 +00:00
rambetter
9df310da3a Adding degenerate_winding regression test. For q3map2.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@408 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-04 07:27:54 +00:00
rambetter
3da906441c Fixing SnapWeldVectorAccu(). By the way, the original SnapWeldVector() appears
to be significantly broken, but I don't think it should be fixed at this point.
I'm beginning to think that FixWinding() should not be called during the
chop winding procedure.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@407 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-04 06:48:32 +00:00
rambetter
3a15b2a305 - In SnapWeldVectorAccu() (in brush.c), raising error if any of the input
parameters are NULL (instead of just returning).  SnapWeldVectorAccu() is
going to be my next area of focus - much to be proofread there.

- Proofreading and changing FixWindingAccu().  Changes include for example if
a 3-pt winding is input, it always used to return valid.  Now, it keeps
collapsing close points until there is just one point left.  These changes 
have not been tested yet.

- There was a bug in the original FixWinding() where if a dup point was at
the end of the winding, it didn't remove it properly.  Fixed in
FixWindingAccu() (original function untouched).

- If any point is removed in FixWindingAccu(), the algorithm for removing
points is run from the beginning.  This makes things more consistent.

So right now I have to test to see what happens if FixWindingAccu() returns
a winding that has less than 3 points.  This could cause bad things to happen
such as segfault.  I just don't know yet.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@406 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-04 04:26:17 +00:00
rambetter
c53833bfbd Grr, this should have been part of the last commit and I realized this only
after there were unsaved buffers in emacs when I was quitting out of
everything.  This is a comment in map.c related to USE_HASHING, and how we
should test points against the plane even if it's off.  Speaking of which,
I should proofread the USE_HASHING hashing algorithm to make sure it's not
causing any problems.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@405 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-03 07:05:40 +00:00
rambetter
741e429151 Improving little tidbits.
- Removing redundant use of ourNormalEpsilon in SnapNormal().  The choice
for normalEpsilon is good for the long run in my opinion, even with the 
change to SnapNormal().

- Adding "const" to function sig SnapPlaneImproved(), last arg.

- Adding function CopyWindingAccuIncreaseSizeAndFreeOld() in polylib.c,
needed by the chopping function.

- Tying up loose ends in ChopWindingInPlaceAccu() in polylib.c.  Adding comment
related to duplicate plane.  Chooseing maxpts more intelligently.  If we
hit the maxpts bound, no problem!  We dynamically increase the size of the
winding.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@404 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-03 07:02:56 +00:00
rambetter
f17ae01a72 In PlaneEqual() in map.c, being extra anal about the logic there. Previous
logic used '<=' in compare, new logic uses '<'.  This was changed for two
reasons:
1. It adheres the the true meaning of epsilon, which is something along the
lines of "the minimum value that can be added to number X such that number X
takes on a new value after the addition" in computer science.
2. Other code that compares epsilons uses strict inequality, so I don't want
to have a case where to planes are reported equal but are not snapped
together, etc.
I still have to finish looking at where else PlaneEqual() is used and fix
related problems.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@403 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-02 06:50:58 +00:00
rambetter
bf05f9350b - Having just one SnapPlaneImproved() instead of both SnapPlaneImproved()
and SnapPlaneImprovedWithCenter(); SnapPlaneImproved() now takes a list of      
points instead of the precomputed center.

- In FindFloatPlane(), using EXPERIMENTAL_SNAP_PLANE_FIX code even if
USE_HASHING is off.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@402 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-01 19:48:17 +00:00
rambetter
dee4545065 Working on the SnapPlane() issue.
- Adding EXPERIMENTAL_SNAP_PLANE_FIX #define to	q3map2.h, it's now set to 1,
but will be set	to 0 if	and when we merge into trunk.

- SnapPlaneImproved() no longer	takes the center argument but still
fixes the snap distance	(only snap when	normal is axial).

- Adding SnapPlaneImprovedWithCenter() that takes the center argument.
Basically renamed SnapPlaneImproved() from previous commit to
SnapPlaneImprovedWithCenter().

- Adding EXPERIMENTAL_SNAP_PLANE_FIX code block	to FindFloatPlane() that
uses the experimental SnapPlane().

This is	very much a work in progress, many more	things to look at.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@401 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-01 05:43:59 +00:00
rambetter
698b1d6285 Making progress on the SnapPlane() and SnapNormal() issues.
- Removing DIST_EPSILON	#define	from map.c.  It's unused and only confuses
programmers.

- Adding new function SnapPlaneImproved() to map.c which is like
SnapPlane(), only it takes an additional argument which	is the "center".
This new function is not being used anywhere yet.

- In mathlib, adding VectorIsOnAxis() and VectorIsOnAxialPlane(), two
convenience methods that will help make	other code look	more intuitive.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@400 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-01 04:11:04 +00:00
rambetter
2bdcb2d3c2 Adding boolean return value to SnapNormal(). Returns true if the normal
was modified, false otherwise.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@399 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-01 02:48:28 +00:00
rambetter
3afaacd5b2 Addressing the SnapNormal() situation.
- Adding #define EXPERIMENTAL_SNAP_NORMAL_FIX to q3map2.h, it's	now set	to
1, but will be set to 0 if and when we merge to trunk.

- Removing NORMAL_EPSILON #define from map.c.  It's not	used and is
misleading.

- Adding EXPERIMENTAL_SNAP_NORMAL_FIX code block to SnapNormal() in map.c.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@398 8a3a26a2-13c4-0310-b231-cf6edde360e5
2011-01-01 01:58:22 +00:00
rambetter
d51c4e9830 Adding snap_plane regression test for q3map2. I understand the SnapPlane()
problem now after reading the code, and it's a horrid problem.  Horrific.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@397 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 22:24:37 +00:00
rambetter
3916fca24c Spent a few hours thinking about the SnapPlane() problem. Added my comments
to the code.  This commit consists of some paragraphs of comments regarding
my thoughts about why SnapPlane() is broken.

Now that I understand how it's broken, it would be worthwhile to write some
regression tests that demonstrate the problems.  I think I can do that now.

But so far hardly any bugs that I've experienced first-hand have been caused
by SnapPlane() issues.  Now that I understand the theory behind it, I can
certainly expose some bugs with hand-crafted brushes.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@396 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 10:32:32 +00:00
rambetter
9c24f3e995 Making more progress on EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES code.
- Setting EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES to 1 (enabled).  I'll
turn this off before merging into trunk.

- In function MapPlaneFromPoints() in map.c, doing a bit tighter math when
EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES is on.  This comes at the
expense of a few extra CPU cycles.  The signature of the function remains
the same.

- In VectorNormalize() in mathlib.c, fixing a cast of the return value.
I did not see compile warnings or runtime errors, but it seems wrong the
way it was.

- Adding VectorNormalizeAccu() in mathlib.c, for normalizing vectors built on
the high resolution data type.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@395 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 08:54:43 +00:00
rambetter
0749e45aa3 Making more progress on the EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES code.
- Renaming CopyWindingAccuToNormal() to	CopyWindingAccuToRegular() in order to
avoid confusing	"normal" (as in	"regular") with	"normal" (as in	the normal
to the plane).

- In mathlib.h/mathlib.c, breaking out all the *Accu() #define functions
into actual functions in mathlib.c.  I think this is much safer	for ensuring
that the correct types are passed in.  Otherwise math might take place
in the 32 bit world without any	warning.

- Adding VectorCopyAccuToRegular() and VectorCopyRegularToAccu() to mathlib.

- Improving comments on	VEC_SMALLEST_EPSILON_AROUND_ONE	and
VEC_ACCU_SMALLEST_EPSILON_AROUND_ONE.

- Had to "adjust" some code in polylib.c due to	the change in functions
in mathlib (moving from	#define	to actual functions).

In case	you're curious as to the correctness of	this code at this point:
I was able to compile Icy Fantasy -bsp stage in	the same amount	of time	that
it took	in the original	q3map2 (23 seconds to be exact), and there are no
more disappearing triangles.  I'm almost positive the regression tests are
fixed at this point, but there is no hurry in testing them because I still
have to	comb through quite a bit of code to ensure that	things are being
done correctly with respect to math accuracy.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@394 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 07:05:26 +00:00
rambetter
f4232ed93a Optimizing VectorNormalize() without holding back (for accuracy).
I really don't like how the prior operations were all done in 32 bit land.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@393 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 05:36:35 +00:00
rambetter
6ea1ecbf23 Fixing some NULL pointer problems in disappearing_sliver/winding_logging.patch
(patch for regression test logging).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@392 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 03:50:49 +00:00
rambetter
01ac3e0a46 Fixing some NULL pointer issues in the
EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES code path.
Adding extra checks for NULL in the following functions:
- FreeWinding()
- FreeWindingAccu()
- CopyWinding()
- CopyWindingAccuToNormal()
If a NULL winding is passed to any of these functions, a graceful error will
result (as opposed to a segfault).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@391 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 03:21:01 +00:00
rambetter
883e3164be Improving winding_logging.patch by logging the plane normal and dist.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@389 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 01:15:22 +00:00
rambetter
6a93408fd3 Moving #define of EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES to q3map2.h.
Intead of #ifdef, now using #if.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@388 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 00:50:46 +00:00
rambetter
938dddb6b2 In branch Rambetter-math-fix-experiments.
Simplifying segmentation_fault and adding some random notes for regression
tests.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@387 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-31 00:28:39 +00:00
rambetter
cbdff39b12 This is in branch Rambetter-math-fix-experiments.
Adding segmentation_fault regression test.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@386 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 23:40:07 +00:00
rambetter
0fc962a240 In Rambetter-math-fix-experiments branch.
Fixing winding_logging.patch with some new code structure.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@385 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 12:02:41 +00:00
rambetter
f32b2b3712 This is in branch Rambetter-math-fix-experiments.
- Adding a bunch of *Accu() functions:
    * SnapWeldVectorAccu() in brush.c (needs major proofread).
    * FixWindingAccu() in brush.c (needs major proofread).
    * CopyWindingAccuToNormal()	in polylib.c.
    * VectorLengthAccu() in mathlib.c.
    * Q_rintAccu() in mathlib.h.
    * FreeWindingAccu() declaration in polylib.h (was missing).

- Adding a #ifdef's for EXPERIMENTAL_HIGH_PRECISION_MATH_Q3MAP2_FIXES.
It's turned on now.  Testing brush winding formation.

This code compiles on Linux, I have no idea if it works.  About to test	a
little,	then going to bed.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@384 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 11:57:13 +00:00
rambetter
adf336fec1 This is in branch Rambetter-math-fix-experiments.
- Added	lengthy	comment	to describe the	choice of smallestEpsilonAllowed
in polylib.c for the new 64 bit chopping code. 	I think	that this comment
will allow us to make sure that	we have	the correct choice of epsilon.

- Tweaked comments around VEC_SMALLEST_EPSILON_AROUND_ONE and
VEC_ACCU_SMALLEST_EPSILON_AROUND_ONE (actually renamed them).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@383 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 09:47:01 +00:00
rambetter
56e74492bc This is in branch Rambetter-math-fix-experiments.
- Adding new function ChopWindingInPlaceAccu() in polylib.c.  This function is
just like ChopWindingInPlace() except that the winding input has the higher
vect_accu_t resolution.  I actually did a deep massage of this code as well
(went over it with a fine-toothed comb).  I still need to examine it at least
one more time when I'm fresh, and fix an issue related to choosing the value
for maxpts.

- In mathlib.h, defining VEC_SMALLEST_EPSILON and VEC_ACCU_SMALLEST_EPSILON
constants that will help determine suitable epsilons to use for certain
operations.  Comments are provided detailing what these constants do.

- In mathlib.h, defining DotProductAccu() and VectorCopyAccu().

- Small comment in brush.c that has concerns about a certain use of
BaseWindingForPlane() in WriteBSPBrushMap().

State of this code is: compiles on Linux.  May not compile on Windows.  Not
tested (new functionality not used yet in any real code, only functions exist).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@382 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 08:26:49 +00:00
rambetter
a28d27640c This is in branch Rambetter-math-fix-experiments.
- Adding new function BaseWindingForPlaneAccu() in polylib.c.  Analogous to
original BaseWindingForPlane() only that the return value is a
winding_accu_t (new type w/ double precision). 	This function is not being
used yet.

- Restoring the original BaseWindingForPlane() function (pre-r371).  Will keep
this as a reference.  What I did exactly:
  * Renamed BaseWindingForPlane() to BaseWindingForPlaneAccu(), changed stuff.
  * Renamed _BaseWindingForPlane_orig_() to BaseWindingForPlane(), preserved.

- Adding things like vec_accu_t, vec3_accu_t, VectorSubtractAccu(),
VectorAddAccu(), VectorScaleAccu(), CrossProductAccu(), and
winding_accu_t.	 Also AllocWindingAccu() and FreeWindingAccu().

- Removing the recently	added VectorSetLength() function because it is no
longer needed.

State of this code is: compiles, not tested (new functionality not used	yet).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@381 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-30 01:25:37 +00:00
rambetter
40dab90db9 Starting GtkRadiant branch named Rambetter-math-fix-experiments. This is
starting out as a copy of trunk, revision 379.  I may merge work done here
to trunk if the outcome is good.

This is going to be mostly for fixing the base winding accuracy issue.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/Rambetter-math-fix-experiments@380 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-29 21:50:55 +00:00
rambetter
f62ab305fc Undoing revision 377 (reverting just those files modified by that
commit).  I have disovered the fundamental problem to the math error problems,
and although this commit (r377) is "correct", it fails to address the
fundamental problem.  Therefore, I'd rather leave the code in a state that
has the exact same behavior as before until I get a chance to address the
fundamental issue.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@379 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-29 09:00:47 +00:00
rambetter
f487ea7c54 Updating notes on regression tests. They are "mostly sort of fixed". Won't
be fixed for good until I look at the last bit of code that has not been
examined yet, which is the plane intersection code.  I want the errors to be
much less than they are now, even though the disappearing_sliver* tests are
now working.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@378 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-29 05:20:32 +00:00
rambetter
f36b40ae62 Continuing work on BaseWindingForPlane() in polylib.c. In fact I'm pursuing
the approach that was committed in r375 (but was then backed out).  I can't
believe my eyes, but I seem to be getting 0.000000% error in some of my
regression tests.  The trick is to scale by a power of 2 and never do a
VectorNormalize().


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@377 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-29 04:32:35 +00:00
rambetter
52fd922c64 Undoing revision 375 because it did not offer measured accuracy improvements
in the q3map2 math calculations.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@376 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 20:05:50 +00:00
rambetter
05e2114294 Following up on r371; found another optimization for math rounding errors
in BaseWindingForPlane().  This allows me to get rid of an extra call to
VectorSetLength() which contain floating point multiplications.  Behavior
of BaseWindingForPlane() has been verified against base_winding regression
test (comparing output w/ logging patch).


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@375 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 19:26:52 +00:00
rambetter
3725d2baeb Adding new regression test, disappearing_sliver3. I discovered this while
poking around at the numbers from disappearing_sliver2.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@374 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 11:24:14 +00:00
rambetter
2913e619e7 Writing up results of disappearing_sliver2 regression test and commit 371.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@373 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 11:09:06 +00:00
rambetter
538e4a59fc Adding winding_logging.patch to disappearing_sliver regression test that
helps log the vertex coords.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@372 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 10:41:41 +00:00
rambetter
c5449b8cc5 Rewriting BaseWindingForPlane() in polylib.c from the ground up. The behavior
is totally unchanged, and I verified this by running extensive tests.  The
only difference is that the math precision is much much better now.
Performance should be better as well (but that is not tested).
This is a major milestone because it fixes two regression tests:
disappearing_sliver2 and sparkly_seam.
Improvements to math precision is ongoing and more improvements can probably
be made even after this patch.
I will update the README.txt files in the regression tests in a separate
commit.  This commit only includes the actual fixed code.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@371 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 10:02:11 +00:00
rambetter
f40a6cb2d5 Improving base_winding_logging.patch for base_winding regression test.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@370 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 09:53:56 +00:00
rambetter
30029bd5a8 Adding base_winding regression test to test changes to BaseWindingForPlane().
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@369 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 08:42:03 +00:00
rambetter
b3e48a7dae In disappearing_sliver README.txt file, describing which commit revision fixes
the problem.  This is for the regression test.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@368 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-28 08:20:25 +00:00
rambetter
cecc7bbe98 Removing the "message" key from disappearing_sliver2.map.
Sorry about that.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@367 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-27 23:42:36 +00:00
rambetter
929d20d522 Adding disappearing_sliver2 q3map2 regression test. No fix yet (will be soon).
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@366 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-27 23:30:56 +00:00
rambetter
91624ec4de Adding sparkly_seam q3map2 regression test. No fix yet, but there will be
soon.


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@365 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-27 23:14:32 +00:00
rambetter
14a0abf2a0 Adding Windows compile guide.
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@364 8a3a26a2-13c4-0310-b231-cf6edde360e5
2010-12-27 08:29:22 +00:00