
# spirals.py
"""
 Use turtle graphics to generate a series of spirals
 which are saved in spirals.png if the script is called
 from Python, or from Java using CallPython.java.

 However if this script is called from JEP 
 (see JepTurtle.java), then it sets fileName to 
 'JEPspirals'

"""

import turtle
import os
import sys
from math import cos,sin,tan,pi
from PIL import Image 
  

# fileName can be set by JEP
if 'fileName' not in globals():
    fileName = 'spirals'   # the default name
 
screen = turtle.Screen()
screen.setup(800, 800)

pen = turtle.Turtle()
pen.hideturtle()
pen.pensize(3)
pen.penup()
  
angle = 0
theta = 0.01 
a=-7
b=-17
c=27
d=-4
steps = int (250*pi/theta)
turtle.tracer(0,0)
  
for t in range(0,steps):
    angle+=theta
    x=(-cos(a*angle/d)-cos(b*angle/d)+cos(c*angle/d))*150
    y=(-sin(a*angle/d)-sin(b*angle/d)+sin(c*angle/d))*150
    pen.goto(x,y)
    pen.pendown()
turtle.update()
  
turtle = turtle.Turtle(visible=False)
screen.tracer(False)
screen.tracer(True)

# save the image
print("Generating", fileName+'.eps')
canvas = screen.getcanvas()
canvas.postscript(file= fileName+'.eps', width=800, height=800)

img = Image.open(fileName + '.eps') 
print("Generating", fileName+'.png')
img.save(fileName + '.png')
img.close()  

print("Deleting", fileName+'.eps')
os.remove(fileName+'.eps')

screen.bye()
