func NewStickShape(height float32, width float32, step float32) (shape *StickShap, err error) {
	convex, err := sf.NewConvexShape()
	shape = &StickShap{ConvexShape: *convex, height: height, width: width, step: step, ctrlPoint: make([]sf.Vector2f, 12), radiusTop: 0, radiusBottom: 0}
	shape.SetPointCount(uint(4*step + 4))
	shape.updateShape()
	return
}
func NewCurveCicleShape(step int, radius float32, num uint) (cShape *CurveConvexShape, err error) {
	shape, err := sf.NewConvexShape()
	cShape = &CurveConvexShape{ConvexShape: *shape, step: step, ctrlPoints: make([]sf.Vector2f, 0), curves: 3}
	cShape.SetPointCount(num)
	var i uint
	for i = 0; i < num; i++ {
		cShape.SetPoint(i, sf.Vector2f{radius * float32(math.Cos(float64(i)*math.Pi*2/float64(num))), radius * float32(math.Sin(float64(i)*math.Pi*2/float64(num)))})
	}
	cShape.AllToCurve()
	return
}
func NewCurveConvexShape(step int) (cShape *CurveConvexShape, err error) {
	shape, err := sf.NewConvexShape()
	cShape = &CurveConvexShape{ConvexShape: *shape, step: step, ctrlPoints: make([]sf.Vector2f, 0), curves: 3}
	return
}