乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 77|回复: 5

向量到矩阵

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-8-20 12:33:27 | 显示全部楼层 |阅读模式
如果我有一个向量,如何将其转换为旋转矩阵?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-8-20 18:06:31 | 显示全部楼层
我不认为没有另外两个矢量就能产生给定的矢量,但是如果有这两个矢量,你就可以利用它们之间的角度,绕给定的轴进行正常旋转。
但是,您可以使用矢量作为旋转轴。
向量的问题是它只给出方向和长度,而不是位置,除非它被用作一个点,这仍然只是难题的一部分。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-8-20 19:20:03 | 显示全部楼层
嗨,米克
我将使用向量作为示例,因为我可以稍后计算出翻译
我似乎无法计算出x、y和z轴上的单个旋转矩阵,或者它们的相乘顺序
此网站(http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToMatrix/index.htm)在vba<br>中,具有围绕矢量旋转的强大功能
  1. Function RotateAroundVector(V As Variant, Angle As Double) As Variant
  2.     Dim M(3, 3)
  3.     Dim X As Double, Y As Double, Z As Double
  4.    
  5.     X = V(0): Y = V(1): Z = V(2)
  6.     M(0, 0) = 1 + (1 - Cos(Angle)) * (X * X - 1)
  7.     M(0, 1) = -Z * Sin(Angle) + (1 - Cos(Angle)) * X * Y
  8.     M(0, 2) = Y * Sin(Angle) + (1 - Cos(Angle)) * X * Z
  9.     M(0, 3) = 0
  10.         
  11.     M(1, 0) = Z * Sin(Angle) + (1 - Cos(Angle)) * X * Y
  12.     M(1, 1) = 1 + (1 - Cos(Angle)) * (Y * Y - 1)
  13.     M(1, 2) = -X * Sin(Angle) + (1 - Cos(Angle)) * Y * Z
  14.     M(1, 3) = 0
  15.    
  16.     M(2, 0) = -Y * Sin(Angle) + (1 - Cos(Angle)) * X * Z
  17.     M(2, 1) = X * Sin(Angle) + (1 - Cos(Angle)) * Y * Z
  18.     M(2, 2) = 1 + (1 - Cos(Angle)) * (Z * Z - 1)
  19.     M(2, 3) = 0
  20.    
  21.     M(3, 0) = 0
  22.     M(3, 1) = 0
  23.     M(3, 2) = 0
  24.     M(3, 3) = 1
  25.    
  26.     RotateAroundVector = M
  27.    
  28. End Function

这使我能够在一定程度上复制cad命令行球面坐标线:0,0,0@1
,到目前为止,它工作正常,因为我还没有尝试过很多变化。我仍然不知道如何计算出3轴,因为如果3可以一次相乘,它们似乎会工作,而一旦你乘以x*y,得到的矩阵乘以z可能是错误的,也许,也许。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-8-20 19:38:29 | 显示全部楼层
我的方法是把它分解成几个独立的矩阵来转换当前的坐标系,这样新的z轴就等于矢量,然后构建一个矩阵来绕z轴旋转,这是标准操作。在这个练习中,x和y指向哪个方向并不重要。
然后,您可以将它们相乘,得到最终的矩阵,如果不仔细看,这可能就是您得到的结果,但是如果您将两者分开看,可能会更有意义。
高温。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-8-20 20:01:57 | 显示全部楼层
这听起来像是GO Mick。就像做一个ucs。
谢谢堆,我会去的。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-8-20 20:21:30 | 显示全部楼层
确切地说,您甚至可以使用温度线对象(来自矢量)来获取x / y轴的法线到另一个轴的xproduct。或者,您可以将当前的x / y轴用于相同的目的,但是它们需要额外的x产品来制造新的ucs正交。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 03:47 , Processed in 0.905020 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表