Exemplo n.º 1
0
def test_section_modulus_and_polar_second_moment_of_area():
    d = Symbol('d', positive=True)
    c = Circle((3, 7), 8)
    assert c.polar_second_moment_of_area() == 2048 * pi
    assert c.section_modulus() == (128 * pi, 128 * pi)
    c = Circle((2, 9), d / 2)
    assert c.polar_second_moment_of_area(
    ) == pi * d**3 * Abs(d) / 64 + pi * d * Abs(d)**3 / 64
    assert c.section_modulus() == (pi * d**3 / S(32), pi * d**3 / S(32))

    a, b = symbols('a, b', positive=True)
    e = Ellipse((4, 6), a, b)
    assert e.section_modulus() == (pi * a * b**2 / S(4), pi * a**2 * b / S(4))
    assert e.polar_second_moment_of_area(
    ) == pi * a**3 * b / S(4) + pi * a * b**3 / S(4)
    e = e.rotate(pi / 2)  # no change in polar and section modulus
    assert e.section_modulus() == (pi * a**2 * b / S(4), pi * a * b**2 / S(4))
    assert e.polar_second_moment_of_area(
    ) == pi * a**3 * b / S(4) + pi * a * b**3 / S(4)

    e = Ellipse((a, b), 2, 6)
    assert e.section_modulus() == (18 * pi, 6 * pi)
    assert e.polar_second_moment_of_area() == 120 * pi

    e = Ellipse(Point(0, 0), 2, 2)
    assert e.section_modulus() == (2 * pi, 2 * pi)
    assert e.section_modulus(Point(2, 2)) == (2 * pi, 2 * pi)
    assert e.section_modulus((2, 2)) == (2 * pi, 2 * pi)