欧拉角(Euler angles)

2023-10-28

前言:本人也就英语4级水平,由于本篇中存在大量学术词汇,翻译时必然会有不当之处,原文可以在下面的链接中找到,具体意义各位可以自行斟酌

标红的部分是已发现存疑的翻译,也请各位指正。


维基百科-欧拉角

欧拉角

  欧拉角是由Lenhard Euler引入的,用于描述刚体方向的三个角, 在3维欧几里得空间中描述这样一个方向,需要三个参数。它们(这种方向)可以多种形式给出 , 欧拉角便是它们中的一种; 在 charts on SO(3)中,你可以找到其它的描述方式 . 欧拉角也可以用于描述一个参照系  (通常是一个坐标系 ) 和另一个参照系之间的位置关系. 这三个角通常被定义为  α β γ , 或者  φ θ ψ .


  欧拉角代表一系列的三维基本旋转, 也就是围绕一个坐标系的各轴的一系列旋转。例如,首先绕Z轴旋转α角,然后绕x轴做一个β角的旋转最后再绕Z轴来一个γ角的旋转。这些旋转都是从一个已知的标准方向上进行的。在物理中,

这个初始化的标准方向通常是一个静止的坐标系,在线性几何中,通常是一个标准基。


  任何一个方向都可以使用三个方向的基本旋转描述出来,一个基本旋转既可以是一个绕着固定坐标系中的轴的旋转,也可以是一个

绕着初始时与固定坐标系对齐的,目前正在旋转的坐标系的轴的旋转。(老外这里翻译成中文比较晦涩,实际上就是这个基本旋转

可以是从初始状态绕一个轴进行的旋转,也可以是在一个已经做过一个或几个方向旋转后的坐标系的基础上,再附加的,绕这个旋转

过了的坐标系轴的旋转),每次基本旋转,都会影响这个方向。这个正在旋转的坐标系可以被想象成严格附着在一个刚体上。因此,

它有些时候被称作本地坐标系。不考虑两种不同的旋转轴(内旋或外旋,后续会提及到)定义的话,这里有12种绕轴旋转的方式,被划分为两组:

  • Proper Euler angles (z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)
  • Tait–Bryan angles (x-y-z, y-z-x, z-x-y, x-z-y, z-y-x, y-x-z).
Tait–Bryan 角也被称作 万向节角(Cardan angles), 航海角(nautical angles),前进方向(heading), 海拔(elevation), 和 倾斜(bank) 或 偏航(yaw),

俯仰(pitch), 翻滚(roll)。有时候,这两种系列的旋转都叫做“欧拉角”,而第一组中的旋转方式也可以被称为 原始经典 欧拉角。


经典欧拉角

经典定义

欧拉角是在空间中 描述从一个用于表示某个固定的参考系的、已知的方向,经过一系列基本旋转得到、新的代表另一个参考系的方向的方式。

这个方向可以被想成从一个初始的方向,旋转到其确切位置的方向。如下图中描述,原始的参考系的坐标轴被定义为x,y,z,旋转后的坐标系

的坐标轴被定义为X,Y,.在几何和物理中,被旋转的坐标系通常被想象成严格附着在一个刚体上。因此,它被称为一个“本地”坐标系,这也意味着

它既代表这个刚体的位置,也代表这个刚体的方向。


欧拉角的几何定义是基于上面提及的(原始的和经过旋转的)的参考系的坐标轴和一个附加的、被称作 交轨线 的轴做出的。

交轨线(N)是xy和XY坐标平面相交处的一条线。换句话说,这条线,穿过这两个坐标系原点,并且垂直于zZ平面,这三个

欧拉角被如下定义:

  • α (or \varphi) x轴和N轴之间的角度。
  • β (or \theta) z轴和Z轴之间的角度。
  • γ (or \psi) N轴和X轴之间的角度。


