.. | .. |
---|
61 | 61 | if (v == 1) |
---|
62 | 62 | v = 0; |
---|
63 | 63 | |
---|
64 | | - double uAng = LA.toRadians((1-u) * 360); |
---|
65 | | - double vAng = LA.toRadians(v * 360); |
---|
66 | | - double x = (double)Math.cos(uAng) * (major + (double)Math.cos(vAng) * minor); |
---|
67 | | - double y = (double)Math.sin(vAng) * minor; |
---|
| 64 | + double uAng = u * 2 * Math.PI; |
---|
| 65 | + double vAng = v * 2 * Math.PI; |
---|
| 66 | + double cosua = Math.cos(uAng); |
---|
| 67 | + double sinua = Math.sin(uAng); |
---|
| 68 | + double cosva = Math.cos(vAng); |
---|
| 69 | + double sinva = Math.sin(vAng); |
---|
| 70 | + |
---|
| 71 | + double radius = (major + cosva * minor); |
---|
| 72 | + double x = cosua * radius; |
---|
| 73 | + double y = sinva * minor; |
---|
68 | 74 | if (Math.abs(y) < 1E-10) |
---|
69 | 75 | y = 0; // hashtable issue |
---|
70 | | - double z = (double)Math.sin(uAng) * (major + (double)Math.cos(vAng) * minor); |
---|
| 76 | + |
---|
| 77 | + double z = sinua * radius; |
---|
71 | 78 | cVector tPos = LA.newVector(x, y, z); |
---|
72 | | - double xx = (double)(Math.cos(uAng) * Math.cos(vAng)) * minor; |
---|
73 | | - double zz = (double)(Math.sin(uAng) * Math.cos(vAng)) * minor; |
---|
| 79 | + |
---|
| 80 | + double xx = cosua * cosva * minor; |
---|
| 81 | + double zz = sinua * cosva * minor; |
---|
| 82 | + |
---|
74 | 83 | cVector tNorm = LA.newVector(xx, y, zz); |
---|
75 | 84 | Vertex temp = new Vertex(tPos); |
---|
76 | 85 | //temp.pos = tPos; // useless new |
---|
.. | .. |
---|
167 | 176 | return true; |
---|
168 | 177 | } |
---|
169 | 178 | |
---|
170 | | - void doEditDrag(ClickInfo info) |
---|
| 179 | + void doEditDrag(ClickInfo info, boolean opposite) |
---|
171 | 180 | { |
---|
172 | 181 | if (hitSomething == 0) |
---|
173 | 182 | return; |
---|
174 | 183 | if (hitSomething == 1) |
---|
175 | 184 | { |
---|
176 | | - super.doEditDrag(info); |
---|
| 185 | + super.doEditDrag(info, opposite); |
---|
177 | 186 | return; |
---|
178 | 187 | } |
---|
179 | 188 | double deltaR = info.x - startX; |
---|