Project

General

Profile

« Previous | Next » 

Revision 00f4980d

Added by Leszek Koltunski over 2 years ago

Progress standarising stickering - adjust sticker radii based on cos of the angle at the sticker vertex.

View differences:

src/main/java/org/distorted/objectlib/main/TwistyObject.java
1132 1132
    for(int i=0; i<NUM_CUBITS; i++) CUBITS[i].savePreferences(editor);
1133 1133
    }
1134 1134

  
1135
///////////////////////////////////////////////////////////////////////////////////////////////////
1136

  
1137
  protected float computeRadiusCorrection(float[] sticker, int curr, int len)
1138
    {
1139
    final float A = 0.8f;  // 0<A<1
1140

  
1141
    int prev = curr>0 ? curr-1 : len-1;
1142
    int next = curr<len-1 ? curr+1 : 0;
1143

  
1144
    float v1x = sticker[2*prev  ]-sticker[2*curr  ];
1145
    float v1y = sticker[2*prev+1]-sticker[2*curr+1];
1146
    float v2x = sticker[2*next  ]-sticker[2*curr  ];
1147
    float v2y = sticker[2*next+1]-sticker[2*curr+1];
1148

  
1149
    float len1= v1x*v1x+v1y*v1y;
1150
    float len2= v2x*v2x+v2y*v2y;
1151

  
1152
    float cos = (v1x*v2x+v1y*v2y) / ( (float)Math.sqrt(len1*len2) );
1153

  
1154
    return 1-A*cos;
1155
    }
1156

  
1135 1157
///////////////////////////////////////////////////////////////////////////////////////////////////
1136 1158
// some objects (currently only Kilominx) might want to change the stickers.
1137 1159

  
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java
451 451
    return ObjectControl.isInIconMode() ? 0.16f : 0.08f;
452 452
    }
453 453

  
454
///////////////////////////////////////////////////////////////////////////////////////////////////
455

  
456
  private float[][] getAngles()
457
    {
458
    return null;
459
    }
460

  
454 461
///////////////////////////////////////////////////////////////////////////////////////////////////
455 462

  
456 463
  public ObjectSticker retSticker(int sticker)
......
459 466
      {
460 467
      float rad = getRadius();
461 468
      float str = getStroke();
469
      float[][] angles = getAngles();
462 470
      int numStickers = mStickerCoords.length;
463 471
      mStickers = new ObjectSticker[numStickers];
464 472

  
......
467 475
        float scale = mStickerScales[s];
468 476
        float radius = rad / scale;
469 477
        float stroke = str / scale;
470
        int len = mStickerCoords[s].length;
478
        int len = mStickerCoords[s].length/2;
471 479
        float[] radii = new float[len];
472
        for(int r=0; r<len; r++) radii[r] = radius;
473
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
480
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
481
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
474 482
        }
475 483
      }
476 484

  
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java
693 693
    return stroke;
694 694
    }
695 695

  
696
///////////////////////////////////////////////////////////////////////////////////////////////////
697

  
698
  private float[][] getAngles()
699
    {
700
    return null;
701
    }
702

  
696 703
///////////////////////////////////////////////////////////////////////////////////////////////////
697 704

  
698 705
  public ObjectSticker retSticker(int sticker)
......
701 708
      {
702 709
      float rad = getRadius();
703 710
      float str = getStroke();
711
      float[][] angles = getAngles();
704 712
      int numStickers = mStickerCoords.length;
705 713
      mStickers = new ObjectSticker[numStickers];
706 714

  
......
709 717
        float scale = mStickerScales[s];
710 718
        float radius = rad / scale;
711 719
        float stroke = str / scale;
712
        int len = mStickerCoords[s].length;
720
        int len = mStickerCoords[s].length/2;
713 721
        float[] radii = new float[len];
714
        for(int r=0; r<len; r++) radii[r] = radius;
715
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
722
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
723
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
716 724
        }
717 725
      }
718 726

  
src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
507 507

  
508 508
  private float getRadius()
509 509
    {
510
    return 0.06f;
510
    return 0.08f;
511 511
    }
512 512

  
513 513
///////////////////////////////////////////////////////////////////////////////////////////////////
......
532 532
    return stroke;
533 533
    }
534 534

  
535
///////////////////////////////////////////////////////////////////////////////////////////////////
536

  
537
  private float[][] getAngles()
538
    {
539
    return null;
540
    }
