From 186e4926877543b08c4d2da5458f7c3bf740b9c5 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 22 Nov 2004 07:46:32 +0000
Subject: [PATCH] better epsilon

---
 Graphics/gl2ps.cpp | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/Graphics/gl2ps.cpp b/Graphics/gl2ps.cpp
index 40e9308010..f8e5090e4d 100644
--- a/Graphics/gl2ps.cpp
+++ b/Graphics/gl2ps.cpp
@@ -1,4 +1,4 @@
-/* $Id: gl2ps.cpp,v 1.87 2004-11-22 07:36:25 geuzaine Exp $ */
+/* $Id: gl2ps.cpp,v 1.88 2004-11-22 07:46:32 geuzaine Exp $ */
 /*
  * GL2PS, an OpenGL to PostScript Printing Library
  * Copyright (C) 1999-2004 Christophe Geuzaine <geuz@geuz.org>
@@ -1279,7 +1279,7 @@ static void gl2psTraverseBspTree(GL2PSbsptree *tree, GL2PSxyz eye, GLfloat epsil
 static void gl2psSetPrecisionAndApplyOffsets()
 {
   GL2PSprimitive *prim;
-  GLfloat minZ, maxZ;
+  GLfloat minZ, maxZ, simple;
   GLfloat factor, units, area, dZ, dZdX, dZdY, maxdZ;
   int i, j, offset = 0;
 
@@ -1305,6 +1305,9 @@ static void gl2psSetPrecisionAndApplyOffsets()
 
   /* set precision */
   gl2ps->epsilon = (maxZ - minZ) / 5000.0F;
+  simple = (maxZ - minZ) / 500.0F;
+  if(GL2PS_ZERO(gl2ps->epsilon)) gl2ps->epsilon = 0.0002F;
+  if(GL2PS_ZERO(simple)) simple = 0.002F;
 
   /* apply offsets */
   if(gl2ps->options & GL2PS_SIMPLE_LINE_OFFSET){
@@ -1312,12 +1315,12 @@ static void gl2psSetPrecisionAndApplyOffsets()
       prim = *(GL2PSprimitive**)gl2psListPointer(gl2ps->primitives, i);
       if(prim->type == GL2PS_LINE){
 	if(gl2ps->sort == GL2PS_SIMPLE_SORT){
-	  prim->verts[0].xyz[2] -= (maxZ - minZ) / 25.0F;
-	  prim->verts[1].xyz[2] -= (maxZ - minZ) / 25.0F;
+	  prim->verts[0].xyz[2] -= simple * 20.0F;
+	  prim->verts[1].xyz[2] -= simple * 20.0F;
 	}
 	else{
-	  prim->verts[0].xyz[2] -= (maxZ - minZ) / 500.0F;
-	  prim->verts[1].xyz[2] -= (maxZ - minZ) / 500.0F;
+	  prim->verts[0].xyz[2] -= simple;
+	  prim->verts[1].xyz[2] -= simple;
 	}
       }
     }
-- 
GitLab