
    \ha                     `    S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
  S/r " S S\5      rg)	    )S)crossdot)BodyBase)inertia_of_point_mass)sympy_deprecation_warningParticlec                   f   ^  \ rS rSrSr\R                  rS
U 4S jjrS r	S r
S rS rS rS	rU =r$ )r	   
   a  A particle.

Explanation
===========

Particles have a non-zero mass and lack spatial extension; they take up no
space.

Values need to be supplied on initialization, but can be changed later.

Parameters
==========

name : str
    Name of particle
point : Point
    A physics/mechanics Point which represents the position, velocity, and
    acceleration of this Particle
mass : Sympifyable
    A SymPy expression representing the Particle's mass
potential_energy : Sympifyable
    The potential energy of the Particle.

Examples
========

>>> from sympy.physics.mechanics import Particle, Point
>>> from sympy import Symbol
>>> po = Point('po')
>>> m = Symbol('m')
>>> pa = Particle('pa', po, m)
>>> # Or you could change these later
>>> pa.mass = m
>>> pa.point = po

c                 &   > [         TU ]  XU5        g )N)super__init__)selfnamepointmass	__class__s       X/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/mechanics/particle.pyr   Particle.__init__1   s    d+    c                 R    U R                   U R                  R                  U5      -  $ )a  Linear momentum of the particle.

Explanation
===========

The linear momentum L, of a particle P, with respect to frame N is
given by:

L = m * v

where m is the mass of the particle, and v is the velocity of the
particle in the frame N.

Parameters
==========

frame : ReferenceFrame
    The frame in which linear momentum is desired.

Examples
========

>>> from sympy.physics.mechanics import Particle, Point, ReferenceFrame
>>> from sympy.physics.mechanics import dynamicsymbols
>>> from sympy.physics.vector import init_vprinting
>>> init_vprinting(pretty_print=False)
>>> m, v = dynamicsymbols('m v')
>>> N = ReferenceFrame('N')
>>> P = Point('P')
>>> A = Particle('A', P, m)
>>> P.set_vel(N, v * N.x)
>>> A.linear_momentum(N)
m*v*N.x

)r   r   velr   frames     r   linear_momentumParticle.linear_momentum4   s!    J yy4::>>%000r   c                     [        U R                  R                  U5      U R                  U R                  R	                  U5      -  5      $ )a  Angular momentum of the particle about the point.

Explanation
===========

The angular momentum H, about some point O of a particle, P, is given
by:

``H = cross(r, m * v)``

where r is the position vector from point O to the particle P, m is
the mass of the particle, and v is the velocity of the particle in
the inertial frame, N.

Parameters
==========

point : Point
    The point about which angular momentum of the particle is desired.

frame : ReferenceFrame
    The frame in which angular momentum is desired.

Examples
========

>>> from sympy.physics.mechanics import Particle, Point, ReferenceFrame
>>> from sympy.physics.mechanics import dynamicsymbols
>>> from sympy.physics.vector import init_vprinting
>>> init_vprinting(pretty_print=False)
>>> m, v, r = dynamicsymbols('m v r')
>>> N = ReferenceFrame('N')
>>> O = Point('O')
>>> A = O.locatenew('A', r * N.x)
>>> P = Particle('P', A, m)
>>> P.point.set_vel(N, v * N.y)
>>> P.angular_momentum(O, N)
m*r*v*N.z

)r   r   pos_fromr   r   r   r   r   s      r   angular_momentumParticle.angular_momentum[   s<    T TZZ((/YY!668 	8r   c                     [         R                  U R                  -  [        U R                  R                  U5      U R                  R                  U5      5      -  $ )a  Kinetic energy of the particle.

Explanation
===========

The kinetic energy, T, of a particle, P, is given by:

``T = 1/2 (dot(m * v, v))``

where m is the mass of particle P, and v is the velocity of the
particle in the supplied ReferenceFrame.

Parameters
==========

frame : ReferenceFrame
    The Particle's velocity is typically defined with respect to
    an inertial frame but any relevant frame in which the velocity is
    known can be supplied.

Examples
========

>>> from sympy.physics.mechanics import Particle, Point, ReferenceFrame
>>> from sympy import symbols
>>> m, v, r = symbols('m v r')
>>> N = ReferenceFrame('N')
>>> O = Point('O')
>>> P = Particle('P', O, m)
>>> P.point.set_vel(N, v * N.y)
>>> P.kinetic_energy(N)
m*v**2/2

)r   Halfr   r   r   r   r   s     r   kinetic_energyParticle.kinetic_energy   sE    H vv		!C

u(=(,

u(=%? ? 	?r   c                 &    [        SSSS9  Xl        g )Nz
The sympy.physics.mechanics.Particle.set_potential_energy()
method is deprecated. Instead use

    P.potential_energy = scalar
            z1.5zdeprecated-set-potential-energy)deprecated_since_versionactive_deprecations_target)r   potential_energy)r   scalars     r   set_potential_energyParticle.set_potential_energy   s    ! "'#D		
 !'r   c                 b    [        U R                  U R                  R                  U5      U5      $ )a  Returns an inertia dyadic of the particle with respect to another
point and frame.

Parameters
==========

point : sympy.physics.vector.Point
    The point to express the inertia dyadic about.
frame : sympy.physics.vector.ReferenceFrame
    The reference frame used to construct the dyadic.

Returns
=======

inertia : sympy.physics.vector.Dyadic
    The inertia dyadic of the particle expressed about the provided
    point and frame.

)r   r   r   r   r   s      r   parallel_axisParticle.parallel_axis   s+    ( %TYY

0C0CE0J%*, 	,r   )r)   )NN)__name__
__module____qualname____firstlineno____doc__r   
masscenterr   r   r   r    r$   r+   r.   __static_attributes____classcell__)r   s   @r   r	   r	   
   s<    #H E,%1N+8Z%?N', ,r   N)sympyr   sympy.physics.vectorr   r   !sympy.physics.mechanics.body_baser   sympy.physics.mechanics.inertiar   sympy.utilities.exceptionsr   __all__r	    r   r   <module>r?      s)     + 6 A @,G,x G,r   