• 《数学 的 最后一个 杰作 : 傅里叶级数》 里 的 回复


    《数学 的 最后一个 杰作 : 傅里叶级数》     https://tieba.baidu.com/p/7647533106     。

    9 楼

    回复 4 楼  @dons222 ,

    你一说, 我想起来了,  要 计算 旋转 *移 的 是 模型 上 很多的 点 ,   不是  一两个 点,   所以 大批量封送 到 GPU 计算  。  如此,  如果 是 有 加法 也有 乘法,  也许 加法 要 封送一次,乘法 要 封送一次,    加法 和 乘法 之间 交换数据  会 产生 一些 中间环节  。

    我想  偏心旋转 仍然 是 2 次 旋转组成,   以 无限远 的 地方 为 原点 旋转一次, 以此 *移,   以 实际要旋转的 “支点” 为 原点 旋转一次,  以此 旋转  。

    对于 以 无穷远 的 地方 为 原点 旋转坐标系 的 问题,   我 首先 想到的 是 精度,  即 计算机 的 运算精度,  比如 浮点数 的 精度 ,  即 有效数字位数  。

    一直以来,   我一直 有一个 担心,   也 没 完全 搞清楚,   一些 缩放法,  是否 最终 都是 在 拼 精度 ?   如果 计算机 的 精度 不够,   比如 浮点数 的 有效数字 不够,   则 缩放 也许 是 “缩前放后一个样” , “竹篮打水一场空”,   收不到 实际 的 效益 ?

    32 位 浮点数 的 有效数字 范围 大概 是  - 20 亿 ~ 20 亿 ,    64 位 是    - 400 亿亿 ~ 400 亿亿 ,    如果   把  “无穷远” 设为   400 亿亿,   那么,   旋转 产生 的 *似*移 的 距离 可以 精确到 1, 或者说 个位数,    两者 比值 是   400 亿亿  : 1  ,   好像 很 可观  。 

    但 到底 和 精度 有没有 关系 呢 ?     我还是 没 搞清楚  。

    第二,  理论上,  以 二维坐标系 为例,   设 物体 A 的 坐标 是  ( Xa, Ya ) ,  Xa > 0 ,  Ya > 0 ,  物体 A 可以看作一个点  。    A 在 y 方向 上 离 原点 很远,即 Ya 很大 ,  在 x 方向 上 离 原点 很*, 即  Xa 很小,    坐标系 围绕 原点 旋转一个 很小 的 角度 θ,   旋转后  A 的 坐标 是  ( Xa ′, Ya ′ ) ,    ⊿ x = Xa ′ - Xa ,  ⊿ y = Ya ′ - Ya ,    要 满足 ⊿ x 远大于 ⊿ y,   才能 用 旋转 来  *似  *移  。

    数学上,   可以表述为,    Ya -> 无穷,     θ  是 无穷小,  和  Ya 同阶,   试证明,  ⊿ x 是 有 确定大小 的 值,   ⊿ y 是 无穷小  。

    也可以 等价 的 表述 为,    Ya 是 有确定大小 的 值,   θ  -> 0 ,     试证明,  ⊿ x 是 无穷小,   ⊿ y 是 高阶无穷小  。

    二维坐标系 旋转 公式 主要 是 和角公式,     三维坐标系 旋转 可以由  三次 二维坐标系 旋转 合成  。

    可以看到一个问题,   无论 二维 还是 三维,  都 需要  在 一个 坐标轴 方向 上 物体 离 原点 很远,   才能 用 旋转 *似 另一个(其它) 坐标轴 上 的 坐标*移  。

    物体 离 原点 很远 的 这个 方向 的 坐标轴 的 坐标 *移 不能  通过 旋转 *似  。

    比如,   x - y - z 坐标系,   让  物体 在 z 轴 方向上  离 原点 很远,    则 可以用 旋转 来 *似 物体 在  x 轴方向 、y 轴方向 上 的 *移,  但 不能用 旋转 来 *似 物体 在 z 轴方向 上 的 *移  。

    也就是,     我们 正对 物体,   物体 离 我们 很远,   可以让 我们 或 物体 旋转 来 *似 物体 相对于 我们 的 左右移动 上下移动,   但是 不能 用 旋转 来 *似 物体 朝 我们 靠* 或 远离 的 移动  。

    这里 涉及 的 证明 大家 都会,    但 我还是 写一下,     后面连载  。     (不一定 天天连载,  可能 隔几天 连载一次)

    10 楼

    接 9 楼  。    @dons222 

    用 一次 旋转 来 实现 *移 + 旋转 是可以的,只要 选择 合适 的 支点 就行  。

    未完待续  。

    11 楼

    接 10 楼  。

    9 楼 的 要 证明 的 数学题目,   简单的,  可以这样来证 :

    ⊿ x = BH,   ⊿ y = AH,    证明  θ -> 0 时,    BH 是 无穷小,   AH 是  高阶无穷小  。

    实际上 就是 证明  θ -> 0 时,    sin θ  是 无穷小,    1 - cos  θ 是 高阶无穷小  ,  或者说,  求    ( 1 - cos  θ ) / sin θ  ,  θ -> 0  的 极限, 哈哈  。

    当  θ -> 0 时,       1 - cos  θ  -> 0 ,  sin θ -> 0 ,   用 洛必达法则

     ( 1 - cos  θ ) / sin θ  ,  θ -> 0

    =     ( 1 - cos  θ ) ′ / ( sin θ ) ′

    =     sin θ  / cos θ

    =     sin 0  / cos 0

    =     0  / 1

    =     0

    即   ( 1 - cos  θ ) / sin θ  ,  θ -> 0   的 极限 是 0,     ( 1 - cos  θ ) / sin θ  ,  θ -> 0   是 无穷小,    所以  1 - cos  θ  是 sin θ  的 高阶无穷小  。

    那     1 - cos  θ  比  sin θ    高了 几阶 呢 ?     可以这样看 :

     ( 1 - cos  θ )  /  θ ²  ,   θ -> 0

    过程略

    =    1/2

    所以    θ  ->  0 时,   1 - cos  θ  和  θ ²  是 同阶无穷小,   而   θ ² 比 θ  高了一阶,    所以        1 - cos  θ  比   θ  高了一阶,    又  θ  和  sin θ  是 等价无穷小,   所以   1 - cos  θ  比   sin θ  高了一阶  。

    严格一点,   A 点 不一定 在  y 轴 上,    这要用 和角公式 证,  后面连载  。

    刚在 10 楼 的 回复 中 和  dons222 讨论,  现在 的 需求 看起来是,  在 三维 下 要 求出 一次 旋转 等价于 *移 + 旋转 的 支点 和 围绕 3 个 坐标轴 旋转 的 角度  。

    在 模型 上 找一点  A, 坐标为  ( Xa, Ya, Za ) ,    计算 A 点 *移 + 旋转 后 的 的 坐标   ( Xa ′, Ya ′, Za ′ ) , 

    设     坐标系旋转公式 为    

    x ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  x )

    y ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  y )

    z ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  z )

    x, y, z  为 某点 旋转前 的 坐标,   x ′, y ′, z ′  为 旋转后 的 坐标,     X支, Y支, Z支  为 支点坐标 ,   θx,   θy,   θz  为 围绕  x, y, z 坐标轴 旋转 的 角度  。

    这样,   可以 列 一个 方程组 :

    Xa ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  Xa )

    Ya ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  Ya )

    Za ′  =   f ( X支, Y支, Z支,  θx,   θy,   θz,  Za )

     Xa, Ya, Za ,  Xa ′, Ya ′, Za ′    是 已知数,    X支, Y支, Z支,   θx,   θy,   θz  是 未知数  。

    有  6 个 未知数,   因此 还要 再找一点 B  ( Xb, Yb, Zb ) ,    同样 计算出 *移 + 旋转 后 的 坐标   ( Xb ′, Yb ′, Zb ′ ) ,   再列 3 个 方程,    这样 就 是  6 个 方程,   组成了  6 元方程组,

    解这个 方程组,  可以 求得  支点  ( X支, Y支, Z支 )  和 旋转角度  θx,   θy,   θz  。

    以    ( X支, Y支, Z支 )   为 支点  旋转  θx,   θy,   θz ,   这样一次 旋转 的 效果 等价于  *移 + 旋转 。

    14 楼

    dons222   思维机器,    看了  11 楼 13 楼 的 回复,  对 你们 的 架构 就 比较清楚了 。  大概 是 这样,  有一个 全局坐标系 O,   在 O 里 有一个 固定 位置 和 角度 的 镜头,  要 从 不同 位置 和 姿态(角度) 观察 物体 时,  可以先在 O 系 里 *移物体,  再 选取一个 新的 坐标系 O ′ ,   以  O ′  为 支点 旋转 物体,   然后 再由  O 系 里 的 镜头 观察 ,  观察 指 透视成像  。

    O 系 的 *移 和 O ′ 系 的 旋转  可以让  物体 相对于 镜头 处于 任何 位置 和 姿态(角度) 。

    现在  dons222 的 需求 是  把  O 系 的 *移 省掉,    用  O ′ 的 一次旋转 就 可以起到 O 系 *移 和 O ′ 系 旋转 的 效果  。

    其实 可以有 2 种 架构,

    1    移动镜头,   *移 和 旋转 镜头 使之 在 需要 的 位置 和 角度 对着 物体,   这个 方法 的 优点 是 不需要 物体 的 大量点 计算 *移,  也 不需要 物体 的 大量点 的 O 系 和 O ′ 系 之间 的 坐标变换  。        只需要 计算 镜头 的 *移 和 旋转,  这只 需要 计算 几个点  。        镜头 对好 物体 后,   直接 透视成像 就可以 ,   透视成像 使用  O 系 坐标  。

    2    固定镜头,   对 物体 *移 和 选取 O ′  让 物体 旋转 使 物体 移动 到 指定 的 位置 和 旋转 到 指定 姿态(角度),    然后 由 固定镜头 透视成像  。  这个 方法 需要 做 物体 的 大量点 在 O 系 里 的 *移计算,   然后 还要 把 物体 的 大量点 的 O 系 坐标 转换成 O ′ 系 的,  然后 在 O ′ 里 旋转 物体,  这需要 计算 物体 大量点 的 旋转,   再 把 旋转后 的 物体 大量点 的 O ′ 系 坐标 转换回 O 系 坐标,   然后 由  O 系 的 固定镜头 透视成像  。

    方法 1  只能 用于 整个场景(所有 物体) 的 位置 和 角度 一起改变 的 场合,     方法 2 可以用于  分别 对 一些 物体 移动 和 旋转 不同的 位置 和 姿态(角度) ,  再 一起 观察(透视成像) 的 场合  。

    接下来  分析 二维 和 三维 上 能不能 通过 一次旋转 实现(等价)  *移 + 旋转  。 

    先看 二维,      目前 的 结论 是 可以 ,  但 具体 的 证明 没有写,  可以来看 一个 例子 :

    AB 先 *移,  再旋转,   到    A ′ B ′  的  位置  。  A ′  在 AB 的 延长线 上,   AB 和 A ′ B ′   垂直  。  能不能 找到 一个 支点  O2 ,  让 AB 围绕 O2 旋转,  一次 旋转 就可以 让 AB 旋转到  A ′ B ′ , 和   A ′ B ′   重合 ?

    乍一看,  好像 不行,  找不到 合适 的 支点  O2,       但 实际上 是 可以的  。

    再来 看 三维,    目前 的 结论 是 不行,    可以这样 证明 :

    一次 三维旋转 由 3 次 二维旋转 组成,  在 三维空间 里 取 一段 线段  AB,  再在 另一个 地方 取 同样 长度 的 一段 线段   A ′ B ′  ,   假设 一次 三维旋转 可以 让 AB 旋转 到  A ′ B ′  处 并 和  A ′ B ′   重合,    A 和  A ′ 重合,  B 和  B ′  重合,     这 需要 3 次 二维旋转,  也可能 只要 2 次 或 1 次,   不管怎样,   最后一次,    必然 是 一个 二维*面 上 让  AB 和 A ′ B ′   旋转重合 。

    比如,  最后一次旋转 是 围绕  z 轴 旋转,   在 x - y *面 或 *行于 x - y *面 的 *面 上 旋转, 这个 *面 记为 P,  z 轴 和 P 的 交点 记为 Op, 根据 上文 讨论 的 二维 上 一次旋转 实现(等价) *移 + 旋转 的 原理,  P 上 的  AB 和  A ′ B ′   要  旋转重合,   要 选择一个 正确的 支点 O2,    而 这个  O2 很可能 并不和 Op 重合,  如此,  围绕 O2 的 旋转 就不是 围绕 z 轴 的 旋转,  也就是  围绕 O2 旋转 使  AB 和  A ′ B ′  重合,   但  围绕 O2 旋转 不是 围绕 z 轴 旋转  。 

    所以 一次 三维旋转 不能 实现 (等价) *移 + 旋转  。

    还需要 补充 一点,   三维旋转 的 3 次 二维旋转 可以 有 6 种 旋转顺序,  比如 先围绕 x 轴 旋转, 再围绕 y 轴旋转, 再围绕 z 轴旋转, 记为  x -> y -> z,   还有   x -> z -> y ,   y -> x -> z ,  y -> z -> x ,   z -> x -> y ,   z -> y -> x   。  不同 的 顺序 旋转的 结果 (AB 的 位置 和 姿态 ( 角度 ) ) 是 不一样 的  。

    但 总可以举出例子  (AB 和  A ′ B ′ ),   使得  无论 以 何种 顺序 旋转,    最后 一次 二维旋转 都会 出现 上述 的  O2 不和 Op 重合 的 情况  。

    以上 证明    一次 三维旋转 不能 实现 (等价) *移 + 旋转  。

    这次 写 的 时间长 是 想的多,   一些 中间过程 也 推翻重来,  没有 写出来  。

    16 楼

    之前 认为 三维 里 *移 + 旋转 不能 用 一次旋转 来 实现(等价) 的 结论 是 错误的, 我刚 想到了一个 方法 , 用 2 个 二维旋转 就可以 实现 线段 AB 任意 的 位置姿态 变成 另一个 位置姿态 。 这个 方法 的 解 至少 有 2个, 可能 还有 若干个 。 这个 方法 跟 你说的 固定一个点 比如 B 在 一个 轴 上, 围绕 轴 旋转 的 方法 差不多 。

    除了 上述方法, 因为 O ′ 可以是 任意的, 任意 的 O ′ 可能 还会产生 无数个 解 。

    17 楼

    三维旋转 的 讨论内容 后续 请看 《三维坐标系由一次转动代替“*动+转动”是否能得到数学证明?》 https://tieba.baidu.com/p/7656957355

    20 楼

    fjg5610  :

    模糊集不是数学问题?开创了人脑辩证思维的形式化方法。

    K歌之王 :模糊集 是 模糊数学 吗 ? 30 年前 就说 神经网络 和 模糊数学 是 人工智能 的 两个方向, 如今是 被 神经网络(卷积) 一统天下 了 ? 不过 未来 白盒人工智能 里 模糊数学 应该 会 起作用 的 。

    K歌之王 :模糊数学 也只是 发明了一些 形式 吧 ? 发明了 一种 数学语言 。 我想 用 计算机语言 的 if else 也能 表达 吧 ? 说白一点, 用 人类语言 大白话 也能表达(更能表达) 。

  • 相关阅读:
    《高效休息法》IT从业者如何高效休息
    《逆向管理-先行动后思考》
    《时间管理》总结
    Java面试,面试题
    Java线程池解析
    Java基础图解,JVM,线程,Spring,TCP,SpringMVC等开发体系图解
    Docker私服搭建--Harbor
    一:优化Docker中的Spring Boot应用:单层镜像方法
    七:Spring Security 前后端分离登录,非法请求直接返回 JSON
    python selenium模块使用出错-selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
  • 原文地址:https://www.cnblogs.com/KSongKing/p/15681393.html
Copyright © 2020-2023  润新知