上面的定义含义如下

  • α 代表绕z轴的旋转,
  • β 代表绕N轴的旋转,
  • γ 代表绕Z轴的旋转.



如果β是0, 就没有绕N轴的旋转. 因此Z轴与z轴重合α 和 γ 代表绕同一个轴(z)的旋转, 最终的方向可以通过一个单一的绕z轴的旋转获得,这个旋转角度等于 α+γ .

可选择的定义方式

经过旋转的参考系XYZ可以被想象成一个在经过欧拉角旋转之前原本与xyz对齐。

其连续的方向变化可以被定义为:

  • x-y-z, or x0-y0-z0 (初始转改)
  • x’-y’-z’, or x1-y1-z1 (经过第一次旋转)
  • x″-y″-z″, or x2-y2-z2 (经过第二次旋转)
  • X-Y-Z, or x3-y3-z3 (经过第三次旋转的最终状态)

从上边列出的一系列旋转可以看出,交轨线N可以被简单的定义为经过第一次旋转后的X轴所在的位置,所以,N可以被简单的定义为x'。

而且,由于第三次的基本旋转是绕Z轴进行的,它不会改变Z轴的方向,所以Z轴和z''是重合的,这就可以帮助我们把欧拉角简化为如下形式:

  • α (or \varphi) 代表绕z轴的旋转
  • β (or \theta) 代表绕x’轴的旋转,
  • γ (or \psi) 代表绕 z″轴的旋转.

约定

不同的作者可能会使用不同绕轴旋转的去定义欧拉角,或者使用不同的名字去命名相同的角,所以任何关于使用论欧拉角的讨论都要以他们的定义方式为先导。
除非另作说明,这篇文章将使用上面的约定。
三个基本旋转可以发生在初始坐标系的固定的坐标系的xyz轴,也可以发生在正在旋转中的XYZ坐标系的坐标轴上。
有6种为原始欧拉角选择旋转轴的方式。下面中的 1 和 6是相同的。可供选择的方式是
  1. z-x’-z″ (内旋) 或 z-x-z (外旋)
  2. x-y’-x″ (内旋)  x-y-x (外旋)
  3. y-z’-y″ (内旋) y-z-y (外旋)
  4. z-y’-z″ (内旋) z-y-z (外旋)
  5. x-z’-x″ (内旋) x-z-x (外旋)
  6. y-x’-y″ (内旋) y-x-y (外旋)

欧拉角的定义必须基于两个相同手参考系。

标志和范围

旋转角通常根据右手坐标系进行定义。换句话说,向坐标轴的正方向看去时,一个顺时针的旋转的角度是正值,逆时针时的旋转的角度是负值。
左手坐标系的约定一般很少采用。

关于阈值:
  对于α 和 γ, 范围是2 π的模. 一个合法的范围可能如: [−π, π].
  对于 β, 范围包含π (但是不能说是π的模). 例如可以是 [0, π] 或者[−π/2, π/2]. 
角 αβ 和 γ 一般都是单独取值的,有一种例外情况,那就是xy平面和XY平面重合的情况,z轴和Z轴拥有相同的方向或者相反的方向。
实际上,如果z轴和Z轴相同,β = 0 并且 只有(α + γ)是一个特殊的定义(不是两个独立的值),并且,相似的,如果z轴和Z轴如果是方向相反,
β = π和 (α − γ) 是个特殊的定义(不是两个独立的值)。这种情况在应用中被称作“万向节锁”

几何推导


获取一个给定参考系的欧拉角最快的方式是 把给出的三个向量写到矩阵中并且与给定的矩阵对比(相关矩阵稍后会在表格中列出)

所以欧拉角是可以被计算出来的,不过,我们可以使用几何推导而不用使用矩阵代数也可以计算出相同的结果,假设一个用单位向量定义的参考系(X,Y,Z)就像下面的图表中

所示


可以看出:

\cos (\beta) = Z_3.

并且由于

\sin^2 x = 1 - \cos^2 x,

