数学#
- arcade.math.get_angle_degrees(x1: float, y1: float, x2: float, y2: float) float [源代码]#
获取两点之间的角度(以度为单位)。
- 参数:
x1 -- 第一个点的X坐标
y1 -- 第一个点的Y坐标
x2 -- 第二个点的X坐标
y2 -- 第二个点的Y坐标
- arcade.math.get_angle_radians(x1: float, y1: float, x2: float, y2: float) float [源代码]#
获取两点之间的角度(以弧度为单位)。
- 参数:
x1 -- 第一个点的X坐标
y1 -- 第一个点的Y坐标
x2 -- 第二个点的X坐标
y2 -- 第二个点的Y坐标
- arcade.math.get_distance(x1: float, y1: float, x2: float, y2: float) float [源代码]#
求出两点之间的距离。
- 参数:
x1 -- 第一个点的X坐标
y1 -- 第一个点的Y坐标
x2 -- 第二个点的X坐标
y2 -- 第二个点的Y坐标
- 返回:
两点之间的距离
- arcade.math.lerp_2d(v1: Vec2 | Tuple[float, float] | List[float], v2: Vec2 | Tuple[float, float] | List[float], u: float) Tuple[float, float] [源代码]#
- arcade.math.lerp_3d(v1: Vec3 | Tuple[float, float, float] | List[float], v2: Vec3 | Tuple[float, float, float] | List[float], u: float) Tuple[float, float, float] [源代码]#
- arcade.math.lerp_angle(start_angle: float, end_angle: float, u: float) float [源代码]#
按照最短路径在两个角度之间以度为单位进行线性内插。
- 参数:
start_angle -- 起始角
end_angle -- 终点角度
u -- 插值值
- 返回:
插补角度
- arcade.math.quaternion_rotation(axis: Tuple[float, float, float], vector: Tuple[float, float, float], angle: float) Tuple[float, float, float] [源代码]#
绕三维单位长度向量顺时针旋转任意长度的三维向量。
这种矢量旋转方法不受旋转锁定的影响,但寻找旋转轴比寻找3个旋转角要稍微费力一些。参考:https://danceswithcode.net/engineeringnotes/quaternions/quaternions.html.
- 参数:
axis -- 将围绕其旋转的单位长度矢量
vector -- 要旋转的三维向量
angle -- 向量顺时针旋转的角度(以度为单位)
- 返回:
与自变量向量长度相同的旋转三维向量。
- arcade.math.rand_angle_spread_deg(angle: float, half_angle_spread: float) float [源代码]#
返回给定角度范围内的随机角度(以度为单位)。
- 参数:
angle -- 传播的角度
half_angle_spread -- 半角展开
- 返回:
以度为单位的随机角度
- arcade.math.rand_in_circle(center: Tuple[float, float], radius: float) Tuple[float, float] [源代码]#
在圆中生成点,或者可以将其视为指向随机方向的矢量,其随机幅度<=半径。
参考文献:https://stackoverflow.com/a/30564123
备注
此算法返回圆心周围较集中的点
- 参数:
center -- 圆的中心
radius -- 圆的半径
- 返回:
圆周上的任意点
- arcade.math.rand_in_rect(bottom_left: Tuple[float, float], width: float, height: float) Tuple[float, float] [源代码]#
计算矩形中的任意点。
- 参数:
bottom_left -- 矩形的左下角
width -- 矩形的宽度
height -- 矩形的高度
- 返回:
矩形中的任意点
- arcade.math.rand_on_circle(center: Tuple[float, float], radius: float) Tuple[float, float] [源代码]#
在圆上生成点。
- 参数:
center -- 圆的中心
radius -- 圆的半径
- 返回:
圆上的任意点
- arcade.math.rand_on_line(pos1: Tuple[float, float], pos2: Tuple[float, float]) Tuple[float, float] [源代码]#
给定定义一条直线的两个点,返回该直线上的任意点。
- 参数:
pos1 -- 第一点
pos2 -- 第二点
- 返回:
线上的任意点
- arcade.math.rand_vec_magnitude(angle: float, lo_magnitude: float, hi_magnitude: float) Tuple[float, float] [源代码]#
返回给定角度范围内的随机向量。
- 参数:
angle -- 传播的角度
lo_magnitude -- 较低的震级
hi_magnitude -- 震级越高
- 返回:
随机向量
- arcade.math.rand_vec_spread_deg(angle: float, half_angle_spread: float, length: float) Tuple[float, float] [源代码]#
返回给定角度范围内的随机向量。
- 参数:
angle -- 传播的角度
half_angle_spread -- 半角展开
length -- 向量的长度
- 返回:
随机向量
- arcade.math.rotate_point(x: float, y: float, cx: float, cy: float, angle_degrees: float) Tuple[float, float] [源代码]#
绕中心旋转点。
- 参数:
x -- 要旋转的点的X值
y -- 要旋转的点的Y值
cx -- 要绕其旋转的中心点的X值
cy -- 要绕其旋转的中心点的Y值
angle_degrees -- 旋转的角度,以度为单位
- 返回:
返回旋转的(x,y)对
- arcade.math.round_fast(value: float, precision: int) float [源代码]#
这是一个高性能版本的Python的内置round()函数。
备注
此函数不如内置的ROUND()函数准确。但在某些情况下就足够了。
示例::
>>> round(3.5662457892, 1) 3.6 >>> round(3.5662457892, 2) 3.57 >>> round(3.5662457892, 3) 3.566 >>> round(3.5662457892, 4) 3.5662
- 参数:
value -- 要舍入的值
precision -- 要舍入到的小数位数
- 返回:
四舍五入的值