Math.Atan2(Double, Double) 方法

定义

返回正切值为两个指定数字的商的角度。

C#
public static double Atan2(double y, double x);

参数

y
Double

点的 y 坐标。

x
Double

点的 x 坐标。

返回

角度 θ,以弧度为单位,使 tan (θ) = y / x,其中 (xy) 是笛卡尔平面中的一个点。 请看下面:

  • 由于 (x, y) 在第 1 象限,因此 0 < θ < π/2。

  • 对于 (xy) 象限 2,π/2 < θ ≤ π。

  • 对于 (xy) 象限 3,-π ≤ θ < -π/2。

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

如果点在象限的边界上,则返回值如下:

  • 如果 y 为 0 并且 x 不为负值,则 θ = 0。

  • 如果 y 为 0 并且 x 为负值,则 θ = π。

  • 如果 y 为正值并且 x 为 0,则 θ = π/2。

  • 如果 y 为负值并且 x 为 0,则 θ = -π/2。

  • 如果 y 为 0 并且 x 为 0,则 θ = 0。

如果 xyNaN,或者如果 xyPositiveInfinityNegativeInfinity,则该方法返回 NaN

示例

以下示例演示如何计算角度和向量的反正切值。 生成的值显示在控制台中。

C#
// 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.
*/

注解

返回值是由 x 轴构成的笛卡尔平面中的角度,以及从原点开始的向量, (0,0) ,并在点处终止, (x,y) 。

此方法调用基础 C 运行时,不同的操作系统或体系结构之间的确切结果或有效输入范围可能会有所不同。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0