| 37 | |
| 38 | # Drawing of Fidget Spinner on Pygame Window |
| 39 | def show_spinner(angle, color, dark_color): |
| 40 | d = 80 |
| 41 | innerd = 50 |
| 42 | x = width/2 - d/2 |
| 43 | y = height/2 |
| 44 | l = 200 |
| 45 | r = l/(3**0.5) |
| 46 | w = 10 |
| 47 | lw = 60 |
| 48 | |
| 49 | # A little math for calculation the coordinates after rotation by some 'angle' |
| 50 | # x = originx + r*cos(angle) |
| 51 | # y = originy + r*sin(angle) |
| 52 | |
| 53 | centre = [x, y, d, d] |
| 54 | centre_inner = [x + d/2 - innerd/2, y + d/2 - innerd/2, innerd, innerd] |
| 55 | |
| 56 | top = [x, y - l/(3)**0.5, d, d] |
| 57 | top_inner = [x, y - l/(3)**0.5, innerd, innerd] |
| 58 | |
| 59 | top[0] = x + r*cos(radians(angle)) |
| 60 | top[1] = y + r*sin(radians(angle)) |
| 61 | top_inner[0] = x + d/2 - innerd/2 + r*cos(radians(angle)) |
| 62 | top_inner[1] = y + d/2 - innerd/2 + r*sin(radians(angle)) |
| 63 | |
| 64 | left = [x - l/2, y + l/(2*(3)**0.5), d, d] |
| 65 | left_inner = [x, y - l/(3)**0.5, innerd, innerd] |
| 66 | |
| 67 | left[0] = x + r*cos(radians(angle - 120)) |
| 68 | left[1] = y + r*sin(radians(angle - 120)) |
| 69 | left_inner[0] = x + d/2 - innerd/2 + r*cos(radians(angle - 120)) |
| 70 | left_inner[1] = y + d/2 - innerd/2 + r*sin(radians(angle - 120)) |
| 71 | |
| 72 | |
| 73 | right = [x + l/2, y + l/(2*(3)**0.5), d, d] |
| 74 | right_inner = [x, y - l/(3)**0.5, innerd, innerd] |
| 75 | |
| 76 | right[0] = x + r*cos(radians(angle + 120)) |
| 77 | right[1] = y + r*sin(radians(angle + 120)) |
| 78 | right_inner[0] = x + d/2 - innerd/2 + r*cos(radians(angle + 120)) |
| 79 | right_inner[1] = y + d/2 - innerd/2 + r*sin(radians(angle + 120)) |
| 80 | |
| 81 | # Drawing shapes on Pygame Window |
| 82 | pygame.draw.line(display, dark_color, (top[0] + d/2, top[1] + d/2), (centre[0] + d/2, centre[1] + d/2), lw) |
| 83 | pygame.draw.line(display, dark_color, (left[0] + d/2, left[1] + d/2), (centre[0] + d/2, centre[1] + d/2), lw) |
| 84 | pygame.draw.line(display, dark_color, (right[0] + d/2, right[1] + d/2), (centre[0] + d/2, centre[1] + d/2), lw) |
| 85 | pygame.draw.ellipse(display, color, tuple(centre)) |
| 86 | pygame.draw.ellipse(display, dark_color, tuple(centre_inner)) |
| 87 | pygame.draw.ellipse(display, color, tuple(top)) |
| 88 | pygame.draw.ellipse(display, dark_gray, tuple(top_inner), 10) |
| 89 | pygame.draw.ellipse(display, color, tuple(left)) |
| 90 | pygame.draw.ellipse(display, dark_gray, tuple(left_inner), 10) |
| 91 | pygame.draw.ellipse(display, color, tuple(right)) |
| 92 | pygame.draw.ellipse(display, dark_gray, tuple(right_inner), 10) |
| 93 | |
| 94 | |
| 95 | # Displaying Information on Pygame Window |