Revision 769409d2
Added by Leszek Koltunski about 4 years ago
src/main/java/org/distorted/object/RubikPyraminx.java | ||
---|---|---|
107 | 107 |
{ |
108 | 108 |
int added = 0; |
109 | 109 |
|
110 |
emitRow( x +0.5f, y+SQ3*SQ2/9, z+ SQ3/18, 1.0f, 0, 0, n-1, 1, array, added); |
|
111 |
added += (n-1); |
|
112 |
emitRow( x +1.0f/3, y+SQ3*SQ2/9, z+2*SQ3/9, 0.5f, 0, SQ3/2, n-1, 3, array, added); |
|
113 |
added += (n-1); |
|
114 |
emitRow( x+n-1-1.0f/3, y+SQ3*SQ2/9, z+2*SQ3/9, -0.5f, 0, SQ3/2, n-1, 2, array, added); |
|
115 |
added += (n-1); |
|
116 |
|
|
110 | 117 |
for(int i=n; i>=1; i--) |
111 | 118 |
{ |
112 |
emitRow(x,y,z, 1,0,0, i, -1, array, added);
|
|
119 |
emitRow(x , y, z , 1,0,0, i , -1, array, added);
|
|
113 | 120 |
added += i; |
121 |
emitRow(x+0.5f, y, z+SQ3/6, 1,0,0, i-1, 0, array, added); |
|
122 |
added += (i-1); |
|
114 | 123 |
x += 0.5f; |
115 | 124 |
y += 0.0f; |
116 | 125 |
z += SQ3/2; |
... | ... | |
125 | 134 |
{ |
126 | 135 |
if( n>1 ) |
127 | 136 |
{ |
128 |
emitRow( x , y, z , 1.0f, 0, 0, n-1, -1, array, index); |
|
137 |
emitRow( x , y , z , 1.0f, 0, 0, n-1, -1, array, index); |
|
138 |
index += (n-1); |
|
139 |
emitRow( x+0.5f , y+SQ3*SQ2/9, z+SQ3/18 , 1.0f, 0, 0, n-1, 1, array, index); |
|
140 |
index += (n-1); |
|
141 |
emitRow( x+0.5f , y , z+SQ3/2 , 0.5f, 0, SQ3/2, n-1, -1, array, index); |
|
142 |
index += (n-1); |
|
143 |
emitRow( x +1.0f/3, y+SQ3*SQ2/9, z+2*SQ3/9, 0.5f, 0, SQ3/2, n-1, 3, array, index); |
|
129 | 144 |
index += (n-1); |
130 |
emitRow( x+0.5f, y, z+SQ3/2, 0.5f, 0, SQ3/2, n-1, -1, array, index);
|
|
145 |
emitRow( x+n-1 , y , z , -0.5f, 0, SQ3/2, n-1, -1, array, index);
|
|
131 | 146 |
index += (n-1); |
132 |
emitRow( x+n-1 , y, z , -0.5f, 0, SQ3/2, n-1, -1, array, index);
|
|
147 |
emitRow( x+n-1-1.0f/3, y+SQ3*SQ2/9, z+2*SQ3/9, -0.5f, 0, SQ3/2, n-1, 2, array, index);
|
|
133 | 148 |
index += (n-1); |
134 | 149 |
} |
135 | 150 |
else |
... | ... | |
148 | 163 |
|
149 | 164 |
Static3D[] getCubitPositions(int size) |
150 | 165 |
{ |
151 |
int numCubits = size>1 ? 2*size*size-4*size+4:1;//4*size*size - 6*size +4 : 1;
|
|
166 |
int numCubits = size>1 ? 4*size*size - 6*size +4 : 1; |
|
152 | 167 |
Static3D[] tmp = new Static3D[numCubits]; |
153 | 168 |
mRotArray = new int[numCubits]; |
154 | 169 |
|
... | ... | |
192 | 207 |
float OFF = STROKE/2 -1; |
193 | 208 |
float OFF2 = 0.5f*TEXTURE_HEIGHT + OFF; |
194 | 209 |
float HEIGHT = TEXTURE_HEIGHT - OFF; |
195 |
float RADIUS = TEXTURE_HEIGHT/12; |
|
210 |
float RADIUS = TEXTURE_HEIGHT/12.0f;
|
|
196 | 211 |
float ARC1_H = 0.2f*TEXTURE_HEIGHT; |
197 | 212 |
float ARC1_W = TEXTURE_HEIGHT*0.5f; |
198 | 213 |
float ARC2_W = 0.153f*TEXTURE_HEIGHT; |
... | ... | |
231 | 246 |
MatrixEffect[] effects0 = new MatrixEffect[3]; |
232 | 247 |
effects0[0] = new MatrixEffectScale( new Static3D(1,SQ3/2,1) ); |
233 | 248 |
effects0[1] = new MatrixEffectRotate( new Static1D(90), new Static3D(1,0,0), new Static3D(0,0,0) ); |
234 |
effects0[2] = new MatrixEffectMove( new Static3D(0,-SQ3/6,SQ3/12) );
|
|
249 |
effects0[2] = new MatrixEffectMove( new Static3D(0,-SQ3*SQ2/12,SQ3/12) );
|
|
235 | 250 |
|
236 | 251 |
meshes[0].apply(effects0); |
237 | 252 |
|
238 | 253 |
Static1D angle = new Static1D(angleFaces); |
239 | 254 |
Static3D axis = new Static3D(-1,0,0); |
240 |
Static3D center= new Static3D(0,-SQ3/6,-SQ3/6);
|
|
255 |
Static3D center= new Static3D(0,-SQ3*SQ2/12,-SQ3/6);
|
|
241 | 256 |
|
242 | 257 |
MatrixEffect[] effects1 = new MatrixEffect[5]; |
243 | 258 |
effects1[0] = effects0[0]; |
Also available in: Unified diff
The Pyraminx itself finished - now its movements!