.. | .. |
---|
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 |
---|