'Returns the angular momentum of the rigid body about a point in the
given frame.
The angular momentum H of a rigid body B about some point O in a frame
N is given by:
H = IÂ·w + rÃMv
where I is the central inertia dyadic of B, w is the angular velocity
of body B in the frame, N, r is the position vector from point O to the
mass center of B, and v is the velocity of the mass center in the
frame, N.
Parameters
point : Point
The point about which angular momentum is desired.
frame : ReferenceFrame
The frame in which angular momentum is desired.
Examples
>>> from sympy.physics.mechanics import Point, ReferenceFrame, outer
>>> from sympy.physics.mechanics import RigidBody, dynamicsymbols
>>> M, v, r, omega = dynamicsymbols(\'M v r omega\')
>>> N = ReferenceFrame(\'N\')
>>> b = ReferenceFrame(\'b\')
>>> b.set_ang_vel(N, omega * b.x)
>>> P = Point(\'P\')
>>> P.set_vel(N, 1 * N.x)
>>> I = outer(b.x, b.x)
>>> B = RigidBody(\'B\', P, b, M, (I, P))
>>> B.angular_momentum(P, N)
omega*b.x'

def angular_momentum(self, point, frame):

    I = self.central_inertia
    w = self.frame.ang_vel_in(frame)
    m = self.mass
    r = self.masscenter.pos_from(point)
    v = self.masscenter.vel(frame)
    return (I.dot(w) + r.cross((m * v)))
