Matlab中矩阵的三维变换

时间:2014-04-21 16:55:37

标签: matlab matrix 3d rotation

我想要一个 Matlab 解决方案来解决旋转给定矢量的矩阵的 3D变换/旋转初始点更改为某个角度但最终点的方式相同。我有一个P向量来操作这个场景。 将这个矩阵转换为更多版本的建议是什么(更多来自一个父射弹的射弹),以便改变射弹的起始方向并具有恒定的最终位置击中目标。我在2D中的绘图并不是很精确,但我想在3D中使用相同的概念,这里的目标是射弹的最终位置,它在整个场景中都是相同的,但起点是假设从父母射弹衍生的某个角度/方向变形。我希望我能清理案件。 enter image description here

P vector:

P =

  -21.8318   19.2251  -16.0000
  -21.7386   19.1620  -15.9640
  -21.6455   19.0988  -15.9279
  -21.5527   19.0357  -15.8918
  -21.4600   18.9727  -15.8556
  -21.3675   18.9096  -15.8194
  -21.2752   18.8466  -15.7831
  -21.1831   18.7836  -15.7468
  -21.0911   18.7206  -15.7105
  -20.9993   18.6577  -15.6741
  -20.9078   18.5947  -15.6377
  -20.8163   18.5318  -15.6012
  -20.7251   18.4689  -15.5647
  -20.6340   18.4061  -15.5281
  -20.5432   18.3432  -15.4915
  -20.4524   18.2804  -15.4548
  -20.3619   18.2176  -15.4181
  -20.2715   18.1548  -15.3814
  -20.1813   18.0921  -15.3446
  -20.0913   18.0293  -15.3078
  -20.0015   17.9666  -15.2709
  -19.9118   17.9039  -15.2340
  -19.8223   17.8412  -15.1970
  -19.7329   17.7786  -15.1601
  -19.6438   17.7160  -15.1230
  -19.5547   17.6534  -15.0860
  -19.4659   17.5908  -15.0489
  -19.3772   17.5282  -15.0117
  -19.2887   17.4656  -14.9745
  -19.2004   17.4031  -14.9373
  -19.1122   17.3406  -14.9001
  -19.0241   17.2781  -14.8628
  -18.9363   17.2156  -14.8254
  -18.8486   17.1532  -14.7881
  -18.7610   17.0907  -14.7507
  -18.6736   17.0283  -14.7132
  -18.5864   16.9659  -14.6758
  -18.4994   16.9035  -14.6383
  -18.4124   16.8412  -14.6007
  -18.3257   16.7788  -14.5632
  -18.2391   16.7165  -14.5255
  -18.1526   16.6542  -14.4879
  -18.0663   16.5919  -14.4502
  -17.9802   16.5296  -14.4125
  -17.8942   16.4673  -14.3748
  -17.8084   16.4051  -14.3370
  -17.7227   16.3429  -14.2992
  -17.6372   16.2807  -14.2614
  -17.5518   16.2185  -14.2235
  -17.4665   16.1563  -14.1856
  -17.3815   16.0941  -14.1477
  -17.2965   16.0320  -14.1097
  -17.2117   15.9698  -14.0718
  -17.1271   15.9077  -14.0338
  -17.0426   15.8456  -13.9957
  -16.9582   15.7835  -13.9576
  -16.8740   15.7214  -13.9196
  -16.7899   15.6594  -13.8814
  -16.7060   15.5973  -13.8433
  -16.6222   15.5353  -13.8051
  -16.5385   15.4733  -13.7669
  -16.4550   15.4113  -13.7287
  -16.3716   15.3493  -13.6904
  -16.2884   15.2873  -13.6521
  -16.2053   15.2253  -13.6138
  -16.1223   15.1634  -13.5755
  -16.0395   15.1014  -13.5372
  -15.9568   15.0395  -13.4988
  -15.8742   14.9776  -13.4604
  -15.7918   14.9157  -13.4220
  -15.7095   14.8538  -13.3835
  -15.6273   14.7919  -13.3451
  -15.5453   14.7301  -13.3066
  -15.4634   14.6682  -13.2681
  -15.3816   14.6063  -13.2295

1 个答案:

答案 0 :(得分:0)

要定义正确的旋转矩阵R,请使用函数rotx等,或在维基百科上查找公式。

%typically a point is a column vector. To match common definitions, transpose P
P=P'
%get center of rotation
C=P(:,end)
%translate
P=bsxfun(@minus,P,C)
%Rotate
P=R*P
%invert translation
P=bsxfun(@plus,P,C)