From 42107f9a01652cb2f47228d20c1148a2a22f6a63 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 22 May 2018 19:33:31 -0400
Subject: [PATCH] new torus code and VR

---
 Torus.java       |   23 ++++++++++++++++-------
 BoundaryRep.java |    7 ++++---
 CameraPane.java  |   12 ++++++++++--
 Camera.java      |    0 
 GroupLeaf.java   |    3 ++-
 5 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/BoundaryRep.java b/BoundaryRep.java
index 9cf899c..3a1d080 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -4932,7 +4932,7 @@
                 //colors[i3 + 1] = cp.vertexOcclusion.g;
                 //colors[i3 + 2] = cp.vertexOcclusion.b;
 
-                if ((i % 1000) == 0 && i != 0)
+                if ((i % 100) == 0 && i != 0)
                 {
             CameraPane.theRenderer.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
                     //System.out.println("Color = " + cp.vertexOcclusion.r + ", " + cp.vertexOcclusion.g + ", " + cp.vertexOcclusion.b + "; " + (int)(100.0*i/(positions.length/3)) + "% done");
@@ -4964,7 +4964,7 @@
 
                 v.AO = cp.vertexOcclusion.r;
 
-                if ((i % 1000) == 0 && i != 0)
+                if ((i % 100) == 0 && i != 0)
                 {
             CameraPane.theRenderer.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
                     //System.out.println("Color = " + cp.vertexOcclusion.r + ", " + cp.vertexOcclusion.g + ", " + cp.vertexOcclusion.b + "; " + (int)(100.0*i/(positions.length/3)) + "% done");
@@ -7230,7 +7230,8 @@
             {
                 if (f3.p == f0.p)
                 {
-                    assert(false);
+//                    assert(false);
+                    new Exception().printStackTrace();
                     f0.r = f3.q;
                 }
                 else
diff --git a/RTCamera.java b/Camera.java
similarity index 100%
rename from RTCamera.java
rename to Camera.java
diff --git a/CameraPane.java b/CameraPane.java
index 091d05a..b876bb4 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -12854,7 +12854,9 @@
         {
             mouseMode |= ZOOM;
         }
-        if ((modifiers & META) == META)
+        
+        boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
+        if (capsLocked || (modifiers & META) == META)
         {
             mouseMode |= VR; // BACKFORTH;
         }
@@ -12868,6 +12870,7 @@
         }
         if ((modifiers & SHIFT) == SHIFT || forcetranslate)
         {
+            mouseMode &= ~VR;
             mouseMode |= TRANSLATE;
         }
     //    if ((modifiers & SHIFT_META) == SHIFT_META)
@@ -14719,6 +14722,11 @@
 //                System.err.println("view = " + view[8] + " " + view[9] + " " + view[10] + " " + view[11]);
 //                System.err.println("view = " + view[12] + " " + view[13] + " " + view[14] + " " + view[15]);
                 
+                // Will fit the mesh !!!
+                selectedpoint.toParent[0][0] = 0.0001;
+                selectedpoint.toParent[1][1] = 0.0001;
+                selectedpoint.toParent[2][2] = 0.0001;
+                
                 glu.gluUnProject(x,y,depth,view,0,tempmat2,0,viewport,0,selectedpoint.toParent[3],0);
                 
 //                if (object.selection != null && object.selection.Size() > 0)
@@ -15341,7 +15349,7 @@
     int AAbuffersize = 0;
     
     //double[] selectedpoint = new double[3];
-    static Sphere selectedpoint = new Sphere();
+    static Superellipsoid selectedpoint = new Superellipsoid();
     static Sphere previousselectedpoint = null;
     static Sphere debugpoint = new Sphere();
     static Sphere debugpoint2 = new Sphere();
diff --git a/GroupLeaf.java b/GroupLeaf.java
index b42c72d..805acf2 100644
--- a/GroupLeaf.java
+++ b/GroupLeaf.java
@@ -9,7 +9,8 @@
  */
 public class GroupLeaf extends Composite
 {
-    static final long serialVersionUID = -1647706059469889079L;
+    static final long serialVersionUID =  // for wader: -6036608125951558970L;
+                                -1647706059469889079L;
     
     GroupLeaf()
     {
diff --git a/Torus.java b/Torus.java
index 8f85353..af74364 100644
--- a/Torus.java
+++ b/Torus.java
@@ -61,16 +61,25 @@
         if (v == 1)
             v = 0;
         
-        double uAng = LA.toRadians((1-u) * 360);
-        double vAng = LA.toRadians(v * 360);
-        double x = (double)Math.cos(uAng) * (major + (double)Math.cos(vAng) * minor);
-        double y = (double)Math.sin(vAng) * minor;
+        double uAng = u * 2 * Math.PI;
+        double vAng = v * 2 * Math.PI;
+        double cosua = Math.cos(uAng);
+        double sinua = Math.sin(uAng);
+        double cosva = Math.cos(vAng);
+        double sinva = Math.sin(vAng);
+        
+        double radius = (major + cosva * minor);
+        double x = cosua * radius;
+        double y = sinva * minor;
         if (Math.abs(y) < 1E-10)
             y = 0; // hashtable issue
-        double z = (double)Math.sin(uAng) * (major + (double)Math.cos(vAng) * minor);
+        
+        double z = sinua * radius;
         cVector tPos = LA.newVector(x, y, z);
-        double xx = (double)(Math.cos(uAng) * Math.cos(vAng)) * minor;
-        double zz = (double)(Math.sin(uAng) * Math.cos(vAng)) * minor;
+        
+        double xx = cosua * cosva * minor;
+        double zz = sinua * cosva * minor;
+        
         cVector tNorm = LA.newVector(xx, y, zz);
         Vertex temp = new Vertex(tPos);
         //temp.pos = tPos; // useless new

--
Gitblit v1.6.2