Revision 1ef59b1d
Added by Leszek Koltunski about 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java | ||
---|---|---|
98 | 98 |
|
99 | 99 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
100 | 100 |
|
101 |
private int getType(float[] position)
|
|
101 |
private int getType(float[] pos) |
|
102 | 102 |
{ |
103 |
switch(position.length)
|
|
103 |
switch(pos.length) |
|
104 | 104 |
{ |
105 | 105 |
case 3: return CUBIT_111; |
106 | 106 |
case 6: return CUBIT_211; |
107 |
case 9: boolean x1 = (position[0]==position[3] && position[0]==position[6]);
|
|
108 |
boolean y1 = (position[1]==position[4] && position[1]==position[7]);
|
|
109 |
boolean z1 = (position[2]==position[5] && position[2]==position[8]);
|
|
107 |
case 9: boolean x1 = (pos[0]==pos[3] && pos[0]==pos[6]);
|
|
108 |
boolean y1 = (pos[1]==pos[4] && pos[1]==pos[7]);
|
|
109 |
boolean z1 = (pos[2]==pos[5] && pos[2]==pos[8]);
|
|
110 | 110 |
return ( (x1&&y1) || (x1&&z1) || (y1&&z1) ) ? CUBIT_311 : CUBIT_OTH; |
111 |
case 12: boolean x2 = (position[0]==position[3] && position[0]==position[6] && position[0]==position[ 9]); |
|
112 |
boolean y2 = (position[1]==position[4] && position[1]==position[7] && position[1]==position[10]); |
|
113 |
boolean z2 = (position[2]==position[5] && position[2]==position[8] && position[2]==position[11]); |
|
114 |
return ( x2 || y2 || z2 ) ? CUBIT_221 : CUBIT_OTH; |
|
115 |
case 24: float x3 = position[0]; |
|
116 |
float y3 = position[1]; |
|
117 |
float z3 = position[2]; |
|
111 |
case 12: float x = (pos[0]+pos[3]+pos[6]+pos[ 9])/4; |
|
112 |
float y = (pos[1]+pos[4]+pos[7]+pos[10])/4; |
|
113 |
float z = (pos[2]+pos[5]+pos[8]+pos[11])/4; |
|
114 |
float d1 = (pos[0]-x)*(pos[0]-x) + (pos[ 1]-y)*(pos[ 1]-y) + (pos[ 2]-z)*(pos[ 2]-z); |
|
115 |
float d2 = (pos[3]-x)*(pos[3]-x) + (pos[ 4]-y)*(pos[ 4]-y) + (pos[ 5]-z)*(pos[ 5]-z); |
|
116 |
float d3 = (pos[6]-x)*(pos[6]-x) + (pos[ 7]-y)*(pos[ 7]-y) + (pos[ 8]-z)*(pos[ 8]-z); |
|
117 |
float d4 = (pos[9]-x)*(pos[9]-x) + (pos[10]-y)*(pos[10]-y) + (pos[11]-z)*(pos[11]-z); |
|
118 |
return ( d1==0.5f && d2==0.5f && d3==0.5f && d4==0.5f ) ? CUBIT_221 : CUBIT_OTH; |
|
119 |
case 24: float x3 = pos[0]; |
|
120 |
float y3 = pos[1]; |
|
121 |
float z3 = pos[2]; |
|
118 | 122 |
float x4=-10,y4=-10,z4=-10; |
119 | 123 |
int i; |
120 | 124 |
|
121 | 125 |
for(i=0; i<8; i++) |
122 | 126 |
{ |
123 |
if( position[3*i]!=x3 && position[3*i+1]!=y3 && position[3*i+2]!=z3 )
|
|
127 |
if( pos[3*i]!=x3 && pos[3*i+1]!=y3 && pos[3*i+2]!=z3 )
|
|
124 | 128 |
{ |
125 |
x4 = position[3*i ];
|
|
126 |
y4 = position[3*i+1];
|
|
127 |
z4 = position[3*i+2];
|
|
129 |
x4 = pos[3*i ]; |
|
130 |
y4 = pos[3*i+1]; |
|
131 |
z4 = pos[3*i+2]; |
|
128 | 132 |
break; |
129 | 133 |
} |
130 | 134 |
} |
... | ... | |
138 | 142 |
{ |
139 | 143 |
for(i=0; i<8; i++) |
140 | 144 |
{ |
141 |
if( (position[3*i ]!=x3 && position[3*i ]!=x4) ||
|
|
142 |
(position[3*i+1]!=y3 && position[3*i+1]!=y4) ||
|
|
143 |
(position[3*i+2]!=z3 && position[3*i+2]!=z4) ) return CUBIT_OTH;
|
|
145 |
if( (pos[3*i ]!=x3 && pos[3*i ]!=x4) ||
|
|
146 |
(pos[3*i+1]!=y3 && pos[3*i+1]!=y4) ||
|
|
147 |
(pos[3*i+2]!=z3 && pos[3*i+2]!=z4) ) return CUBIT_OTH;
|
|
144 | 148 |
} |
145 | 149 |
|
146 | 150 |
return CUBIT_222; |
Also available in: Unified diff
Bandaged 3x3: correct a bug in TwistyBandagedAbstract