首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么没有类似于asin2()的asin2()和acos2()函数?

为什么没有类似于asin2()的asin2()和acos2()函数?
EN

Stack Overflow用户
提问于 2015-03-17 08:22:07
回答 4查看 28.2K关注 0票数 16

据我理解,atan2()函数存在于编程语言中,因为atan()本身并不总是确定正确的θ,因为输出被限制在-pi/2到pi/2。

如果是这样的话,那么同样的问题同样适用于asin()acos(),它们都有受限的范围,那么为什么没有asin2()acos2()函数呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-17 09:44:52

首先,注意两个arctan函数的语法是atan(y/x)atan2(y, x)。这种区别是很重要的,因为通过不执行部门,您提供了额外的信息,最重要的是xy的各个标记。如果您知道单个xy坐标,就可以找到atan函数的特定解(即考虑到(x,y)所在象限的解)。

如果从tan(θ) = y/xsin(θ) = y/sqrt(x²+y²),则反运算asinysqrt(x²+y²),并结合它们来获得关于角度的一些信息。在这里,不管我们是自己执行除法,还是让假设的asin2函数来处理它,都无关紧要。分母总是正数,所以分式参数包含的信息和分母和分母包含的信息一样多。(至少在IEEE环境中,除以零导致正确签名的无穷大。)

如果你知道y坐标和低符号sqrt(x²+y²),那么你知道角度的正弦,但是你不能知道角度本身,因为你不能区分负和正的x值。同样,如果你知道x坐标和低值,你知道角度的余弦,但你不能知道y值的符号。

因此,asin2acos2在数学上是不可行的,至少在一个明显的方面是不可行的。如果你有某种符号编码到低水平,事情可能是不同的,但我想不出任何情况,这样的迹象会自然出现。

票数 19
EN

Stack Overflow用户

发布于 2020-04-13 08:19:52

因为asin(y,x) acos(y,x)每个参数都与atan(y,x)相同,并且每个参数都给出了相同的答案。每个函数都是同样有效的,但我们只需要一个这样的函数。

不明确的原因来自于( atan2)的名字。它是一个函数,given x and y, computes the angle (由从原点到这一点的一条线)具有(正)x轴。可以说,像angle_from(x,y)这样的名字更合适。

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 02:24:38

有时像"acos2“这样的函数是需要的,例如在3D空间中执行向量旋转时。在这种情况下,我对我自己的acos2函数进行了硬编码,它只执行以下检查:

代码语言:javascript
运行
复制
x_perp=sqrt(x*x+y*y)
r=sqrt(x*x+y*y+z*z)

if(x_perp.gt.0.0d0) then
phi=acos(x/x_perp)
else
phi=0.0d0
endif
if(y.lt.0.0d0) phi=2.0d0*pi-phi
theta=acos(z/r)

其中θ和phi是通常的球面坐标,x,y,z是笛卡尔坐标。当y为负值时,需要在phi中发生相移。θ不存在这样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29094261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档