我们有

\sin (\beta) = \sqrt {1 - Z_3^2}.

由于Z_2是单位向量在双重投影,所以有

\cos(\alpha) \cdot \sin(\beta) = Z_2,

\cos(\alpha) = Z_2 / \sqrt{1 - Z_3^2}.

相应的Y_3也可以类似的得出,

先向z轴和交轨线构成的平面进行投影,因为Y轴和这个平面的角度为\pi/2 - \beta\cos(\pi/2 - \beta) = \sin(\beta),可以导出:

\sin(\beta) \cdot \cos(\gamma) = Y_3,

\cos(\gamma) = Y_3 / \sqrt{1 - Z_3^2},

最后可用反cosine函数可得

\alpha = \arccos(Z_2 / \sqrt{1 - Z_3^2}),
\beta = \arccos(Z_3),
\gamma = \arccos(Y_3 / \sqrt{1 - Z_3^2}).

有趣的是反consine函数都可以获得两个可能的值,从几何的角度来看,只有一个答案才是合法的

当欧拉角被定义成一系列的旋转,所有的答案都可能是合法的,但是但是只有一个是符合旋转顺序的。这是因为如果旋转顺序不事先确定的话,得到结果参考系

的旋转序列并不是唯一的。


为了计算,使用atan2(y,x)去表示角可能会更有用。

\alpha = \operatorname{atan2}(Z_1 , Z_2),

\gamma = \operatorname{atan2}(X_3 , Y_3).


泰特-布莱恩角


Tait–Bryan angles. z-y′-x″ sequence (intrinsic rotations; N coincides withy’)

