回 帖 发 新 帖 刷新版面

主题:请教向量投影的问题

有两个点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

回复列表 (共9个回复)

沙发

没仔细看对不对,但你的写法太罗嗦了,为什么不用数组运算?

板凳

real :: a(3), b(3), c(3), d(3)
real :: ab(3), cd(3)
real :: p1(3), p2(3)

...

ab = b - a
cd = d - c

! 投影方向分量
p1 = dot_product( ab, cd ) * ab / dot_product(ab,ab)

! 垂直方向分量
p2 = cd - p1

3 楼

是这样的,我现在写的这个投影的程序是根据前一步计算结果来进行的,实际的计算要读多个在不同时刻A,B,C,D点的坐标,由于本人是初学,就采取了比较笨的方法,呵呵。
感谢你的回复,能不能帮我看看算法上有没有错误呢?

4 楼

[quote]是这样的,我现在写的这个投影的程序是根据前一步计算结果来进行的,实际的计算要读多个在不同时刻A,B,C,D点的坐标,由于本人是初学,就采取了比较笨的方法,呵呵。
感谢你的回复,能不能帮我看看算法上有没有错误呢?[/quote]

你的算法不对
按照你的方法,计算出来的(px1,py1,pz1)(px2,py2,pz2)两个矢量都是和矢量(dx2,dy2,dz2)平行的

5 楼

[quote][quote]是这样的,我现在写的这个投影的程序是根据前一步计算结果来进行的,实际的计算要读多个在不同时刻A,B,C,D点的坐标,由于本人是初学,就采取了比较笨的方法,呵呵。
感谢你的回复,能不能帮我看看算法上有没有错误呢?[/quote]

你的算法不对
按照你的方法,计算出来的(px1,py1,pz1)(px2,py2,pz2)两个矢量都是和矢量(dx2,dy2,dz2)平行的[/quote]
为什么是错的呢?能不能指点一下.
另外,能不能帮我写一下这个程序,最好用dx,dy,dz形式表示。多谢了。

6 楼

我上面写的有,你没看吗

px1=p1(1)
py1=p1(2)
pz1=p1(3)

px2=p2(1)
py2=p2(2)
pz2=p2(3)

这样不就行了吗?

7 楼

[quote]我上面写的有,你没看吗

px1=p1(1)
py1=p1(2)
pz1=p1(3)

px2=p2(1)
py2=p2(2)
pz2=p2(3)

这样不就行了吗?
[/quote]
看到了,但是有一点没太明白。就是这个公式:
! 投影方向分量
p1 = dot_product( ab, cd ) * ab / dot_product(ab,ab)
根据点乘公式有:
AB点乘CD=|AB|*|CD|*costheta,那么CD在AB上的投影为P=AB点乘CD再除以AB的模,你写公式是什么意思啊,麻烦 指点一下,多谢。

8 楼

我明白了,多谢你的指导。

9 楼




This [url=http://www.mmopowerlevel.net]wow power leveling[/url] guide originally appeared on the official [url=http://www.mogxe.com/PowerLevel.php?gid=1]wow power leveling[/url] World of Warcraft [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]wow power leveling[/url] community forum. It is an older guide that I believe was last [url=http://www.mmopowerlevel.net/gamelist.php?fid=7656]aion kina[/url] updated during the last week of [url=http://www.mogxe.com]buy wow gold[/url] January. With that being said, this [url=http://www.mmopowerlevel.net/buy.php]gold in wow[/url] guide is AWESOME! It's not only a fantastic guide for Warriors but for anyone [url=http://www.mmopowerlevel.net/buy.php]wow gold eu[/url] that wants to know how threat truly ticks in this game. 
This guide should be consider a "classic guide" and [url=http://www.mmopowerlevel.net/buy.php]wow gold cheap[/url] probably will later on. Some warriors after reading this guide were able to increase [url=http://www.mmopowerlevel.net/powerlist.php?fid=7422]cheap aion power leveling[/url] their warrior skills by 100%. That has been said quite a few times by quite [url=http://www.mmopowerlevel.net/gamelist.php?fid=4044]EVE ISK[/url] a few players! Anyway, it is kinda long but here it is! 

我来回复

您尚未登录,请登录后再回复。点此登录或注册