如何解决从直线和角度计算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
的公式与复数相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。