(Tail-Bryan角。z-y'-x''顺序, 序列(内旋; N 与 y’重合))

欧拉角的第二种表达形式被叫做Tail-Bryan角,在通过Peter Guthrie Tail和Gerge H. Bryan努力之后,Tail-Bryan角的定义和表示与经典欧拉角的表示方法类似。

唯一的不同是 Tail-Bryan角 使用三个轴上的旋转角度去表示。(例如 x-y-z或者x-y'-z''),然而经典欧拉角的第一个旋转角度和第三个旋转角度都是围绕同一个轴的

例如(z-x-z,或者 z-x'-z'')。


这会产生一个不同于经典欧拉角中的交轨线。在经典欧拉角中,这个交轨线是两个相对应的笛卡尔平面的交线,(当欧拉角为0时,平行的两个笛卡尔平面,例如xy和XY平面)。

在第二种情况中Tait-Bryan角中,它是两个不对应的平面的交线(当欧拉角为0时,互相垂直的两个平面,例如:xy和YZ平面)。


约定


基本旋转既可以围绕着原始未移动的坐标系进行(外旋),也可以围绕那些已经经过几次基本旋转的正在旋转的坐标系的轴进行(内旋)。

有6种旋转的顺序可供选择,分别是:

  1. x-y’-z″ (内旋) or x-y-z (外旋)
  2. y-z’-x″ (内旋) or y-z-x (外旋)
  3. z-x’-y″ (内旋) or z-x-y (外旋)
  4. x-z’-y″ (内旋) or x-z-y (外旋)
  5. z-y’-x″ (内旋) or z-y-x (外旋): 此序列的内旋被叫做: 偏航(绕z旋转), 俯仰(绕y'旋转) 和 翻滚(绕x''旋转) 
  6. y-x’-z″ (内旋) or y-x-z (外旋)

可供选择的命名

泰特-布莱恩角中 z-y'-x''这个序列(内旋) 通常被叫做航海角,因为他们可以用来描述一艘船或者一架飞行棋的方向,或者可以叫做万向角,也可以把这几个
旋转叫做 heading(摆头),elevation(俯仰)和bank(倾斜),或者叫做 yaw(偏航),pith(俯仰)和roll(翻滚)。注意第二套叫法也被用在三个飞行器轴中

物理移动关系

内旋

内旋是发生在正在旋转的坐标系中的坐标轴上的旋转

XYZ坐标系旋转,xyz坐标系静止不动,三个内旋可以使XYZ坐标系指向任何一个方向。欧拉角或者泰勒-布莱恩角中(αβγ)是这三个旋转的幅度

例如目标方向可以这样抵达:

  • XYZ 绕Z轴(初始时与z轴重合的那个轴)旋转角度α. 现在X 轴位于交轨线上.
  • XYZ绕现在的X轴角度为β. Z轴现在已经位于其最终的位置, X轴还停留在交轨线上.
  • XYZ绕新的Z轴角度为γ
上面提到的变量让我们可以总结出:

    三个基本旋转分别是绕着z,x',z''进行的。实际上这组旋转经常被叫做z-x'-z''序列。欧拉角和泰勒-布莱恩角中变量命名

一般都是这样的。有时这样的旋转序列也被叫做z-x-z,Z-X-Z,或者是3-1-3,但是这样命名容易与外旋产生分歧,所以有必要

指出是内旋还是外旋。

Any target orientation can be reached, starting from a known reference orientation, using a specific sequence of intrinsic rotations, whose magnitudes are the Euler angles of the target orientation. This example uses the  z-x′-z″sequence.


可以用旋转矩阵表达内旋,例如

R = X(\alpha) Y(\beta) Z(\gamma)

如果使用左乘列向量表达这个旋转组合,结果是

R = Z(\gamma) Y(\beta) X(\alpha)

用右乘横向量的表达式和这个是一样的。



外旋

外旋是用围绕固定坐标系xyz的坐标轴的旋转角度进行标识的。 xyz是固定不懂的,而XYZ旋转, 开始时XYZ和xyz是重合的,经过三个绕xyz轴的基本旋转

XYZ可以达到指定的方向。同样 欧拉角或泰勒-布莱恩角中的三个基本旋转的角度也用(αβγ进行表示

例如,最终旋转可以用下面的步骤进行表示:

  

  • XYZ坐标系绕z轴α. 现在X轴与x轴的角度为α.
  • XYZ坐标系再绕x轴β. 现在Z轴与z轴的角度为β.
  • XYZ第三次绕z轴旋转γ.

总的来说,上面过程中,这三个基本旋转是围绕z,x,z轴进行的。实际上 这个也经常被定义为z-x-z或者3-1-3,在欧拉角和泰勒-布莱恩角中都是这样命名的

一个用欧拉角表示的旋转 (α,βγ) = (−60°, 30°, 45°),  z-x’-z″序列 内旋
一个和上图相同的旋转 (γ, β, α) = (45°, 30°, −60°), z-x-z序列 外旋

Any extrinsic rotation is equivalent to 

用旋转矩阵可以表达外旋序列,例如

R = Z(\gamma) Y(\beta) X(\alpha)

用左乘竖向量的方式可以表达为

R = X(\alpha) Y(\beta) Z(\gamma)

右乘横向量的表达式与这个是一致的









万象移动关系


Euler basic motions of the Earth. Intrinsic (green), Precession (blue) and Nutation (red)

欧拉基本移动是通过改变欧拉角中其中一个角,同时保持另外两个角不变而得到的。

欧拉旋转从来不会基于外部参考系,或基于相对旋转的参考系的旋转表示。

但是在某些混合使用的情况下,它们会组成一个混合轴的旋转系统。

如左图,第一个旋转角度使交轨线绕着外部的z轴进行旋转,第二个旋转角度是围着交轨线进行旋转的,第三个旋转角度是个围绕着在体内固定轴移动的内旋。(为何第三个被称为内旋?这里理解有误?

这些旋转被称作 旋进 点头和内旋(自旋)。举个例子,一个陀螺,这个陀螺绕着自己的对称轴进行旋转,这个对应于他的内旋,同时它还绕着它的中轴进行旋转,这个就叫做旋进。最后,这个陀螺还会上下摆动,这个倾角就叫做它的点头角.这三个分别划分到不同的参考系中,都是一个旋转角。只有旋进是一个合法的旋转操作,并且通常只有旋进可以用一个基于空间的矩阵所表示。(翻译有问题?这个不太理解



万向节类比

Left: A three axes  z- x- z  gimbal where the external frame and external axis  x are not shown and axes  Yare perpendicular to each gimbal ring.  Right: A simple diagram showing the Euler angles and where the axes  Y of intermediate frames are located.

我们假设有一系列的参考系,可以在之前移动的基础上分别只在一个角度上进行旋转, 类似一个万向节,这里会存在一个外部的固定参考系,一个最终参考系和两个在中间的被叫做“中间参考系”的参考系。这两个像悬浮环的、在中间的参考系可以让最终的参考系达到任何一个方向。

这样,每个欧拉旋转对应一个环,与剩下的环保持独立。









中间参考系

悬浮环表示中间参考系,他们也可以被静态的定义,分别在x,y,z轴上有向量i,j,k,在XYZ上有向量I,J,K,N在交轨线上,一些中间参考系可以用向量叉乘的形式进行定义如下:
  • 初始状态: [i,j,k] (k = i × j)
  • 第一个参考系: [N,k × N,k]
  • 第二个参考系: [N,K × N,K]
  • 最终参考系: [I,J,K]
这些中间参考系和那些悬浮环是等价的,其中一个环转动,最终的方向便会产生变动。这证明了:
  • 通过组合这三个旋转,原始参考系可以被旋转到与任何一个目标参考系.
  • 这些旋转角就是目标参考系的欧拉角.
翻译未完,后续会接着进行翻译,并对内容加深理解,修正文章中的错误翻译。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

欧拉角(Euler angles) 的相关文章

  • 在 Blackberry 4.2 JDE 上调用 atan 函数

    我需要从我的 Blackberry Java 应用程序计算反正切值 不幸的是 blackberry 4 2 api 没有 Math atan 函数 Blackberry JDE 4 6 版有此功能 但 4 2 版没有 有谁知道计算 atan
  • 如何在 C 中将 uint 转换为 int,同时将结果范围的损失最小化

    我想要两个无界整数之间的差 每个整数由一个表示uint32 tvalue 是对 2 32 取模的无界整数 例如 TCP 序列号 请注意 模 2 32表示形式可以环绕 0 这与更受限制的问题 不允许环绕 0 https stackoverfl
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • 如何在Python的SciPy中更改稀疏矩阵中的元素?

    我构建了一个小代码 我想用它来解决涉及大型稀疏矩阵的特征值问题 它工作正常 我现在要做的就是将稀疏矩阵中的一些元素设置为零 即最顶行中的元素 对应于实现边界条件 我可以调整下面的列向量 C0 C1 和 C2 来实现这一点 不过我想知道是否有
  • 如何从矩形点计算旋转角度?

    我有4分1 2 3 4闭合一个矩形 这些点按以下方式排列在数组中 x1 y1 x2 y2 x3 y3 x4 y4 我遇到的问题是矩形可以旋转一定角度 如何计算原始点 灰色轮廓 和角度 我试图在 javascript css3 transfo
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 计算移动的球与移动的线/多边形碰撞的时间(2D)

    我有一个多边形 里面有一个移动的球 如果球撞到边界 它应该反弹回来 My current solution I split the polygon in lines and calculate when the ball hits the
  • 旋转矩阵openCV

    我想知道如何找到框架中一组特征的旋转矩阵 我会更具体 我有 2 个具有 20 个特征的帧 假设第 1 帧和第 2 帧 我可以估计两个帧中特征的位置 例如 假设位置 x y 处的某个第 1 帧特征 并且我确切地知道它在哪里 所以假设为 x y
  • SymPy 和 Sage 有什么区别?

    有什么区别SymPy http www sympy org and Sage https www sagemath org 又名 SageMath 全面披露 我是 SymPy 的首席开发人员 您应该了解的第一件事是 SymPy 和 Sage
  • 如何在 C# 中将 BigInteger 转换为 pow Double?

    我尝试使用BigInteger Pow计算类似 10 12345 987654321 的方法 但此方法只接受整数作为指数 如下所示 BigInteger Pow BigInteger x int y 那么如何在上述方法中使用双数作为指数呢
  • R 中 if-else 中的逻辑运算符

    我有一个名为 mat 的下表 5 列和 3 行 AC CA RES 1 0 2 2 1 3 0 0 0 1 正在执行的操作是mat 1 mat 1 mat 2 我正在测试以下内容 1 如果一行的两列都为零 则结果应为 NA 2 如果一行中只
  • 将所有 BigDecimal 运算设置为特定精度?

    我的Java程序以高精度计算为中心 需要精确到至少120位小数 因此 程序中所有非整数都将由 BigDecimal 表示 显然 我需要指定 BigDecimal 的舍入精度 以避免无限小数表达式等 目前 我发现必须在 BigDecimal
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • 如何使用NSDecimalNumber?

    我正在构建一个需要对金钱进行计算的应用程序 我想知道如何正确使用 NSDecimalNumber 特别是如何从整数 浮点数和双精度数初始化它 我只发现它很容易使用 decimalNumberWithString 方法 这 initWith
  • 几何:找到两点之间特定距离的点

    这类似于这个问题 https stackoverflow com questions 328107 how can you determine a point is between two other points on a line se
  • 如何计算正切和副法线?

    谈谈OpenGL着色语言 GLSL 中的凹凸贴图 镜面高光之类的东西 I have 顶点数组 例如 0 2 0 5 0 1 0 2 0 4 0 5 法线数组 例如 0 0 0 0 1 0 0 0 1 0 0 0 世界空间中点光源的位置 例如
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 求截头棱锥体/截棱锥体横截面的边长

    如何找到横截面的边长 如图所示 下图 横截面 红色 截头锥体 截棱锥体 我知道顶部和底部的边长 以及底部的高度 截锥体和到横截面的距离 此外我还知道 顶部和底部底座平行 并且顶部和底部的中心 底部底座直接位于彼此之上 比例是线性的 因此只需
  • 为什么 Convert.ToInt32(1.0/0.00004) != (Int32)(1.0/0.00004)

    为什么这段代码http ideone com YRcICG http ideone com YRcICG void Main double a 0 00004 Int32 castToInt Int32 1 0 a Int32 conver

随机推荐

  • ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found

    最近在做猫狗二分类实验的时候 在网上找到了教程 然后跟着教程打代码发现最后出现了ValueError Input 0 of layer sequential is incompatible with the layer expected m
  • Java访问权限修饰符

    private 私有的 只有在同一个类才能访问 内部类 成员变量 方法 default friendly 默认的 同一个包中可以访问 其他包中不能访问 类 成员变量 方法 接口 protected 受保护的 同一个包中可以访问 不同的包需要
  • KubeSphere 部署安装

    使用 kubeadm 搭建的 Kubernetes 1 15 2 版本集群 Helm v2 12 2 版本 使用 NFS 作为集群存储后端 下载安装脚本 mkdir root kubeSphere cd root kubeSphere gi
  • Git仓库完全迁移,包括所有的分支和标签,当然也包括日志。

    度娘了一堆git仓库迁移的内容 一个个都比较麻烦 而且本地下了代码 还要删去库地址 再切换到新库的地址上传 一般这种操作都只是master分支 其他分支还要一个一个来 后来在51CTO上找了一个文章 简单明了 一下就全搞定了 包括所有的分支
  • 二进制安装Docker

    下载 安装 wget https download docker com linux static stable x86 64 docker 19 03 6 tgz tar zvxf docker 19 03 6 tgz 把文件copy到
  • 计算机常用控温算法,常用温度控制方法原理 -解决方案-华强电子网

    常用PID调节器 温控仪控制算法包括常规PID 模糊控制 神经网络 Fuzzy PID 神经网络PID 模糊神经网络 遗传PID及广义预测等算法 常规PID控制易于建立线性温度控制系统被控对象模型 模糊控制基于规则库 并以绝对或增量形式给出
  • random函数汇总

    1 random random random random 用于生成一个0到1之间的随机浮点数 0 lt n lt 1 gt gt gt random random 0 7086588033796296 2 random uniform r
  • 【Django知识补充 - 1】:admin站点和rest_framework实现文件的上传和下载

    文章目录 项目准备 settings py中的配置 主路由urls py的配置 子应用中的文件代码 init py admin py models py serializers py urls py views py 演示 在admin中上
  • java实现-合并两个有序数组

    合并两个有序数组 给你两个有序整数数组 nums1 和 nums2 请你将 nums2 合并到 nums1 中 使 nums1 成为一个有序数组 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 你可以假设 nums1 的空
  • 移动端 文件预览(所有文档文件类型)

  • Java21天打卡-Day15 数组

    import java util Arrays public class Day15 数组 题目1 创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序 按照每个字符串的首字母排序 无视大小写 注1
  • PermissionX 1.7发布,全面支持Android 13运行时权限

    各位小伙伴们大家早上好 一年一度的PermissionX升级又来了 还记得上次发布PermissionX 1 6版本还是在去年10月份的时候 当时是对Android 12系统进行了支持 详情可以参考这篇文章 PermissionX 1 6发
  • 深度学习框架Pytorch傻瓜式安装教程

    前提 已经安装完minianaconda和pycharm minianaconda直接官网下载即可 minianaconda比起anaconda体量很小 pycharm专业版2020下载百度网盘链接 链接 https pan baidu c
  • 【Detectron2】入门02-使用自己的数据集

    Detectron2 official Documents https detectron2 readthedocs io tutorials datasets html 目录 COCO格式数据集 Standard dataset dict
  • Qt对象树

    对象树 Qt提供了对象树机制 能够自动 有效的组织和管理继承自QObject的Qt对象 每个继承自QObject类的对象通过它的对象链表 QObjectList 来管理子类对象 当用户创建一个子对象时 其对象链表相应更新子类对象信息 对象链
  • JVM优化

    java运行时数据区 程序计数器 线程私有 java虚拟机栈 线程私有 本地方法栈 线程私有 java堆 线程公用 方法区 线程公用 jvm内存分配 栈内存分配 私有的 不会存在线程安全 保存参数 局部变量 中间计算过程和其他的数据 退出方
  • redis复习

    1 关系型数据库和非关系型数据库 关系型数据库 Relational Database 和非关系型数据库 Non relational Database 或 NoSQL Database 之间的主要区别可以从以下几个方面进行理解 1 1 数
  • 机器学习(数据分析)数学基础——线性代数篇(五)线性方程组

    求解线性方程组也算是考研中的必备技能了 它往往出现在大题的第一问 注 本篇需要一些线性代数基础 1 首先我们来解决r n的情况 线性方程组 import numpy as np from scipy import linalg 定义A矩阵
  • [Codeforces] number theory (R1900) Part.2

    Codeforces number theory R1900 Part 2 题单 https codeforces com problemset page 1 tags number 20theory 1601 1900 294C Shaa
  • 欧拉角(Euler angles)

    前言 本人也就英语4级水平 由于本篇中存在大量学术词汇 翻译时必然会有不当之处 原文可以在下面的链接中找到 具体意义各位可以自行斟酌 标红的部分是已发现存疑的翻译 也请各位指正 维基百科 欧拉角 欧拉角 欧拉角是由Lenhard Euler