def test_radial_properties(self): for i in range(8): a = pi * (i-3) / 4 r = 1.0 v = Vector.from_angle_and_radius(a, r) self.assertAlmostEqual(a, v.angle) self.assertAlmostEqual(r, v.magnitude)
def generate_child(randgen, pcircle): (kind, solarradius, minrad, radrange) = select_child_info(randgen()) bdfp = pcircle.radius + select_body_distance(solarradius, tigthness = 0.5, u = randgen()) angle = randgen * 2 * pi center = pcircle.center + Vector.from_angle_and_radius(angle, bdfp) bodyradius = select_star_radius(minrad, radrange) return Body(kind, Circle(center, bodyradius))
def generate_star(randgen, galacticradius, spokes, spin, diffusion, tightness): """randgen is a function which generates uniform random samples [0, 1).""" (kind, tightnessfactor, minrad, radrange, childmu, childsigma) = select_star_info(randgen()) adjustedtightness = tightness * tightnessfactor bdfc = select_body_distance(galacticradius, adjustedtightness, randgen()) angle = select_angle(spokes, diffusion, spin, bdfc, randgen()) bodyradius = select_star_radius(minrad, radrange, randgen()) circle = Circle(Vector.from_angle_and_radius(angle, bdfc), bodyradius) parent = Body(kind, circle) yield parent for i in range(int(random.lognormvariate(childmu, childsigma))): yield generate_child(randgen, circle)
def test_mul(self): a = Vector(1.0, 1.0) b = Vector.from_angle_and_radius(pi/4, 1) self.assertEqual(a, b * (2**0.5))
def test_sub(self): a = Vector(0.5 ** 0.5, 0.5 ** 0.5) b = Vector.from_angle_and_radius(pi/4, 1) c = Vector(0.0, 0.0) self.assertEqual(c, a - b)
def test_add(self): a = Vector(0.5 ** 0.5, 0.5 ** 0.5) b = Vector.from_angle_and_radius(1.25*pi, 1) c = Vector(0.0, 0.0) self.assertEqual(c, a + b)
def test_neg(self): a = Vector(0.5 ** 0.5, 0.5 ** 0.5) b = Vector.from_angle_and_radius(1.25*pi, 1) self.assertEqual(a, -b)
def test_eq(self): a = Vector(0.5 ** 0.5, 0.5 ** 0.5) b = Vector.from_angle_and_radius(pi/4, 1) self.assertEqual(a, b)
def test_radial_constructor(self): v = Vector.from_angle_and_radius(0.25 * pi, 2 ** 0.5) (x, y) = v self.assertAlmostEqual(x, 1) self.assertAlmostEqual(y, 1)