Funções trigonométricas em C++

Jinku Hu 12 outubro 2023
  1. Use a função std::sin para calcular o seno em C++
  2. Use a função std::cos para calcular o cosseno em C++
  3. Use a função std::tan para calcular a tangente para um determinado valor de radianos
Funções trigonométricas em C++

Este artigo irá explicar como usar funções trigonométricas de STL em C++.

Use a função std::sin para calcular o seno em C++

As funções trigonométricas em C++ são fornecidas sob o cabeçalho <cmath>. Geralmente, funções matemáticas comuns foram herdadas da linguagem C, mas a maioria delas são sobrecarregadas em C++ para serem interoperáveis ​​com diferentes tipos de argumento.

Neste caso, representamos a função std::sin para calcular o seno para o argumento fornecido. O argumento deve ser um valor em radianos e, se a função for bem-sucedida, o valor de retorno ficará na faixa de [-1 ; +1]. Observe que std::sin retorna argumentos não modificados se seu valor for +-0.

O código de exemplo a seguir calcula valores de seno para ângulos comuns.

#include <cmath>
#include <iostream>

using std::cout;
using std::endl;

const double pi = std::acos(-1);

int main() {
  cout << "sin(pi) = " << std::sin(pi) << '\n'
       << "sin(pi/6) = " << std::sin(pi / 6) << '\n'
       << "sin(pi/4) = " << std::sin(pi / 4) << '\n'
       << "sin(pi/3) = " << std::sin(pi / 3) << '\n'
       << "sin(pi/2) = " << std::sin(pi / 2) << '\n'
       << "sin(+0) = " << std::sin(0.0) << '\n'
       << "sin(-0) = " << std::sin(-0.0) << '\n';

  return EXIT_SUCCESS;
}
sin(pi) = 1.22465e-16
sin(pi/6) = 0.5
sin(pi/4) = 0.707107
sin(pi/3) = 0.866025
sin(pi/2) = 1
sin(+0) = 0
sin(-0) = -0

Use a função std::cos para calcular o cosseno em C++

std::cos é outra função trigonométrica central, e tem características semelhantes às da std::sin exceto aquela dos valores retornados para os mesmos argumentos. Observe que todas as funções trigonométricas podem aceitar o valor de ângulo como um número inteiro de ponto flutuante, mas o resultado correspondente é sempre retornado como um de ponto flutuante.

#include <iostream>
#include <cmath>

using std::cout; using std::endl;

const double pi = std::acos(-1);

int main() {

    cout << "cos(pi) = " << std::cos(pi) << '\n'
         << "cos(pi/6) = " << std::cos(pi/6) << '\n'
         << "cos(pi/4) = " << std::cos(pi/4) << '\n'
         << "cos(pi/3) = " << std::cos(pi/3) << '\n'
         << "cos(pi/2) = " << std::cos(pi/2) << '\n'
         << "cos(+0) = " << std::cos(0.0) << '\n'
         << "cos(-0) = " << std::cos(-0.0) << '\n';

    return EXIT_SUCCESS;
}
cos(pi) = -1
cos(pi/6) = 0.866025
cos(pi/4) = 0.707107
cos(pi/3) = 0.5
cos(pi/2) = 6.12323e-17
cos(+0) = 1
cos(-0) = 1

Use a função std::tan para calcular a tangente para um determinado valor de radianos

Por outro lado, temos a função std::tan para calcular os valores tangentes para determinados argumentos. Como essas funções retornam valores de ponto flutuante, há uma chance de que algumas exceções de erro matemático possam ser levantadas, que são descritas em detalhes aqui. Além disso, temos versões de arco para cada função trigonométrica e elas têm o prefixo a adicionado aos nomes das funções originais.

#include <iostream>
#include <cmath>

using std::cout; using std::endl;

const double pi = std::acos(-1);

int main() {

    cout << "tan(pi) = " << std::tan(pi) << '\n'
         << "tan(pi/6) = " << std::tan(pi/6) << '\n'
         << "tan(pi/4) = " << std::tan(pi/4) << '\n'
         << "tan(pi/3) = " << std::tan(pi/3) << '\n'
         << "tan(pi/2) = " << std::tan(pi/2) << '\n'
         << "tan(+0) = " << std::tan(0.0) << '\n'
         << "tan(-0) = " << std::tan(-0.0) << '\n';

    return EXIT_SUCCESS;
}
tan(pi) = -1.22465e-16
tan(pi/6) = 0.57735
tan(pi/4) = 1
tan(pi/3) = 1.73205
tan(pi/2) = 1.63312e+16
tan(+0) = 0
tan(-0) = -0
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Math