Math.Atan2(Double, Double) 方法

定义

返回正切值为两个指定数字的商的角度。Returns the angle whose tangent is the quotient of two specified numbers.

public:
 static double Atan2(double y, double x);
public static double Atan2 (double y, double x);
static member Atan2 : double * double -> double
Public Shared Function Atan2 (y As Double, x As Double) As Double

参数

y
Double

点的 y 坐标。The y coordinate of a point.

x
Double

点的 x 坐标。The x coordinate of a point.

返回

Double

角度 θ,以弧度为单位,满足 -π ≤ θ ≤ π,且 tan(θ) = y / x,其中 (x, y) 是笛卡儿平面中的点。An angle, θ, measured in radians, such that -π ≤ θ ≤ π, and tan(θ) = y / x, where (x, y) is a point in the Cartesian plane. 请看下面:Observe the following: - 由于 (x, y) 在第 1 象限,因此 0 < θ < π/2。- For (x, y) in quadrant 1, 0 < θ < π/2.

- 由于 (x, y) 在第 2 象限,因此 π/2 < θ ≤ π。- For (x, y) in quadrant 2, π/2 < θ ≤ π.

- 由于 (x, y) 在第 3 象限,因此 -π < θ < -π/2。- For (x, y) in quadrant 3, -π < θ < -π/2.

- 由于 (x, y) 在第 4 象限,因此 -π/2 < θ < 0。- For (x, y) in quadrant 4, -π/2 < θ < 0.

如果点在象限的边界上,则返回值如下:For points on the boundaries of the quadrants, the return value is the following: - 如果 y 为 0 并且 x 不为负值,则 θ = 0。- If y is 0 and x is not negative, θ = 0.

- 如果 y 为 0 并且 x 为负值,则 θ = π。- If y is 0 and x is negative, θ = π.

- 如果 y 为正值并且 x 为 0,则 θ = π/2。- If y is positive and x is 0, θ = π/2.

- 如果 y 为负值并且 x 为 0,则 θ = -π/2。- If y is negative and x is 0, θ = -π/2.

- 如果 y 为 0 并且 x 为 0,则 θ = 0。- If y is 0 and x is 0, θ = 0.

如果 xyNaN,或者如果 xyPositiveInfinityNegativeInfinity,则该方法返回 NaNIf x or y is NaN, or if x and y are either PositiveInfinity or NegativeInfinity, the method returns NaN.

示例

下面的示例演示如何计算角度和向量的反正切值。The following example demonstrates how to calculate the arctangent of an angle and a vector. 生成的值将显示在控制台中。The resulting value is displayed in the console.

// This example demonstrates Math.Atan()
//                           Math.Atan2()
//                           Math.Tan()
using namespace System;
int main()
{
   double x = 1.0;
   double y = 2.0;
   double angle;
   double radians;
   double result;
   
   // Calculate the tangent of 30 degrees.
   angle = 30;
   radians = angle * (Math::PI / 180);
   result = Math::Tan( radians );
   Console::WriteLine( "The tangent of 30 degrees is {0}.", result );
   
   // Calculate the arctangent of the previous tangent.
   radians = Math::Atan( result );
   angle = radians * (180 / Math::PI);
   Console::WriteLine( "The previous tangent is equivalent to {0} degrees.", angle );
   
   // Calculate the arctangent of an angle.
   String^ line1 = "{0}The arctangent of the angle formed by the x-axis and ";
   String^ line2 = "a vector to point ({0},{1}) is {2}, ";
   String^ line3 = "which is equivalent to {0} degrees.";
   radians = Math::Atan2( y, x );
   angle = radians * (180 / Math::PI);
   Console::WriteLine( line1, Environment::NewLine );
   Console::WriteLine( line2, x, y, radians );
   Console::WriteLine( line3, angle );
}

/*
This example produces the following results:

The tangent of 30 degrees is 0.577350269189626.
The previous tangent is equivalent to 30 degrees.

The arctangent of the angle formed by the x-axis and
a vector to point (1,2) is 1.10714871779409,
which is equivalent to 63.434948822922 degrees.
*/
// This example demonstrates Math.Atan()
//                           Math.Atan2()
//                           Math.Tan()
using System;

class Sample
{
    public static void Main()
    {
    double x = 1.0;
    double y = 2.0;
    double angle;
    double radians;
    double result;

// Calculate the tangent of 30 degrees.
    angle = 30;
    radians = angle * (Math.PI/180);
    result = Math.Tan(radians);
    Console.WriteLine("The tangent of 30 degrees is {0}.", result);

// Calculate the arctangent of the previous tangent.
    radians = Math.Atan(result);
    angle = radians * (180/Math.PI);
    Console.WriteLine("The previous tangent is equivalent to {0} degrees.", angle);

// Calculate the arctangent of an angle.
    String line1 = "{0}The arctangent of the angle formed by the x-axis and ";
    String line2 = "a vector to point ({0},{1}) is {2}, ";
    String line3 = "which is equivalent to {0} degrees.";

    radians = Math.Atan2(y, x);
    angle = radians * (180/Math.PI);

    Console.WriteLine(line1, Environment.NewLine);
    Console.WriteLine(line2, x, y, radians);
    Console.WriteLine(line3, angle);
    }
}
/*
This example produces the following results:

The tangent of 30 degrees is 0.577350269189626.
The previous tangent is equivalent to 30 degrees.

The arctangent of the angle formed by the x-axis and
a vector to point (1,2) is 1.10714871779409,
which is equivalent to 63.434948822922 degrees.
*/
' This example demonstrates Math.Atan()
'                           Math.Atan2()
'                           Math.Tan()
Class Sample
   Public Shared Sub Main()
      Dim x As Double = 1.0
      Dim y As Double = 2.0
      Dim angle As Double
      Dim radians As Double
      Dim result As Double
      
      ' Calculate the tangent of 30 degrees.
      angle = 30
      radians = angle *(Math.PI / 180)
      result = Math.Tan(radians)
      Console.WriteLine("The tangent of 30 degrees is {0}.", result)
      
      ' Calculate the arctangent of the previous tangent.
      radians = Math.Atan(result)
      angle = radians *(180 / Math.PI)
      Console.WriteLine("The previous tangent is equivalent to {0} degrees.", angle)
      
      ' Calculate the arctangent of an angle.
      Dim line1 As [String] = "{0}The arctangent of the angle formed by the x-axis and "
      Dim line2 As [String] = "a vector to point ({0},{1}) is {2}, "
      Dim line3 As [String] = "which is equivalent to {0} degrees."
      
      radians = Math.Atan2(y, x)
      angle = radians *(180 / Math.PI)
      
      Console.WriteLine(line1, Environment.NewLine)
      Console.WriteLine(line2, x, y, radians)
      Console.WriteLine(line3, angle)
   End Sub
End Class
'
'This example produces the following results:
'
'The tangent of 30 degrees is 0.577350269189626.
'The previous tangent is equivalent to 30 degrees.
'
'The arctangent of the angle formed by the x-axis and
'a vector to point (1,2) is 1.10714871779409,
'which is equivalent to 63.434948822922 degrees.
'

注解

返回值是由 x 轴构成的笛卡尔平面中的角度,从原点开始的向量 (0,0) ,在点 (x,y) 终止。The return value is the angle in the Cartesian plane formed by the x-axis, and a vector starting from the origin, (0,0), and terminating at the point, (x,y).

此方法调入基础 C 运行时,并且不同的操作系统或体系结构的确切结果或有效输入范围可能不同。This method calls into the underlying C runtime, and the exact result or valid input range may differ between different operating systems or architectures.

适用于