Pie Chart

by Johan Vandeplas

CoffeeScript

r = 9
p = 25

# Converts from degrees to radians.
toRad = (degrees) ->
  return degrees * Math.PI / 180

# Converts from radians to degrees.
toDeg = (radians) ->
  return radians * 180 / Math.PI


# Creates canvas 320Ă— 200 at 10, 50
paper = Raphael(10, 50, 320, 200)

circle = paper.circle(r, r, r)
circle.attr("fill", "#ddd")
circle.attr("stroke", false)

if p <= 50
  a = toRad(3.6 * p)

  xa = r * Math.sin(a)
  ya = r - (r * Math.cos(a))

  arc1 = paper.path("M#{r},#{r} v-#{r} a#{r},#{r} 0 0 1 #{xa},#{ya} z")

  arc1.attr("fill", "#2cb944")
  arc1.attr("stroke", false)
  
else
  arc1 = paper.path("M#{r},#{r} v-#{r} a#{r},#{r} 0 0 1 0,#{ 2*r } z")

  arc1.attr("fill", "#2cb944")
  arc1.attr("stroke", false)
  
  a = toRad(3.6 * (p - 50))

  xa = r * Math.sin(a)
  ya = r - (r * Math.cos(a))
  
  console.log(xa, ya)
  
  arc2 = paper.path("M#{r},#{r} v#{r} a#{r},#{r} 0 0 1 #{-1 *xa},#{-1 *ya} z")

  arc2.attr("fill", "#2cb944")
  arc2.attr("stroke", false)