Revision ef018c1b
Added by Leszek Koltunski about 4 years ago
| src/main/java/org/distorted/objects/MovementDiamond.java | ||
|---|---|---|
| 23 | 23 |
|
| 24 | 24 |
class MovementDiamond extends Movement8 |
| 25 | 25 |
{
|
| 26 |
MovementDiamond() |
|
| 26 |
MovementDiamond(float[][] cuts, boolean[][] rotatable, int numLayers)
|
|
| 27 | 27 |
{
|
| 28 |
super(TwistyDiamond.ROT_AXIS); |
|
| 29 |
} |
|
| 30 |
|
|
| 31 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 32 |
// We have either one of the four faces (1,3,4,6) which, when the retAxis are cast onto it, they |
|
| 33 |
// point the right way (and so the triangle then spans from offset=-SQ3/6 to offset=+SQ3/3 with |
|
| 34 |
// midpoint at SQ3/12) or one of the other face when the cast rotAxis are the wrong way round (and |
|
| 35 |
// the triangle spans then from 0 to SQ3/2 with midpoint at SQ3/4). |
|
| 36 |
|
|
| 37 |
int computeRowFromOffset(int face, int axisIndex, int numLayers, float offset) |
|
| 38 |
{
|
|
| 39 |
float off = ( face==1 || face==3 || face==4 || face==6 ) ? (offset+2*DIST2D) : (offset+DIST2D); |
|
| 40 |
return (int)(numLayers*off/(3*DIST2D)); |
|
| 28 |
super(TwistyDiamond.ROT_AXIS,cuts,rotatable, numLayers); |
|
| 41 | 29 |
} |
| 42 | 30 |
|
| 43 | 31 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Abstract the next function, computeRowFromOffset(), out of the individual Movement classes.
Still two issues:
1) mysterious 1.5 multiplier in Movement12
2) in Movement8, moving the offset works only if the rotAxis are face-turning, i.e. they connect the centers of the opposing faces of the octahedron.