Draw a Sun Using Arcade Library Python

Python's Arcade library is a powerful graphics library built on Pyglet that enables creating 2D games and visual applications. In this article, we'll learn how to draw a sun using different methods with the Arcade library.

Installing Arcade Library

First, install the Arcade library using pip ?

pip install arcade

Method 1: Simple Circle Sun

This method creates a basic sun using a filled circle ?

import arcade

# Window dimensions
SCREEN_WIDTH = 500
SCREEN_HEIGHT = 500

def draw_sun():
    # Draw a filled circle for the sun body
    arcade.draw_circle_filled(
        SCREEN_WIDTH // 2,  # x coordinate (center)
        SCREEN_HEIGHT // 2, # y coordinate (center)  
        100,                # radius
        arcade.color.ORANGE # color
    )

def main():
    # Create window
    arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, "Simple Sun")
    arcade.set_background_color(arcade.color.SKY_BLUE)
    
    # Start rendering
    arcade.start_render()
    draw_sun()
    arcade.finish_render()
    
    # Keep window open
    arcade.run()

if __name__ == '__main__':
    main()

Method 2: Sun with Rays

This method creates a more realistic sun with radiating rays using mathematical calculations ?

import arcade
import math

# Window and sun parameters
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 400
NUM_RAYS = 16
RAY_LENGTH = 80
SUN_RADIUS = 50

def draw_sun_with_rays(center_x, center_y):
    # Draw sun rays
    angle_step = 2 * math.pi / NUM_RAYS
    
    for i in range(NUM_RAYS):
        angle = i * angle_step
        
        # Calculate ray endpoints
        start_x = center_x + (SUN_RADIUS + 10) * math.cos(angle)
        start_y = center_y + (SUN_RADIUS + 10) * math.sin(angle)
        end_x = center_x + (SUN_RADIUS + RAY_LENGTH) * math.cos(angle)
        end_y = center_y + (SUN_RADIUS + RAY_LENGTH) * math.sin(angle)
        
        # Draw each ray
        arcade.draw_line(start_x, start_y, end_x, end_y, 
                        arcade.color.YELLOW, 4)
    
    # Draw sun body (circle)
    arcade.draw_circle_filled(center_x, center_y, SUN_RADIUS, 
                             arcade.color.ORANGE)

def main():
    # Create window
    arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, "Sun with Rays")
    arcade.set_background_color(arcade.color.SKY_BLUE)
    
    # Start rendering
    arcade.start_render()
    draw_sun_with_rays(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)
    arcade.finish_render()
    
    # Keep window open
    arcade.run()

if __name__ == '__main__':
    main()

Method 3: Animated Sun

This method creates an animated sun with rotating rays ?

import arcade
import math

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 400

class SunWindow(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Animated Sun")
        arcade.set_background_color(arcade.color.SKY_BLUE)
        self.rotation = 0
    
    def on_draw(self):
        arcade.start_render()
        
        center_x = SCREEN_WIDTH // 2
        center_y = SCREEN_HEIGHT // 2
        
        # Draw rotating rays
        for i in range(12):
            angle = (i * 30 + self.rotation) * math.pi / 180
            start_x = center_x + 60 * math.cos(angle)
            start_y = center_y + 60 * math.sin(angle)
            end_x = center_x + 120 * math.cos(angle)
            end_y = center_y + 120 * math.sin(angle)
            
            arcade.draw_line(start_x, start_y, end_x, end_y,
                           arcade.color.YELLOW, 5)
        
        # Draw sun body
        arcade.draw_circle_filled(center_x, center_y, 50,
                                arcade.color.ORANGE)
    
    def on_update(self, delta_time):
        self.rotation += 30 * delta_time  # Rotate 30 degrees per second

def main():
    window = SunWindow()
    arcade.run()

if __name__ == '__main__':
    main()

Key Components

Function Purpose Parameters
arcade.draw_circle_filled() Draw filled circle x, y, radius, color
arcade.draw_line() Draw line for rays x1, y1, x2, y2, color, width
arcade.open_window() Create display window width, height, title

Tips for Better Sun Graphics

  • Use gradient colors for more realistic effects

  • Add multiple ray layers with different lengths

  • Implement rotation animation for dynamic rays

  • Consider window proportions for proper positioning

Conclusion

The Arcade library provides multiple approaches for drawing a sun, from simple circles to complex animated graphics. Use basic shapes for simple applications or combine mathematical calculations with animation for more engaging visuals.

Updated on: 2026-03-27T14:31:44+05:30

753 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements