acosh
2026/4/15大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — acosh
acosh
定义
反双曲余弦函数(inverse hyperbolic cosine)。给定一个值 x,返回一个角度,使得 cosh(角度) = x。
用数学公式表示就是:acosh(x) = ln(x + sqrt(x^2 - 1))。
你可能已经熟悉普通的三角函数——cos 描述的是圆上的运动,比如摩天轮上的座舱绕着圆心旋转。而双曲函数(cosh、sinh)是三角函数的"远房亲戚",它们描述的不是圆,而是悬链线——就是晾衣绳自然下垂时形成的那个优美弧线。acosh 就是"已知悬链线上某个点的高度,反推出它对应的角度"。
在游戏开发中,双曲函数常用于物理模拟(比如绳索、布料的自然下垂计算)和某些特殊的插值曲线。
要求:输入值 x 必须 大于等于 1,否则函数没有意义。
函数签名
C#
// 方式一:使用 Godot 的 Mathf(推荐,返回 float)
public static float Acosh(float x)
// 方式二:使用 .NET 标准库(返回 double)
public static double Acosh(double x)GDScript
func acosh(x: float) -> float参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
x | float / double | 是 | 要计算反双曲余弦的值,必须 >= 1 |
返回值
返回 x 的反双曲余弦值,类型为 float(GDScript 和 Mathf)或 double(.NET Math)。
- 当
x == 1时,返回0.0 - 当
x > 1时,返回一个正数,且x越大返回值越大
代码示例
C#
using Godot;
using System;
public partial class MathExample : Node
{
public override void _Ready()
{
// 基本用法:计算反双曲余弦
float result1 = Mathf.Acosh(1.0f); // 输出: 0
float result2 = Mathf.Acosh(2.0f); // 输出: 约 1.31696
float result3 = Mathf.Acosh(10.0f); // 输出: 约 2.99322
GD.Print("acosh(1) = ", result1);
GD.Print("acosh(2) = ", result2);
GD.Print("acosh(10) = ", result3);
// 也可以用 .NET 的 Math.Acosh(返回 double,精度更高)
double precise = Math.Acosh(2.0);
GD.Print("Math.Acosh(2) = ", precise);
}
}GDScript
extends Node
func _ready():
# 基本用法:计算反双曲余弦
var result1 = acosh(1.0) # 输出: 0
var result2 = acosh(2.0) # 输出: 约 1.31696
var result3 = acosh(10.0) # 输出: 约 2.99322
print("acosh(1) = ", result1)
print("acosh(2) = ", result2)
print("acosh(10) = ", result3)注意事项
- 输入范围限制:
acosh(x)只对x >= 1有定义。如果传入小于 1 的值,在 GDScript 中会返回NaN(Not a Number),在 C# 中同样会返回NaN。 - 与普通反余弦的区别:
acos是普通三角函数的反余弦,输入范围是[-1, 1],返回弧度角;acosh是双曲函数的反函数,输入范围是[1, +无穷),返回的不是角度而是双曲角。 - 精度选择:C# 中
Mathf.Acosh()返回float(单精度),Math.Acosh()返回double(双精度)。游戏开发中一般float就够用了,如果需要更高精度可以用Math.Acosh()。
