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)
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)
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)
def sin(value1, value2, amount): '''Performs a sin interpolation''' amount = math.sin(amount*math.pi_over_2) return linear(value1, value2, amount)
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
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
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)
def sin(value1, value2, amount): '''Performs a sin interpolation''' amount = math.sin(amount * math.pi_over_2) return linear(value1, value2, amount)