541

  
535 542
///////////////////////////////////////////////////////////////////////////////////////////////////
536 543

  
537 544
  public ObjectSticker retSticker(int sticker)
......
540 547
      {
541 548
      float rad = getRadius();
542 549
      float str = getStroke();
550
      float[][] angles = getAngles();
543 551
      int numStickers = mStickerCoords.length;
544 552
      mStickers = new ObjectSticker[numStickers];
545 553

  
......
548 556
        float scale = mStickerScales[s];
549 557
        float radius = rad / scale;
550 558
        float stroke = str / scale;
551
        int len = mStickerCoords[s].length;
559
        int len = mStickerCoords[s].length/2;
552 560
        float[] radii = new float[len];
553
        for(int r=0; r<len; r++) radii[r] = radius;
554
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
561
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
562
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
555 563
        }
556 564
      }
557 565

  
src/main/java/org/distorted/objectlib/objects/TwistyDino.java
231 231

  
232 232
  private float getRadius()
233 233
    {
234
    return 0.07f;
234
    return 0.09f;
235 235
    }
236 236

  
237 237
///////////////////////////////////////////////////////////////////////////////////////////////////
......
241 241
    return ObjectControl.isInIconMode() ? 0.22f : 0.15f;
242 242
    }
243 243

  
244
///////////////////////////////////////////////////////////////////////////////////////////////////
245

  
246
  private float[][] getAngles()
247
    {
248
    return null;
249
    }
250

  
244 251
///////////////////////////////////////////////////////////////////////////////////////////////////
245 252

  
246 253
  public ObjectSticker retSticker(int sticker)
......
249 256
      {
250 257
      float rad = getRadius();
251 258
      float str = getStroke();
259
      float[][] angles = getAngles();
252 260
      int numStickers = mStickerCoords.length;
253 261
      mStickers = new ObjectSticker[numStickers];
254 262

  
......
257 265
        float scale = mStickerScales[s];
258 266
        float radius = rad / scale;
259 267
        float stroke = str / scale;
260
        int len = mStickerCoords[s].length;
268
        int len = mStickerCoords[s].length/2;
261 269
        float[] radii = new float[len];
262
        for(int r=0; r<len; r++) radii[r] = radius;
263
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
270
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
271
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
264 272
        }
265 273
      }
266 274

  
src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
423 423

  
424 424
  private float getRadius()
425 425
    {
426
    return 0.06f;
426
    return 0.08f;
427 427
    }
428 428

  
429 429
///////////////////////////////////////////////////////////////////////////////////////////////////
......
433 433
    return ObjectControl.isInIconMode() ? 0.20f : 0.10f;
434 434
    }
435 435

  
436
///////////////////////////////////////////////////////////////////////////////////////////////////
437

  
438
  private float[][] getAngles()
439
    {
440
    return null;
441
    }
442

  
436 443
///////////////////////////////////////////////////////////////////////////////////////////////////
437 444

  
438 445
  public ObjectSticker retSticker(int sticker)
......
441 448
      {
442 449
      float rad = getRadius();
443 450
      float str = getStroke();
451
      float[][] angles = getAngles();
444 452
      int numStickers = mStickerCoords.length;
445 453
      mStickers = new ObjectSticker[numStickers];
446 454

  
......
449 457
        float scale = mStickerScales[s];
450 458
        float radius = rad / scale;
451 459
        float stroke = str / scale;
452
        int len = mStickerCoords[s].length;
460
        int len = mStickerCoords[s].length/2;
453 461
        float[] radii = new float[len];
454
        for(int r=0; r<len; r++) radii[r] = radius;
455
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
462
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
463
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
456 464
        }
457 465
      }
458 466

  
src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
448 448
    return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face];
449 449
    }
450 450

  
451
///////////////////////////////////////////////////////////////////////////////////////////////////
452

  
453
  public void adjustStickerCoords()
454
    {
455
    mStickerCoords = new float[][]
456
          {
457
            { 0.29258922f, -0.5f, 0.29258922f, 0.29258922f, -0.5f, 0.29258922f },
458
            { -0.5f, 0.5f, 0.5f, -0.5f }
459
          };
460
    }
461

  
462
///////////////////////////////////////////////////////////////////////////////////////////////////
463

  
464
  private float getRadius()
465
    {
466
    return 0.19f;
467
    }
468

  
469
///////////////////////////////////////////////////////////////////////////////////////////////////
470

  
471
  private float getStroke()
