Example #1
0
    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)
Example #2
0
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))
Example #3
0
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)
Example #4
0
    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))
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)