def _final_coords(self, alpha, phi, params_dict=None): if params_dict is None: params_dict = self.gun_params p = {} for key in self.gun_params: p[key] = params_dict.get(key, self.gun_params[key]) coords = (p["x"], p["y"], p["z"]) angles = (alpha + p["alpha_0"], phi + p["phi_0"]) v = p["v"] g = p["g"] gun_length = p["gun_length"] return ballistics.final_coords(coords, angles, v, g, gun_length)
def rotate_and_shoot(self, d_alpha=0.0, d_phi=0.0): self.alpha += d_alpha self.phi += d_phi # Randomize initial parameters alpha = self.randomize_alpha(self.alpha) phi = self.randomize_phi(self.phi) v = self.randomize_v(self.v) g = self.g # Take into account length of gun x = self.x0 + self.gun_length * cos(alpha) * cos(phi) y = self.x0 + self.gun_length * cos(alpha) * sin(phi) z = self.z0 + self.gun_length * sin(alpha) self.shot_x, self.shot_y = final_coords((x, y, z), (alpha, phi), v, g) return self.shot_x, self.shot_y