24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1419  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

astringent

铜虫 (著名写手)


[交流] 【求助】关于向量投影的问题

有两个点A(x1,y1,z1),B(x2,y2,z2),现在以由点A和B确定的直线为基准轴,我想求的是当以物体由点C(x3,y3,z3)运动到点D(x4,y4,z4)时,沿AB基准轴方向的位移以及沿垂直于AB基准轴方向的位移。我写了一个程序,劳烦大家帮忙看看,这个程序有没有问题以及能不能实现我的目的?请大家不吝赐教。
program get_projection
implicit none
real x1,y1,z1
real x2,y2,z2
real x3,y3,z3
real x4,y4,z4
real theta
real dx1,dy1,dz1,dx2,dy2,dz2
real px1,py1,pz1,px2,py2,pz2
real r1,r2

! 求基准轴AB
  dx1=x2-x1
  dy1=y2-y1
  dz1=z2-z1
!求CD的位移(前保存的结果)
   dx2=x4-x3
  dy2=y4-y3
  dz2=z4-z3
!求AB和CD的模
  r1=dx1**2+dy1**2+dz1**2
r2=dx2**2+dy2**2+dz2**2
!由点乘公式计算AB与CD所形成的角theta
theta=acos ((dx1*dx2+dy1*dy2+dz1*dz2)/(sqrt(r1)*sqrt(r2)))
!计算沿AB基准轴方向的位移
  px1=dx2*cos(theta)
  py1=dy2*cos(theta)
  pz1=dz2*cos(theta)
!沿垂直于AB基准轴方向的位移
  px2=dx2*sin(theta)
  py2=dy2*sin(theta)
  pz2=dz2*sin(theta)
end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (知名作家)


★ ★
astringent(金币+10): 2011-02-17 02:57:30
余泽成(金币+2): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:35:06
本帖仅楼主可见
4楼2011-02-16 17:10:15
已阅   申请程序强帖   回复此楼   编辑   查看我的主页
查看全部 4 个回答
★ ★
余泽成(金币+2): 谢谢参与应助! 2011-01-21 13:28:24
astringent(金币+5): 2011-01-22 05:27:21
引用回帖:
Originally posted by astringent at 2011-01-21 04:03:30:
有两个点A(x1,y1,z1),B(x2,y2,z2),现在以由点A和B确定的直线为基准轴,我想求的是当以物体由点C(x3,y3,z3)运动到点D(x4,y4,z4)时,沿AB基准轴方向的位移以及沿垂直于AB基准轴方向的位移。我写了一个程序, ...

程序本身语法似乎没有问题,但能不能达到你的目的就不清楚了,这是算法的问题,呵呵……
2楼2011-01-21 09:12:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

leedobb

金虫 (正式写手)


★ ★
astringent(金币+5): 2011-02-17 02:57:21
astringent(金币+10): 2011-02-17 03:11:16
余泽成(金币+2): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:34:56
发现一个小问题,
把下面一段改一下

" px1=dx2*cos(theta)
  py1=dy2*cos(theta)
  pz1=dz2*cos(theta)
!沿垂直于AB基准轴方向的位移
  px2=dx2*sin(theta)
  py2=dy2*sin(theta)
  pz2=dz2*sin(theta)


==》

px1= dx1/sqrt(r1) * sqrt(r2) *cos(theta)
py1= dy1/sqrt(r1) * sqrt(r2) *cos(theta)
pz1= dz1/sqrt(r1) * sqrt(r2) *cos(theta)
!沿垂直于AB基准轴方向的位移
  px2=dx2-px1
  py2=dy2-py1
  pz2=dz2-pz1


原程序里p1求的向量是沿cd方向的,所以不对
p2也沿cd方向。
3楼2011-02-16 16:25:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见