Namespaces
Variants

std::atan2(std::valarray)

Von de.cppreference.net
 
 
 
 
Definiert in Header<valarray>
template< class T > 
std::valarray<T> atan2( const std::valarray<T>& y, const std::valarray<T>& x );
(1)
template< class T > 
std::valarray<T> atan2( const std::valarray<T>& y,
                        const typename std::valarray<T>::value_type& vx );
(2)
template< class T > 
std::valarray<T> atan2( const typename std::valarray<T>::value_type& vy,
                        const std::valarray<T>& x );
(3)

Berechnet den Arkustangens vony / x unter Verwendung der Vorzeichen der Argumente, um den Quadranten korrekt zu bestimmen.

1) Berechnet den Arkustangens jedes Paares korrespondierender Werte ausy undx.

Das Verhalten ist undefiniert, wennx.size() != y.size().

2) Berechnet den Arkustangens vonvx und jedem Wert im numerischen Arrayy.
3) Berechnet den Arkustangens vonvy und jedem Wert im numerischen Arrayx.

Parameter

x, y - numerische Arrays zur Berechnung des Arkustangens
vy, vx - Werte zur Berechnung des Arkustangens

Rückgabewert

Ein numerisches Array, das die Ergebnisse der Berechnung des Arkustangens enthält.

Anmerkungen

Die unqualifizierte Funktion (atan2) wird zur Durchführung der Berechnung verwendet. Wenn eine solche Funktion nicht verfügbar ist, wird std::atan2 aufgrund von argumentabhängiger Suche verwendet.

Die Funktion kann mit einem von std::valarray unterschiedlichen Rückgabetyp implementiert werden. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften:

  • Alle constElementfunktionen von std::valarray werden bereitgestellt.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array und std::indirect_array können aus dem Ersatztyp konstruiert werden.
  • Für jede Funktion, die ein const std::valarray<T>& außer begin() und end()(seit C++11) nimmt, sollen identische Funktionen, die die Ersatztypen nehmen, hinzugefügt werden;
  • Für jede Funktion, die zwei const std::valarray<T>& Argumente nimmt, sollen identische Funktionen, die jede Kombination von const std::valarray<T>& und Ersatztypen nehmen, hinzugefügt werden.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Template-Verschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.

Beispiel

#include <algorithm>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <valarray>
void show(char const* title, const std::valarray<double>& va)
{
    std::cout << title << ' ';
    std::for_each(std::begin(va), std::end(va), [](const double x)
    { 
        std::cout << ' ' << std::right << std::setw(4) << x << "°";
    });
    std::cout << '\n';
}
const double pi = std::acos(-1.0); // C++20: std::numbers::pi
int main()
{
    auto degrees_to_radians = [](double const& x) { return (pi * x / 180); };
    auto radians_to_degrees = [](double const& x) { return (180 * x / pi); };
    const std::valarray<double> degrees{-90, -60, -45, -30, 0, 30, 45, 60, 90};
    const std::valarray<double> radians = degrees.apply(degrees_to_radians);
    const auto sin = std::sin(radians);
    const auto cos = std::cos(radians);
    show("(1)", std::atan2(sin, cos).apply(radians_to_degrees));
    show("(2)", std::atan2(sin/cos, 1.0).apply(radians_to_degrees));
    show("(3)", std::atan2(1.0, cos/sin).apply(radians_to_degrees));
}

Ausgabe:

(1)   -90°  -60°  -45°  -30°    0°   30°   45°   60°   90°
(2)   -90°  -60°  -45°  -30°    0°   30°   45°   60°   90°
(3)    90°  120°  135°  150°    0°   30°   45°   60°   90°

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3074 C++98 T wird sowohl vom Skalar als auch vom valarray für (2,3) abgeleitet, was gemischte Typaufrufe verbietet leite T nur vom valarray ab

Siehe auch

wendet die Funktion std::asin auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::acos auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::atan auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
Arcustangens, verwendet Vorzeichen zur Quadrantenbestimmung
(Funktion)
gibt den Phasenwinkel zurück
(Funktions-Template)