new_contents: from __future__ import division
  
  import sys
  import os
  sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
  #
  
  
  import cocos
  from cocos.director import director
  from cocos.actions import Bezier
  from cocos.sprite import Sprite
  import pyglet
  
  from cocos import path
  
  def direct_bezier(p0, p1, p2, p3):
      '''Given four points, returns a bezier path that go through them.
  
      It starts in p0, finish in p3, and pass through p1 and p2 in t=0.4 and
      t=0.6 respectively.
      '''
  
      def _one_dim(p0xy, B1xy, B2xy, p3xy):
          '''Calculates the p1 and p2 to draw through B1 and B2 given p0 and p3.
  
          p0: P sub 0 of bezier, it's also B(0)
          B1: B(0.4)
          B2: B(0.6)
          p3: P sub 3 of bezier, it's also B(1)
          '''
          p2xy = (1.5 * B2xy - B1xy + 0.12 * p0xy - 0.26 * p3xy) / 0.36
          p1xy = (B2xy - 0.064 * p0xy - 0.432 * p2xy - 0.216 * p3xy) / 0.288
          return p1xy, p2xy
  
      bp1x, bp2x = _one_dim(p0[0], p1[0], p2[0], p3[0])
      bp1y, bp2y = _one_dim(p0[1], p1[1], p2[1], p3[1])
  
      bp1 = bp1x, bp1y
      bp2 = bp2x, bp2y
  
      bezier_path = path.Bezier(p0, p3, bp1, bp2)
      return bezier_path
  
  
  class TestLayer(cocos.layer.Layer):
      def __init__(self):
          super( TestLayer, self ).__init__()
  
          go_through = [(100,300), (370,330), (430,270), (750,550)]
  
          # visually spot through where it should go
          for pos in go_through:
              sprite = Sprite('fire.png')
              sprite.position = pos
              sprite.scale = .3
              self.add(sprite)
  
          # calculate the points
          bezier_path = direct_bezier(*go_through)
  
          sprite = Sprite('fire.png')
          sprite.scale = .3
          sprite.color = (0, 0, 255)
          self.add(sprite)
          sprite.do(Bezier(bezier_path, 5))
  
  
  if __name__ == "__main__":
      director.init(width=800, height=600)
      test_layer = TestLayer ()
      main_scene = cocos.scene.Scene (test_layer)
      director.run (main_scene)
  
subject: Test using bezier going through 4 specific points