472
    {
473
    return ObjectControl.isInIconMode() ? 0.16f : 0.12f;
474
    }
475

  
476
///////////////////////////////////////////////////////////////////////////////////////////////////
477

  
478
  private float[][] getAngles()
479
    {
480
    float D = (float)(Math.PI/4);
481
    return new float[][] { { 0,0,D },{ D,D } };
482
    }
483

  
451 484
///////////////////////////////////////////////////////////////////////////////////////////////////
452 485

  
486
  public ObjectSticker retSticker(int sticker)
487
    {
488
    if( mStickers==null )
489
      {
490
      float rad = getRadius();
491
      float str = getStroke();
492
      float[][] angles = getAngles();
493
      int numStickers = mStickerCoords.length;
494
      mStickers = new ObjectSticker[numStickers];
495

  
496
      for(int s=0; s<numStickers; s++)
497
        {
498
        float scale = mStickerScales[s];
499
        float radius = rad / scale;
500
        float stroke = str / scale;
501
        int len = mStickerCoords[s].length/2;
502
        float[] radii = new float[len];
503
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
504
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
505
        }
506
      }
507

  
508
    return mStickers[sticker];
509
    }
510

  
511
///////////////////////////////////////////////////////////////////////////////////////////////////
512
/*
453 513
  public ObjectSticker retSticker(int sticker)
454 514
    {
455 515
    if( mStickers==null )
......
473 533

  
474 534
    return mStickers[sticker];
475 535
    }
476

  
536
*/
477 537
///////////////////////////////////////////////////////////////////////////////////////////////////
478 538
// PUBLIC API
479 539

  
src/main/java/org/distorted/objectlib/objects/TwistyJing.java
392 392
    return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face];
393 393
    }
394 394

  
395
///////////////////////////////////////////////////////////////////////////////////////////////////
396

  
397
  private float getRadius()
398
    {
399
    return 0.04f;
400
    }
401

  
402
///////////////////////////////////////////////////////////////////////////////////////////////////
403

  
404
  private float getStroke()
405
    {
406
    return ObjectControl.isInIconMode() ? 0.08f : 0.04f;
407
    }
408

  
409
///////////////////////////////////////////////////////////////////////////////////////////////////
410

  
411
  private float[][] getAngles()
412
    {
413
    return null;
414
    }
415

  
395 416
///////////////////////////////////////////////////////////////////////////////////////////////////
396 417

  
397 418
  public ObjectSticker retSticker(int sticker)
398 419
    {
399 420
    if( mStickers==null )
400 421
      {
422
      float rad = getRadius();
423
      float str = getStroke();
424
      float[][] angles = getAngles();
401 425
      int numStickers = mStickerCoords.length;
402 426
      mStickers = new ObjectSticker[numStickers];
403 427

  
404 428
      for(int s=0; s<numStickers; s++)
405 429
        {
406 430
        float scale = mStickerScales[s];
407
        float radius = 0.04f / scale;
408
        float stroke = 0.04f / scale;
409
        int len = mStickerCoords[s].length;
431
        float radius = rad / scale;
432
        float stroke = str / scale;
433
        int len = mStickerCoords[s].length/2;
410 434
        float[] radii = new float[len];
411
        for(int r=0; r<len; r++) radii[r] = radius;
412
        if( ObjectControl.isInIconMode() ) stroke*=2.0f;
413
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
435
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
436
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
414 437
        }
415 438
      }
416 439

  
src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
675 675
    return stroke;
676 676
    }
677 677

  
678
///////////////////////////////////////////////////////////////////////////////////////////////////
679

  
680
  private float[][] getAngles()
681
    {
682
    return null;
683
    }
684

  
678 685
///////////////////////////////////////////////////////////////////////////////////////////////////
679 686

  
680 687
  public ObjectSticker retSticker(int sticker)
......
683 690
      {
684 691
      float rad = getRadius();
685 692
      float str = getStroke();
693
      float[][] angles = getAngles();
686 694
      int numStickers = mStickerCoords.length;
687 695
      mStickers = new ObjectSticker[numStickers];
688 696

  
......
691 699
        float scale = mStickerScales[s];
692 700
        float radius = rad / scale;
693 701
        float stroke = str / scale;
694
        int len = mStickerCoords[s].length;
702
        int len = mStickerCoords[s].length/2;
695 703
        float[] radii = new float[len];
696
        for(int r=0; r<len; r++) radii[r] = radius;
697
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
704
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
705
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
698 706
        }
699 707
      }
