查找在VB中和 atan2(yi,xi)类似的函数.功能:求y/x(弧度表示)的反正切值

gq 2003-09-15 03:59:13
查找在VB中和 atan2(y,x)类似的函数.功能:求y/x(弧度表示)的反正切值
VB中有的是Atn(X),求X的反正切值,不清楚是否有atan2(y,x)函数.
如果没有,atan2(y,x)是否可以通过什么方式来得到.
...全文
930 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
online 2003-09-22
  • 打赏
  • 举报
回复
Option Explicit

Public Enum EErrorMath
eeBaseMath = 13520 ' Math
End Enum

' Derived math functions from language reference Appendix D

' Secant
Function Sec(x As Double) As Double
Sec = 1 / Cos(x)
End Function

' Cosecant
Function CoSec(x As Double) As Double
CoSec = 1 / Sin(x)
End Function

' Cotangent
Function CoTan(x As Double) As Double
CoTan = 1 / Tan(x)
End Function

' Inverse Sine
Function ArcSin(x As Double) As Double
ArcSin = Atn(x / Sqr(-x * x + 1))
End Function

' Inverse Cosine
Function ArcCos(x As Double) As Double
ArcCos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End Function

' Inverse Secant
Function ArcSec(x As Double) As Double
ArcSec = Atn(x / Sqr(x * x - 1)) + Sgn(x - 1) * (2 * Atn(1))
End Function

' Inverse Cosecant
Function ArcCoSec(x As Double) As Double
ArcCoSec = Atn(x / Sqr(x * x - 1)) + (Sgn(x) - 1) * (2 * Atn(1))
End Function

' Inverse Cotangent
Function ArcCoTan(x As Double) As Double
ArcCoTan = Atn(x) + 2 * Atn(1)
End Function

' Hyperbolic Sine
Function HSin(x As Double) As Double
HSin = (Exp(x) - Exp(-x)) / 2
End Function

' Hyperbolic Cosine
Function HCos(x As Double) As Double
HCos = (Exp(x) + Exp(-x)) / 2
End Function

' Hyperbolic Tangent
Function HTan(x As Double) As Double
HTan = (Exp(x) - Exp(-x)) / (Exp(x) + Exp(-x))
End Function

' Hyperbolic Secant
Function HSec(x As Double) As Double
HSec = 2 / (Exp(x) + Exp(-x))
End Function

' Hyperbolic Cosecant
Function HCoSec(x As Double) As Double
HCoSec = 2 / (Exp(x) - Exp(-x))
End Function

' Hyperbolic Cotangent
Function HCotan(x As Double) As Double
HCotan = (Exp(x) + Exp(-x)) / (Exp(x) - Exp(-x))
End Function

' Inverse Hyperbolic Sine
Function HArcSin(x As Double) As Double
HArcSin = Log(x + Sqr(x * x + 1))
End Function

' Inverse Hyperbolic Cosine
Function HArcCos(x As Double) As Double
HArcCos = Log(x + Sqr(x * x - 1))
End Function

' Inverse Hyperbolic Tangent
Function HArcTan(x As Double) As Double
HArcTan = Log((1 + x) / (1 - x)) / 2
End Function

' Inverse Hyperbolic Secant
Function HArcSec(x As Double) As Double
HArcSec = Log((Sqr(-x * x + 1) + 1) / x)
End Function

' Inverse Hyperbolic Cosecant
Function HArcCoSec(x As Double) As Double
HArcCoSec = Log((Sgn(x) * Sqr(x * x + 1) + 1) / x)
End Function

' Inverse Hyperbolic Cotangent
Function HArcCoTan(x As Double) As Double
HArcCoTan = Log((x + 1) / (x - 1)) / 2
End Function

' Logarithm to base N
Function LogN(x As Double, n As Double) As Double
LogN = Log(x) / Log(n)
End Function
lxcc 2003-09-22
  • 打赏
  • 举报
回复
借用ATN完全可以实现,自己编吧!

ATAN2 概念
返回给定的 X 及 Y 坐标值的反正切值。反正切的角度值等于 X 轴与通过原点和给定坐标点(x_num, y_num)的直线之间的夹角。结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi)。

语法

ATAN2(x_num,y_num)

X_num 点的 X 坐标。

Y_num 点的 Y 坐标。

说明

结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从X 轴顺时针旋转的角度。


ATAN2(a, b) 等于 ATAN(b/a),除非 ATAN2 值为零。


如果 x_num 和 y_num 都为零,ATAN2 返回错误值 #DIV/0!。


如果要用度表示反正切值,需将结果再乘以 180/PI( )。

示例

ATAN2(1, 1) 等于 0.785398 (pi/4弧度)

ATAN2(-1, -1) 等于 -2.35619 (-3*pi/4 弧度)

ATAN2(-1, -1)*180/PI() 等于 -135 (度)
James0001 2003-09-22
  • 打赏
  • 举报
回复
'大概是这样
Function Atan2(numberX As Double, numberY As Double) As Double
Const PI = 3.14159265358979
If numberY < 0 Then
Atan2 = Atn(numberX / numberY) + PI
Else
Atan2 = Atn(numberX / numberY)
End If
End Function
gq 2003-09-22
  • 打赏
  • 举报
回复
VB人气好底哦。
aalei 2003-09-15
  • 打赏
  • 举报
回复
帮你顶

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