原文网址:https://msdn.microsoft.com/zh-cn/library/system.math.atan2.aspx

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

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

语法

 
 
public static double Atan2(
double y,
double x
)

参数

y
类型:System.Double
点的 y 坐标。
x
类型:System.Double
点的 x 坐标。

返回值

类型:System.Double

角度 θ,以弧度为单位,满足 -π≤θ≤π,且 tan(θ) = y / x,其中 (x, y) 是笛卡尔平面中的点。 请看下面:

  • 如果 (x, y) 在第 1 象限,则 0 < θ < π/2。

  • 如果 (x, y) 在第 2 象限,则 π/2 < θ≤π。

  • 如果 (x, y) 在第 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。

如果 x 或 y 为 NaN,或者 x 和 y 为 PositiveInfinity 或 NegativeInfinity,则该方法将返回 NaN。

备注

 

返回值为笛卡尔平面中的角度,该角度由 x 轴和起点为原点 (0,0)、终点为 (x,y) 的向量构成。

示例

 

下面的示例演示如何计算角和向量的反正切。 结果值会显示在控制台中。

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

【转】Math.Atan2 方法的更多相关文章

  1. Math.Atan2 方法

    返回正切值为两个指定数字的商的角度. public static double Atan2 ( double y, double x ) 参数 y 点的 y 坐标. x 点的 x 坐标. 返回值 角  ...

  2. JavaScript Math 对象方法

    Math 对象方法 方法 描述 abs(x) 返回数的绝对值. acos(x) 返回数的反余弦值. asin(x) 返回数的反正弦值. atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值 ...

  3. 数学API Math.atan() 和Math.atan2() 三角函数复习

    今天在学习贝塞尔曲线看到需要结合三角函数 以及两个不认识的Api :API Math.atan() 和Math.atan2() 先看下三角函数 正切函数图:(180为一个周期 即45=45+180) ...

  4. JS:Math 对象方法

    Math 对象方法方法     描述Math.ceil(x)     对数进行上舍入.(向上取整:大于等于x的最小整数)Math.floor(x)     对数进行下舍入.(小于等于x的最大整数)Ma ...

  5. 转:Math: Math.atan() 与 Math.atan2() 计算两点间连线的夹角

    我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.as中有两个函数可以计算反正切,我们来看一下. 1.Math.atan() Math ...

  6. js math atan2

    在双十二活动中,视觉要求实现一个鼠标跟随运动的的效果,就像“觉”的那个效果类似 其实原理很简单,看鼠标从哪个方向进的及从哪个方向出的,然后区块里绝对定位的浮层就可以根据鼠标方向 运动; 如:在鼠标进入 ...

  7. JS如何使用Math.atan2获取两点之间角度的实践案例

    本文主要介绍使用如何实现手动拖拽旋转元素的效果. 1.简述 最近在研究如何实现手动控制元素的旋转效果,在网上找了很多,都没有找出类似的实现,因此经过一些调研和计算,最终完美实现效果,在这里记录下来. ...

  8. JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)

    浏览器端JavaScript的组成 ECMAScript:语法规范 DOM:Document Object Model  文档对象模型,操作页面元素 BOM:Browser Object Model  ...

  9. 20150914 异常语句 math的方法 去空格 索引

    异常语句 int cuo = 0; Console.WriteLine("请输入:"); string s = Console.ReadLine(); try { DateTime ...

随机推荐

  1. LA 4794 - Sharing Chocolate dp

    题意 有一块\(x*y\)的巧克力,问能否恰好分成n块,每块个数如下 输入格式 n x y a1 a2 a3 ... an 首先\(x \times y 必然要等于 \sum\limits_{i=1} ...

  2. Servlet的init()方法如何才会在服务器启动时执行

    如果要想让 servlet 的 init () 方法在服务器启动 时就被执行,则需要在 web.xml 中相应的 servlet 下配置 <servlet > <servlet -n ...

  3. 如何使用深度学习破解验证码 keras 连续验证码

    在实现网络爬虫的过程中,验证码的出现总是会阻碍爬虫的工作.本期介绍一种利用深度神经网络来实现的端到端的验证码识别方法.通过本方法,可以在不切割图片.不做模板匹配的情况下实现精度超过90%的识别结果. ...

  4. iOS中XMPP简单聊天实现 好友和聊天

    版权声明本文由陈怀哲首发自简书:http://www.jianshu.com/users/9f2e536b78fd/latest_articles;微信公众号:陈怀哲(chenhuaizhe2016) ...

  5. c++如何使用SOCKET 发送HTTP1.1 GET POST请求包

    如何使用SOCKET 发送HTTP1.1 GET POST请求包 分类: 无线通信 C/C++2009-10-29 10:58 14259人阅读 评论(15) 收藏 举报 socket服务器actio ...

  6. VMware上实现LVS负载均衡(NAT)

    本文LVS的实现方式採用NAT模式.关于NAT的拓扑图请參照我的上一篇文章.本文纯粹实验.NAT在生产环境中不推荐使用.原因是Load Balancereasy成为瓶颈! 1.VMware9上安装Ce ...

  7. WSAEventSelect

    WSAEventSelect 是 WinSock 提供的一种异步事件通知I/O模型,与 WSAAsyncSelect模型有些类似.       该模型同样是接收 FD_XXX 之类的网络事件,但是是通 ...

  8. mysql数据库的高可用方法总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一 些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无 ...

  9. rsync在windows和linux同步数据的配置过程

    centos7.0安装rsync3.0.9-17.el7 yum install rsync ===================================================== ...

  10. mysql 分区表详解

    项目中要一张库表实现 list分区.并且支持多种数据库. oracle 很顺利,只是mysql 听说5.1版本就已经支持了, 可是试了很多个版本,都不行,后来查到原因是要5.5 以上版本 分区才支持 ...