700 708

  
src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
559 559
    return stroke;
560 560
    }
561 561

  
562
///////////////////////////////////////////////////////////////////////////////////////////////////
563

  
564
  private float[][] getAngles()
565
    {
566
    return null;
567
    }
568

  
562 569
///////////////////////////////////////////////////////////////////////////////////////////////////
563 570

  
564 571
  public ObjectSticker retSticker(int sticker)
......
567 574
      {
568 575
      float rad = getRadius();
569 576
      float str = getStroke();
577
      float[][] angles = getAngles();
570 578
      int numStickers = mStickerCoords.length;
571 579
      mStickers = new ObjectSticker[numStickers];
572 580

  
......
575 583
        float scale = mStickerScales[s];
576 584
        float radius = rad / scale;
577 585
        float stroke = str / scale;
578
        int len = mStickerCoords[s].length;
586
        int len = mStickerCoords[s].length/2;
579 587
        float[] radii = new float[len];
580
        for(int r=0; r<len; r++) radii[r] = radius;
581
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
588
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
589
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
582 590
        }
583 591
      }
584 592

  
src/main/java/org/distorted/objectlib/objects/TwistyMirror.java
464 464
    return stroke;
465 465
    }
466 466

  
467
///////////////////////////////////////////////////////////////////////////////////////////////////
468

  
469
  private float[][] getAngles()
470
    {
471
    return null;
472
    }
473

  
467 474
///////////////////////////////////////////////////////////////////////////////////////////////////
468 475

  
469 476
  public ObjectSticker retSticker(int sticker)
......
472 479
      {
473 480
      float rad = getRadius();
474 481
      float str = getStroke();
482
      float[][] angles = getAngles();
475 483
      int numStickers = mStickerCoords.length;
476 484
      mStickers = new ObjectSticker[numStickers];
477 485

  
......
480 488
        float scale = mStickerScales[s];
481 489
        float radius = rad / scale;
482 490
        float stroke = str / scale;
483
        int len = mStickerCoords[s].length;
491
        int len = mStickerCoords[s].length/2;
484 492
        float[] radii = new float[len];
485
        for(int r=0; r<len; r++) radii[r] = radius;
486
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
493
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
494
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
487 495
        }
488 496
      }
489 497

  
src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java
384 384

  
385 385
  private float getRadius()
386 386
    {
387
    return 0.06f;
387
    return 0.08f;
388 388
    }
389 389

  
390 390
///////////////////////////////////////////////////////////////////////////////////////////////////
......
409 409
    return stroke;
410 410
    }
411 411

  
412
///////////////////////////////////////////////////////////////////////////////////////////////////
413

  
414
  private float[][] getAngles()
415
    {
416
    return null;
417
    }
418

  
412 419
///////////////////////////////////////////////////////////////////////////////////////////////////
413 420

  
414 421
  public ObjectSticker retSticker(int sticker)
......
417 424
      {
418 425
      float rad = getRadius();
419 426
      float str = getStroke();
427
      float[][] angles = getAngles();
420 428
      int numStickers = mStickerCoords.length;
421 429
      mStickers = new ObjectSticker[numStickers];
422 430

  
......
425 433
        float scale = mStickerScales[s];
426 434
        float radius = rad / scale;
427 435
        float stroke = str / scale;
428
        int len = mStickerCoords[s].length;
436
        int len = mStickerCoords[s].length/2;
429 437
        float[] radii = new float[len];
430
        for(int r=0; r<len; r++) radii[r] = radius;
431
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
438
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
439
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
432 440
        }
433 441
      }
434 442

  
src/main/java/org/distorted/objectlib/objects/TwistyRedi.java
416 416
    return ObjectControl.isInIconMode() ? 0.20f : 0.09f;
417 417
    }
418 418

  
419
///////////////////////////////////////////////////////////////////////////////////////////////////
420

  
421
  private float[][] getAngles()
422
    {
423
    return null;
424
    }
425

  
419 426
///////////////////////////////////////////////////////////////////////////////////////////////////
420 427

  
421 428
  public ObjectSticker retSticker(int sticker)
......
424 431
      {
425 432
      float rad = getRadius();
426 433
      float str = getStroke();
434
      float[][] angles = getAngles();
427 435
      int numStickers = mStickerCoords.length;
428 436
      mStickers = new ObjectSticker[numStickers];
429 437

  
......
432 440
        float scale = mStickerScales[s];
433 441
        float radius = rad / scale;
434 442
        float stroke = str / scale;
435
        int len = mStickerCoords[s].length;
443
        int len = mStickerCoords[s].length/2;
436 444
        float[] radii = new float[len];
437
        for(int r=0; r<len; r++) radii[r] = radius;
438
        mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
445
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
446
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
439 447
        }
