作者changkh (留学生涯)
看板ck47th320
标题Re: [问题] 空间几何的问题
时间Mon Apr 25 23:31:34 2005
※ 引述《puberty (飘泊)》之铭言:
: ※ 引述《changkh (留学生涯)》之铭言:
: : 我有一个空间几何的问题:
: : 在三度空间中给定两个线段,以(x, y, z)来表示端点,所以有四个点。
: : 已知这两个线段在x-y平面的投影相交,所以有"上""下"的关系。
: : 问如何"不用除法"决定哪个线段在上哪个线段在下?
: : 一个简单的解法是用 x-y平面解交点,代入线段方程式解z。
: : 但是这个方法会用到除法。
: : 印象中好像可以用外积来做,但是高中数学课本没带来。
: : 有没有人知道怎麽做的呢?
: 暴力硬算! :(
: 第一个线段 : x = x1 + a1 * s 第二个线段 : x = x2 + a2 * t
: y = y1 + b1 * s y = y2 + b2 * t
: z = z1 + c1 * s z = z2 + c2 * t
: u = ( a1, b1, c1 ), v = ( a2, b2, c2 )
: A = ( x1, y1, z1 ), B = ( x2, y2, z2 )
: 解两线间最短距离点的坐标 :
: F(s,t)=(su+A-tv-B).(su+A-tv-B)
: dF/ds = 2(su+A-tv-B).u=0
: dF/dt =-2(su+A-tv-B).v=0 解得 Qs=[(B-A).u](v.v)-[(B-A).v](u.v)
: Qt=[(B-A).u](u.v)-[(B-A).v](u.u)
: 其中 Q = (u.u)(v.v)-(u.v)^2 > 0
: 所以算 Q[ ( c1 * s + z1 ) - ( c2 * t + z2 ) ] 的符号
: 正就是第一个线段在上; 负就是第二个线段在上 :p
: 不想用除法....就只好把解硬算出来代了
谢谢你啦。
受到你的启发,後来我直接解两线交点(x,y)代入後求z1+c1*s-z2+c2*t,
然後同乘分母和0比大小,这样就不用用到除法了。
做出来的式子是(b1*a2-a1*b2)(z2-z1)+((x1-x2)*b1-(y1-y2)*a1)*c2
-((x1-x2)*b2-(y1-y2)*a2))*c1
如果(b1*a2-a1*b2)>0,那麽若上式 >0,l2在l1上面。
如果(b1*a2-a1*b2)<0,那麽若上式 >0,l2在l1下面。
如果b1*a2-a1*b2=0,那两线在x-y平面重合。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 68.43.196.35
※ 编辑: changkh 来自: 68.43.196.35 (04/25 23:33)