asinh
2026/4/15大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — asinh
asinh
定义
反双曲正弦函数(inverse hyperbolic sine)。给定一个值 x,返回一个角度,使得 sinh(角度) = x。
用数学公式表示就是:asinh(x) = ln(x + sqrt(x^2 + 1))。
和 acosh 一样,双曲函数是三角函数的"远房亲戚"。普通的 sin 描述的是圆上的运动(比如摩天轮),而 sinh 描述的是悬链线相关的运动——就是晾衣绳自然下垂时形成的那个弧线。asinh 就是"已知这个弧线上某个点的位置,反推出它对应的双曲角"。
asinh 有一个很好的特性:它的输入范围是所有实数(没有限制),而且输出也是所有实数。这让它比 acosh(要求输入 >= 1)更"宽容"。在游戏开发中,它常用于物理模拟和某些需要平滑非对称映射的场景。
函数签名
C#
// 方式一:使用 Godot 的 Mathf(推荐,返回 float)
public static float Asinh(float x)
// 方式二:使用 .NET 标准库(返回 double)
public static double Asinh(double x)GDScript
func asinh(x: float) -> float参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
x | float / double | 是 | 要计算反双曲正弦的值,可以是任意实数 |
返回值
返回 x 的反双曲正弦值,类型为 float(GDScript 和 Mathf)或 double(.NET Math)。
- 当
x == 0时,返回0.0 - 当
x > 0时,返回正数 - 当
x < 0时,返回负数(函数关于原点对称)
代码示例
C#
using Godot;
using System;
public partial class MathExample : Node
{
public override void _Ready()
{
// 基本用法:计算反双曲正弦
float result1 = Mathf.Asinh(0.0f); // 输出: 0
float result2 = Mathf.Asinh(1.0f); // 输出: 约 0.88137
float result3 = Mathf.Asinh(-1.0f); // 输出: 约 -0.88137
float result4 = Mathf.Asinh(10.0f); // 输出: 约 2.99822
GD.Print("asinh(0) = ", result1);
GD.Print("asinh(1) = ", result2);
GD.Print("asinh(-1) = ", result3);
GD.Print("asinh(10) = ", result4);
// 也可以用 .NET 的 Math.Asinh(返回 double,精度更高)
double precise = Math.Asinh(1.0);
GD.Print("Math.Asinh(1) = ", precise);
}
}GDScript
extends Node
func _ready():
# 基本用法:计算反双曲正弦
var result1 = asinh(0.0) # 输出: 0
var result2 = asinh(1.0) # 输出: 约 0.88137
var result3 = asinh(-1.0) # 输出: 约 -0.88137
var result4 = asinh(10.0) # 输出: 约 2.99822
print("asinh(0) = ", result1)
print("asinh(1) = ", result2)
print("asinh(-1) = ", result3)
print("asinh(10) = ", result4)注意事项
- 输入无限制:和
acosh不同,asinh接受任意实数输入,不存在无效范围。这是它用起来最方便的地方。 - 与普通反正弦的区别:
asin是普通三角函数的反正弦,输入范围限制在[-1, 1],返回弧度角;asinh是双曲函数的反函数,输入无限制,返回的是双曲角。 - 对称性:
asinh(-x) = -asinh(x),函数关于原点奇对称,这在做数学推导时很有用。 - 精度选择:C# 中
Mathf.Asinh()返回float(单精度),Math.Asinh()返回double(双精度)。游戏开发中一般float就够用了。