440 448
      }
441 449

  
src/main/java/org/distorted/objectlib/objects/TwistyRex.java
369 369
    return cubit<24 ? 0 : (cubit<30?1:2);
370 370
    }
371 371

  
372
///////////////////////////////////////////////////////////////////////////////////////////////////
373

  
374
  public int getVariantFaceColor(int variant, int face, int[] numLayers)
375
    {
376
    return variant;
377
    }
378

  
379 372
///////////////////////////////////////////////////////////////////////////////////////////////////
380 373

  
381 374
  public int getCubitFaceColor(int cubit, int face, int[] numLayers)
......
436 429

  
437 430
///////////////////////////////////////////////////////////////////////////////////////////////////
438 431

  
439
  public ObjectSticker retSticker(int sticker)
432
  public int getVariantFaceColor(int variant, int face, int[] numLayers)
440 433
    {
441
    if( mStickers==null )
442
      {
443
      float[][] STICKERS = new float[][]
434
    return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face];
435
    }
436

  
437
///////////////////////////////////////////////////////////////////////////////////////////////////
438

  
439
  public void adjustStickerCoords()
440
    {
441
    mStickerCoords = new float[][]
444 442
          {
445 443
             { -0.5f, 0.1428f, -0.1428f, 0.5f, 0.35f, -0.35f },
446 444
             { -0.5f, 0.0f, 0.0f, -0.5f, 0.5f, 0.0f, 0.0f, 0.5f },
447
             { -0.525f, 0.105f, 0.525f, 0.105f, 0.000f, -0.210f  }
445
             { -0.525f, 0.105f, 0.525f, 0.105f, 0.000f, -0.200f  }
448 446
          };
447
    }
449 448

  
450
      final float F = (float)(Math.PI/20);
451
      final float R1= 0.02f;
452
      final float R2= 0.09f;
453
      final float R3= 0.06f;
454
      final float[][] angles = { { -F/2,F,F },null,{ F/10,-F,-F } };
455
      final float[][] radii  = { {R1,R1,R1},{R2,R2,R2,R2},{0,0,R3} };
456
      final float[] strokes = { 0.06f, 0.07f, 0.05f };
449
///////////////////////////////////////////////////////////////////////////////////////////////////
457 450

  
458
      if( ObjectControl.isInIconMode() )
459
        {
460
        float mult = 1.5f;
461
        strokes[0]*=mult;
462
        strokes[1]*=mult;
463
        strokes[2]*=mult;
464
        }
451
  private float getRadius()
452
    {
453
    return 0.09f;
454
    }
455

  
456
///////////////////////////////////////////////////////////////////////////////////////////////////
457

  
458
  private float getStroke()
459
    {
460
    return ObjectControl.isInIconMode() ? 0.20f : 0.09f;
461
    }
462

  
463
///////////////////////////////////////////////////////////////////////////////////////////////////
465 464

  
466
      mStickers = new ObjectSticker[STICKERS.length];
465
  private float[][] getAngles()
466
    {
467
    final float F = (float)(Math.PI/20);
468
    return new float[][] { { -F/2,F,F },null,{ F/10,-F,-F } };
469
    }
470

  
471
///////////////////////////////////////////////////////////////////////////////////////////////////
472

  
473
  public ObjectSticker retSticker(int sticker)
474
    {
475
    if( mStickers==null )
476
      {
477
      float rad = getRadius();
478
      float str = getStroke();
479
      float[][] angles = getAngles();
480
      int numStickers = mStickerCoords.length;
481
      mStickers = new ObjectSticker[numStickers];
467 482

  
468
      for(int s=0; s<STICKERS.length; s++)
483
      for(int s=0; s<numStickers; s++)
469 484
        {
470
        mStickers[s] = new ObjectSticker(STICKERS[s],angles[s],radii[s],strokes[s]);
485
        float scale = mStickerScales[s];
486
        float radius = rad / scale;
487
        float stroke = str / scale;
488
        int len = mStickerCoords[s].length/2;
489
        float[] radii = new float[len];
490
        for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
491
        mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
471 492
        }
472 493
      }
473 494

  

Also available in: Unified diff