Revision 6a224bdc
Added by Leszek Koltunski about 5 years ago
| src/main/java/org/distorted/objects/Cubit.java | ||
|---|---|---|
| 187 | 187 |
modifyCurrentPosition(mParent.QUATS[mQuatIndex]); |
| 188 | 188 |
return mQuatIndex; |
| 189 | 189 |
} |
| 190 |
else |
|
| 191 |
{
|
|
| 192 |
int q = mQuatIndex; |
|
| 193 |
mQuatIndex = 0; |
|
| 194 |
return -q; |
|
| 195 |
} |
|
| 190 |
|
|
| 191 |
return -mQuatIndex; |
|
| 196 | 192 |
} |
| 197 | 193 |
|
| 198 | 194 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/objects/FactoryCubit.java | ||
|---|---|---|
| 35 | 35 |
|
| 36 | 36 |
class FactoryCubit |
| 37 | 37 |
{
|
| 38 |
static final float IVY_D = 0.02f; |
|
| 39 |
|
|
| 38 | 40 |
private static final float SQ2 = (float)Math.sqrt(2); |
| 39 | 41 |
private static final float SQ3 = (float)Math.sqrt(3); |
| 40 | 42 |
private static final float SQ6 = (float)Math.sqrt(6); |
| 41 | 43 |
|
| 42 |
private static final float IVY_D = 0.02f; |
|
| 43 |
private static final int IVY_N = 8; |
|
| 44 |
|
|
| 44 |
private static final int IVY_N = 8; |
|
| 45 | 45 |
private static final Static1D RADIUS = new Static1D(1); |
| 46 |
|
|
| 47 | 46 |
private static FactoryCubit mThis; |
| 48 | 47 |
|
| 49 | 48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 505 | 504 |
MeshBase[] meshes = new MeshBase[6]; |
| 506 | 505 |
|
| 507 | 506 |
final float angle = (float)Math.PI/(2*IVY_N); |
| 508 |
final float CORR = 1.0f - IVY_D*SQ2;
|
|
| 507 |
final float CORR = 1.0f - 2*IVY_D;
|
|
| 509 | 508 |
final float DIST = 0.4f; |
| 510 | 509 |
final float DIST2 = -0.5f*CORR; |
| 511 | 510 |
final float CORR2 = 0.5f; |
| ... | ... | |
| 554 | 553 |
MeshBase[] meshes = new MeshBase[2]; |
| 555 | 554 |
|
| 556 | 555 |
final float angle = (float)Math.PI/(2*IVY_N); |
| 557 |
final float CORR = 1.0f - IVY_D*SQ2;
|
|
| 556 |
final float CORR = 0.25f - 0.5f*IVY_D;
|
|
| 558 | 557 |
float[] vertices = new float[4*IVY_N]; |
| 559 | 558 |
|
| 560 | 559 |
for(int i=0; i<IVY_N; i++) |
| ... | ... | |
| 568 | 567 |
vertices[2*i+1+2*IVY_N] = CORR*(sin-0.5f); |
| 569 | 568 |
} |
| 570 | 569 |
|
| 571 |
float[] bands0 = computeBands(+0.05f,35,0.5f,0.5f,5);
|
|
| 572 |
float[] bands1 = computeBands(-0.10f,45,0.5f,0.0f,2);
|
|
| 570 |
float[] bands0 = computeBands(+0.0125f,35,0.125f,0.5f,5);
|
|
| 571 |
float[] bands1 = computeBands(-0.0250f,45,0.125f,0.0f,2);
|
|
| 573 | 572 |
|
| 574 | 573 |
meshes[0] = new MeshPolygon(vertices,bands0,0,0); |
| 575 | 574 |
meshes[0].setEffectAssociation(0,1,0); |
| ... | ... | |
| 1008 | 1007 |
return effect; |
| 1009 | 1008 |
} |
| 1010 | 1009 |
|
| 1010 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 1011 |
|
|
| 1012 |
VertexEffect[] createVertexEffectsIvyFace() |
|
| 1013 |
{
|
|
| 1014 |
VertexEffect[] effect = new VertexEffect[1]; |
|
| 1015 |
effect[0] = new VertexEffectScale(4.0f); |
|
| 1016 |
return effect; |
|
| 1017 |
} |
|
| 1018 |
|
|
| 1011 | 1019 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1012 | 1020 |
// OBJECTS |
| 1013 | 1021 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1269 | 1277 |
for( VertexEffect effect : effects ) mesh.apply(effect); |
| 1270 | 1278 |
|
| 1271 | 1279 |
Static3D center = new Static3D(-0.5f,-0.5f,-0.5f); |
| 1272 |
Static3D[] vertices1 = new Static3D[1]; |
|
| 1273 |
vertices1[0] = new Static3D(+0.0f,+0.0f,+0.0f); |
|
| 1274 |
|
|
| 1275 |
Static3D[] vertices2 = new Static3D[3]; |
|
| 1276 |
float DIST = IVY_D-1.0f; |
|
| 1277 |
vertices2[0] = new Static3D( DIST,+0.0f,+0.0f); |
|
| 1278 |
vertices2[1] = new Static3D(+0.0f, DIST,+0.0f); |
|
| 1279 |
vertices2[2] = new Static3D(+0.0f,+0.0f, DIST); |
|
| 1280 |
|
|
| 1281 |
roundCorners(mesh,center,vertices1,0.04f,0.20f); |
|
| 1282 |
// roundCorners(mesh,center,vertices2,0.02f,0.20f); |
|
| 1280 |
Static3D[] vertices = new Static3D[1]; |
|
| 1281 |
vertices[0] = new Static3D(+0.0f,+0.0f,+0.0f); |
|
| 1282 |
roundCorners(mesh,center,vertices,0.04f,0.20f); |
|
| 1283 | 1283 |
|
| 1284 | 1284 |
mesh.mergeEffComponents(); |
| 1285 | 1285 |
|
| ... | ... | |
| 1291 | 1291 |
MeshBase createIvyFaceMesh() |
| 1292 | 1292 |
{
|
| 1293 | 1293 |
MeshBase mesh = createFacesIvyFace(); |
| 1294 |
|
|
| 1295 |
float DIST = SQ2*(0.5f-IVY_D); |
|
| 1296 |
Static3D center = new Static3D(0.0f,0.0f,-0.0f); |
|
| 1297 |
Static3D[] vertices = new Static3D[2]; |
|
| 1298 |
vertices[0] = new Static3D(+DIST,-DIST,+0.0f); |
|
| 1299 |
vertices[1] = new Static3D(-DIST,+DIST,+0.0f); |
|
| 1300 |
|
|
| 1301 |
roundCorners(mesh,center,vertices,0.05f,0.30f); |
|
| 1294 |
VertexEffect[] effects = createVertexEffectsIvyFace(); |
|
| 1295 |
for( VertexEffect effect : effects ) mesh.apply(effect); |
|
| 1302 | 1296 |
|
| 1303 | 1297 |
mesh.mergeEffComponents(); |
| 1304 | 1298 |
mesh.addEmptyTexComponent(); |
| src/main/java/org/distorted/objects/FactorySticker.java | ||
|---|---|---|
| 24 | 24 |
|
| 25 | 25 |
import static org.distorted.objects.TwistyObject.TEXTURE_HEIGHT; |
| 26 | 26 |
import static org.distorted.objects.TwistyObject.COLOR_BLACK; |
| 27 |
import static org.distorted.objects.FactoryCubit.IVY_D; |
|
| 27 | 28 |
|
| 28 | 29 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 29 | 30 |
|
| ... | ... | |
| 161 | 162 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 162 | 163 |
// TODO |
| 163 | 164 |
|
| 164 |
void drawIvyCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float R)
|
|
| 165 |
void drawIvyCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke)
|
|
| 165 | 166 |
{
|
| 166 | 167 |
paint.setColor(color); |
| 167 | 168 |
paint.setStyle(Paint.Style.FILL); |
| 168 |
|
|
| 169 | 169 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
| 170 | 170 |
|
| 171 |
paint.setColor(COLOR_BLACK); |
|
| 172 |
paint.setStyle(Paint.Style.STROKE); |
|
| 173 |
paint.setStrokeWidth(stroke); |
|
| 171 | 174 |
} |
| 172 | 175 |
|
| 173 | 176 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 174 | 177 |
// TODO |
| 175 | 178 |
|
| 176 |
void drawIvyCenterSticker(Canvas canvas, Paint paint, int left, int top, int color, float R)
|
|
| 179 |
void drawIvyCenterSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke)
|
|
| 177 | 180 |
{
|
| 178 | 181 |
paint.setColor(color); |
| 179 | 182 |
paint.setStyle(Paint.Style.FILL); |
| 180 |
|
|
| 181 | 183 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
| 184 |
|
|
| 185 |
paint.setColor(COLOR_BLACK); |
|
| 186 |
paint.setStyle(Paint.Style.STROKE); |
|
| 187 |
paint.setStrokeWidth(stroke*TEXTURE_HEIGHT); |
|
| 188 |
|
|
| 189 |
float cx = 0.075f*TEXTURE_HEIGHT; |
|
| 190 |
float cy = 0.075f*TEXTURE_HEIGHT; |
|
| 191 |
|
|
| 192 |
float c2 = TEXTURE_HEIGHT*(1.0f-0.0f*IVY_D); |
|
| 193 |
float halfL = TEXTURE_HEIGHT*(0.7f - 0.5f*IVY_D); |
|
| 194 |
|
|
| 195 |
android.util.Log.e("sitck", "left="+left+" top="+top);
|
|
| 196 |
|
|
| 197 |
canvas.drawArc( left+cx-halfL, top+cy-halfL, left+cx+halfL, top+cy+halfL, 280, 80, false, paint); |
|
| 198 |
// canvas.drawArc( left+c2-halfL, top+c2-halfL, left+c2+halfL, top+c2+halfL, 90, 90, false, paint); |
|
| 199 |
|
|
| 200 |
|
|
| 182 | 201 |
} |
| 183 | 202 |
} |
| src/main/java/org/distorted/objects/TwistyIvy.java | ||
|---|---|---|
| 234 | 234 |
{
|
| 235 | 235 |
int COLORS = FACE_COLORS.length; |
| 236 | 236 |
FactorySticker factory = FactorySticker.getInstance(); |
| 237 |
float R = 0.05f;
|
|
| 237 |
float R = 0.01f;
|
|
| 238 | 238 |
|
| 239 | 239 |
if( face<COLORS ) |
| 240 | 240 |
{
|
| src/main/java/org/distorted/objects/TwistyObject.java | ||
|---|---|---|
| 466 | 466 |
{
|
| 467 | 467 |
for(int j=0; j<NUM_CUBITS; j++) |
| 468 | 468 |
{
|
| 469 |
CUBITS[j].mQuatIndex = 0; |
|
| 469 | 470 |
CUBITS[j].modifyCurrentPosition(QUATS[0]); |
| 470 | 471 |
mMesh.setEffectAssociation(j, CUBITS[j].computeAssociation(),0); |
| 471 | 472 |
} |
Also available in: Unified diff
1) Progress with the Ivy
2) further refine defense against failing to restore preferences.