def calc_bezier_curve_range(self, steps, points):
        n = len(points) - 1
        fact_n = math.factorial(n)

        # press OrderedDict into use as an OrderedSet of points
        d = OrderedDict()

        m = float(steps - 1)

        # TODO: optomize this code as much as possible
        for i in range(steps):
            #t = i / float(steps - 1)
            t = i / m

            # optomize a call to calculate the bezier point
            #x, y = bezier(t, points)
            x = y = 0
            for j, pos in enumerate(points):
                #bern = bernstein(t, j, n)
                bin = fact_n / float(math.factorial(j) * math.factorial(n - j))
                bern = bin * (t ** j) * ((1 - t) ** (n - j))
                x += pos[0] * bern
                y += pos[1] * bern

            # convert to integer data coordinates and remove duplicates
            d[int(round(x)), int(round(y))] = None

        return list(d.keys())
Hacky method to get an ordered set of points that are on the
dataset/ETHPy150Open ejeschke/ginga/ginga/canvas/types/basic.py/BezierCurve.calc_bezier_curve_range