math - 从直线和角度计算 3D 点的坐标
问题描述
基本上,我想从某个已知的 AB 线生成一个随机点 C,以便:
- AC = AB
- CAB 角度 = 45 度
从这些可以计算出 BC 长度和 ABC 角,但我无法更进一步。
有什么帮助或建议吗?
解决方案
使用复数
对于点P(x,y)
,表示p = x + i y
相关的复数。
带角度t
和中心的旋转O(0,0)
变成复数的乘法exp(i t) = cos(i t) + i sin(i t)
。
在t
= 45° = π/4 的情况下,这给出了复数r = exp(i π/4) = (sqrt(2)/2)(1+i)
。
可以通过在应用以 为中心的旋转之前减去,然后再次相加来推导出具有角度t
和中心的旋转。A
a
0
a
如果C
是由角度和中心B
旋转的图像,则:t
A
c = r * (b - a) + a
如何进行复数乘法?注意:
(x1 + i y1)(x2 + i y2) = x1 x2 + i^2 y1 y2 + i x1 y2 + i y1 x2
= (x1 x2 - y1 y2) + i (x1 y2 + y1 x2)
a = xa + i ya
我让您使用、b = xb + i yb
和应用前面的公式c = xc + i yc
来r = xr + i yr = sqrt(2)/2 + i sqrt(2)/2
获得:
xc = ???
yc = ???
使用矩阵
用列向量表示点。
带角度t
和中心的旋转O(0,0)
变成矩阵的乘法:
R = (cos(t) -sin(t))
(sin(t) cos(t))
同样,您需要计算C = R (B-A) + A
.
如何执行矩阵乘法?
(s v) (x) = (s x + v y)
(u w) (y) (u x + w y)
C
我们得到与处理复数相同的公式。
推荐阅读
- java - Spring Boot:如何调用“postProcessBeanFactory”并获取所需的 bean
- azure - readDocument 函数中的 documentLink 是什么?
- reactjs - 当用户滚动反应功能组件时如何检测div标签区域?
- flutter - 在页面之间的 TextFormFields 中持久化数据
- r - 在 rshiny 的 for 循环中显示多个表的问题
- javascript - 如何将 HTMLDivElement 解析为模板文字?
- ios - UITextView 文本缩放问题,具有不同的字体样式属性
- reactjs - primereact 对话框未从包装器组件的页脚操作中触发 onHide fn
- amazon-web-services - 如何使用 AWS CLI 获取倒数第二个 AMI ID
- flutter - 在 Flutter Web 中使用语义小部件?