예제 #1
0
파일: draw.py 프로젝트: droidguy04/batma
def circle(center, radius, color=None, width=0):
    points = []
    x, y = center
    angle, step = 0, math.pi/18

    while angle < 2*math.pi:
        dx, dy = (radius*math.sin(angle), radius*math.cos(angle))
        points.append((x+dx, y+dy))
        angle += step
    
    polygon(points, color, width)
예제 #2
0
파일: draw.py 프로젝트: a100q100/batma
def circle(center, radius, color=None, width=0):
    points = []
    x, y = center
    angle, step = 0, math.pi / 18

    while angle < 2 * math.pi:
        dx, dy = (radius * math.sin(angle), radius * math.cos(angle))
        points.append((x + dx, y + dy))
        angle += step

    polygon(points, color, width)
예제 #3
0
def isin(value1, value2, amount):
    '''Performs an inverse sin interpolation'''
    amount = 1 - math.sin((1-amount)*math.pi_over_2)
    return linear(value1, value2, amount)
예제 #4
0
def sin(value1, value2, amount):
    '''Performs a sin interpolation'''
    amount = math.sin(amount*math.pi_over_2)
    return linear(value1, value2, amount)
예제 #5
0
    def add_particle(self):
        a = self.particle_life < 0
        idxs = a.nonzero()
        idx = -1

        if len(idxs[0] > 0):
            idx = idxs[0][0]
        else:
            raise Exception('Non Empty Particle')

        self.particle_pos[idx][0] = self.origin[0] + self.pos_var[0] * rand()
        self.particle_pos[idx][1] = self.origin[1] + self.pos_var[1] * rand()

        self.particle_start_pos[idx][0] = self.origin[0]
        self.particle_start_pos[idx][1] = self.origin[1]

        a = math.radians(self.angle + self.angle_var * rand())
        v = Vector2(math.cos(a), math.sin(a))
        s = self.speed + self.speed_var * rand()

        dir = v * s

        self.particle_dir[idx][0] = dir[0]
        self.particle_dir[idx][1] = dir[1]

        self.particle_rad[
            idx] = self.radial_accel + self.radial_accel_var * rand()

        self.particle_tan[
            idx] = self.tangential_accel + self.tangential_accel_var * rand()

        life = self.particle_life[idx] = self.life + self.life_var * rand()

        sr = self.start_color[0] + self.start_color_var[0] * rand()
        sg = self.start_color[1] + self.start_color_var[1] * rand()
        sb = self.start_color[2] + self.start_color_var[2] * rand()
        sa = self.start_color[3] + self.start_color_var[3] * rand()

        self.particle_color[idx][0] = sr
        self.particle_color[idx][1] = sg
        self.particle_color[idx][2] = sb
        self.particle_color[idx][3] = sa

        er = self.end_color[0] + self.end_color_var[0] * rand()
        eg = self.end_color[1] + self.end_color_var[1] * rand()
        eb = self.end_color[2] + self.end_color_var[2] * rand()
        ea = self.end_color[3] + self.end_color_var[3] * rand()

        delta_color_r = (er - sr) / life
        delta_color_g = (eg - sg) / life
        delta_color_b = (eb - sb) / life
        delta_color_a = (ea - sa) / life

        self.particle_delta_color[idx][0] = delta_color_r
        self.particle_delta_color[idx][1] = delta_color_g
        self.particle_delta_color[idx][2] = delta_color_b
        self.particle_delta_color[idx][3] = delta_color_a

        self.particle_size[idx] = self.size + self.size_var * rand()

        self.particle_grav[idx][0] = self.gravity[0]
        self.particle_grav[idx][1] = self.gravity[1]

        self.particle_count += 1
예제 #6
0
    def add_particle(self):
        a = self.particle_life < 0
        idxs = a.nonzero()
        idx = -1

        if len(idxs[0] > 0):
            idx = idxs[0][0]
        else:
            raise Exception('Non Empty Particle')

        self.particle_pos[idx][0] = self.origin[0] + self.pos_var[0]*rand()
        self.particle_pos[idx][1] = self.origin[1] + self.pos_var[1]*rand()

        self.particle_start_pos[idx][0] = self.origin[0]
        self.particle_start_pos[idx][1] = self.origin[1]

        a = math.radians(self.angle + self.angle_var*rand())
        v = Vector2(math.cos(a), math.sin(a))
        s = self.speed + self.speed_var*rand()

        dir = v*s

        self.particle_dir[idx][0] = dir[0]
        self.particle_dir[idx][1] = dir[1]

        self.particle_rad[idx] = self.radial_accel + self.radial_accel_var*rand()

        self.particle_tan[idx] = self.tangential_accel + self.tangential_accel_var*rand()
        
        life = self.particle_life[idx] = self.life + self.life_var * rand()

        sr = self.start_color[0] + self.start_color_var[0]*rand()
        sg = self.start_color[1] + self.start_color_var[1]*rand()
        sb = self.start_color[2] + self.start_color_var[2]*rand()
        sa = self.start_color[3] + self.start_color_var[3]*rand()

        self.particle_color[idx][0] = sr
        self.particle_color[idx][1] = sg
        self.particle_color[idx][2] = sb
        self.particle_color[idx][3] = sa

        er = self.end_color[0] + self.end_color_var[0]*rand()
        eg = self.end_color[1] + self.end_color_var[1]*rand()
        eb = self.end_color[2] + self.end_color_var[2]*rand()
        ea = self.end_color[3] + self.end_color_var[3]*rand()

        delta_color_r = (er-sr)/life
        delta_color_g = (eg-sg)/life
        delta_color_b = (eb-sb)/life
        delta_color_a = (ea-sa)/life

        self.particle_delta_color[idx][0] = delta_color_r
        self.particle_delta_color[idx][1] = delta_color_g
        self.particle_delta_color[idx][2] = delta_color_b
        self.particle_delta_color[idx][3] = delta_color_a

        self.particle_size[idx] = self.size + self.size_var*rand()

        self.particle_grav[idx][0] = self.gravity[0]
        self.particle_grav[idx][1] = self.gravity[1]

        self.particle_count += 1
예제 #7
0
def isin(value1, value2, amount):
    '''Performs an inverse sin interpolation'''
    amount = 1 - math.sin((1 - amount) * math.pi_over_2)
    return linear(value1, value2, amount)
예제 #8
0
def sin(value1, value2, amount):
    '''Performs a sin interpolation'''
    amount = math.sin(amount * math.pi_over_2)
    return linear(value1, value2, amount)