Frequency shift from speed in arbitrary motion ============================================== The *Doppler effect* or *Doppler shift* is the apparent change in frequency of a wave in relation to an observer moving relative to the wave source. Also see :doc:`laws.waves.frequency_shift_from_speed_in_collinear_motion`. **Conditions:** #. The source and observer speeds are less or equal to the wave speed. Otherwise emitted waves are left behind the source or never reach the observer. #. The speeds are much less than the speed of light, i.e. this law is non-relativistic. .. TODO find link to law with both angles .. py:currentmodule:: symplyphysics.laws.waves.frequency_shift_from_speed_in_arbitrary_motion .. py:data:: observed_frequency Observed :attr:`~symplyphysics.symbols.classical_mechanics.temporal_frequency` of the wave. Symbol: :code:`f_o` Latex: :math:`f_\text{o}` Dimension: :code:`frequency` .. py:data:: source_frequency Wave :attr:`~symplyphysics.symbols.classical_mechanics.temporal_frequency` of the source. Symbol: :code:`f_s` Latex: :math:`f_\text{s}` Dimension: :code:`frequency` .. py:data:: wave_speed :attr:`~symplyphysics.symbols.classical_mechanics.phase_speed` of the wave. Symbol: :code:`v` Latex: :math:`v` Dimension: :code:`velocity` .. py:data:: source_speed Magnitude of the velocity vector of the source. See :attr:`~symplyphysics.symbols.classical_mechanics.speed`. Symbol: :code:`v_s` Latex: :math:`v_\text{s}` Dimension: :code:`velocity` .. py:data:: observer_speed Magnitude of the velocity vector of the observer. See :attr:`~symplyphysics.symbols.classical_mechanics.speed`. Symbol: :code:`v_o` Latex: :math:`v_\text{o}` Dimension: :code:`velocity` .. py:data:: source_angle :attr:`~symplyphysics.symbols.basic.angle` between the wave velocity and the source velocity. Symbol: :code:`theta_s` Latex: :math:`\theta_\text{s}` Dimension: :code:`angle` .. py:data:: observer_angle :attr:`~symplyphysics.symbols.basic.angle` between the wave velocity and the observer velocity. Symbol: :code:`theta_o` Latex: :math:`\theta_\text{o}` Dimension: :code:`angle` .. py:data:: law :code:`f_o = f_s * (v - v_o * cos(theta_o)) / (v - v_s * cos(theta_s))` Latex: .. math:: f_\text{o} = \frac{f_\text{s} \left(v - v_\text{o} \cos{\left(\theta_\text{o} \right)}\right)}{v - v_\text{s} \cos{\left(\theta_\text{s} \right)}}