Revision dad33773
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/FactorySticker.java | ||
---|---|---|
27 | 27 |
import static org.distorted.objects.FactoryCubit.IVY_D; |
28 | 28 |
import static org.distorted.objects.FactoryCubit.IVY_C; |
29 | 29 |
import static org.distorted.objects.FactoryCubit.IVY_M; |
30 |
import static org.distorted.objects.FactoryCubit.REX_D; |
|
30 | 31 |
|
31 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
32 | 33 |
|
33 | 34 |
class FactorySticker |
34 | 35 |
{ |
36 |
private static final float SQ2 = (float)Math.sqrt(2); |
|
37 |
private static final float SQ3 = (float)Math.sqrt(3); |
|
38 |
|
|
35 | 39 |
private static FactorySticker mThis; |
36 | 40 |
|
37 | 41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
248 | 252 |
paint.setColor(color); |
249 | 253 |
paint.setStyle(Paint.Style.FILL); |
250 | 254 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
255 |
|
|
256 |
paint.setColor(COLOR_BLACK); |
|
257 |
paint.setStyle(Paint.Style.STROKE); |
|
258 |
paint.setStrokeWidth(stroke*TEXTURE_HEIGHT); |
|
259 |
|
|
260 |
float T = (0.5f-REX_D)*SQ2*(SQ3-1); |
|
261 |
float H1 = T*(1.0f + 2*SQ3/3); |
|
262 |
float H2 = T*(0.5f + SQ3/6); |
|
263 |
float D = H2*SQ3; |
|
264 |
|
|
265 |
float cx1 = left+ TEXTURE_HEIGHT*0.5f; |
|
266 |
float cy1 = top + TEXTURE_HEIGHT*(0.5f+H1); |
|
267 |
float cx2 = left+ TEXTURE_HEIGHT*(0.5f-D); |
|
268 |
float cy2 = top + TEXTURE_HEIGHT*(0.5f+H2); |
|
269 |
float cx3 = left+ TEXTURE_HEIGHT*(0.5f+D); |
|
270 |
float cy3 = top + TEXTURE_HEIGHT*(0.5f+H2); |
|
271 |
|
|
272 |
float R1= TEXTURE_HEIGHT*(1-2*REX_D); |
|
273 |
|
|
274 |
canvas.drawArc( cx1-R1, cy1-R1, cx1+R1, cy1+R1, 255, 30, false ,paint); |
|
275 |
canvas.drawArc( cx2-R1, cy2-R1, cx2+R1, cy2+R1, 315, 30, false ,paint); |
|
276 |
canvas.drawArc( cx3-R1, cy3-R1, cx3+R1, cy3+R1, 195, 30, false ,paint); |
|
277 |
/* |
|
278 |
float cx = left+ TEXTURE_HEIGHT*0.5f; |
|
279 |
float cy = top + TEXTURE_HEIGHT*0.5f; |
|
280 |
float R2 = radius*TEXTURE_HEIGHT; |
|
281 |
float dist = ( (0.5f-REX_D)*(SQ3-1) - (2*SQ3/3)*radius )*TEXTURE_HEIGHT; |
|
282 |
|
|
283 |
canvas.drawArc( cx+dist-R2, cy-R2, cx+dist+R2, cy+R2, 330, 60, false ,paint); |
|
284 |
canvas.drawArc( cx-R2, cy+dist-R2, cx+R2, cy+dist+R2, 60, 60, false ,paint); |
|
285 |
canvas.drawArc( cx-dist-R2, cy-R2, cx-dist+R2, cy+R2, 150, 60, false ,paint); |
|
286 |
canvas.drawArc( cx-R2, cy-dist-R2, cx+R2, cy-dist+R2, 240, 60, false ,paint); |
|
287 |
*/ |
|
251 | 288 |
} |
252 | 289 |
|
253 | 290 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
254 |
// TODO |
|
255 | 291 |
|
256 | 292 |
void drawRexFaceSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius) |
257 | 293 |
{ |
258 | 294 |
paint.setColor(color); |
259 | 295 |
paint.setStyle(Paint.Style.FILL); |
260 | 296 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
297 |
|
|
298 |
paint.setColor(COLOR_BLACK); |
|
299 |
paint.setStyle(Paint.Style.STROKE); |
|
300 |
paint.setStrokeWidth(stroke*TEXTURE_HEIGHT); |
|
301 |
|
|
302 |
float cx1 = left+ TEXTURE_HEIGHT*REX_D; |
|
303 |
float cy1 = top + TEXTURE_HEIGHT*(1-REX_D); |
|
304 |
float cx2 = left+ TEXTURE_HEIGHT*REX_D; |
|
305 |
float cy2 = top + TEXTURE_HEIGHT*REX_D; |
|
306 |
float cx3 = left+ TEXTURE_HEIGHT*(1-REX_D); |
|
307 |
float cy3 = top + TEXTURE_HEIGHT*REX_D; |
|
308 |
float cx4 = left+ TEXTURE_HEIGHT*(1-REX_D); |
|
309 |
float cy4 = top + TEXTURE_HEIGHT*(1-REX_D); |
|
310 |
float R1 = TEXTURE_HEIGHT*(1-2*REX_D); |
|
311 |
|
|
312 |
canvas.drawArc( cx1-R1, cy1-R1, cx1+R1, cy1+R1, 300, 30, false ,paint); |
|
313 |
canvas.drawArc( cx2-R1, cy2-R1, cx2+R1, cy2+R1, 30, 30, false ,paint); |
|
314 |
canvas.drawArc( cx3-R1, cy3-R1, cx3+R1, cy3+R1, 120, 30, false ,paint); |
|
315 |
canvas.drawArc( cx4-R1, cy4-R1, cx4+R1, cy4+R1, 210, 30, false ,paint); |
|
316 |
|
|
317 |
float cx = left+ TEXTURE_HEIGHT*0.5f; |
|
318 |
float cy = top + TEXTURE_HEIGHT*0.5f; |
|
319 |
float R2 = radius*TEXTURE_HEIGHT; |
|
320 |
float dist = ( (0.5f-REX_D)*(SQ3-1) - (2*SQ3/3)*radius )*TEXTURE_HEIGHT; |
|
321 |
|
|
322 |
canvas.drawArc( cx+dist-R2, cy-R2, cx+dist+R2, cy+R2, 330, 60, false ,paint); |
|
323 |
canvas.drawArc( cx-R2, cy+dist-R2, cx+R2, cy+dist+R2, 60, 60, false ,paint); |
|
324 |
canvas.drawArc( cx-dist-R2, cy-R2, cx-dist+R2, cy+R2, 150, 60, false ,paint); |
|
325 |
canvas.drawArc( cx-R2, cy-dist-R2, cx+R2, cy-dist+R2, 240, 60, false ,paint); |
|
261 | 326 |
} |
262 | 327 |
|
263 | 328 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Progress with the Rex Cube (stickers)