计算直线与平面交点的JavaScript脚本代码

已知直线过点 m(x_m, y_m, z_m ), 其方向向量为 V_l( vl_x,  vl_y,  vl_z ).
平面过点 n(x_n, y_n, z_n), 法线方向为 V_p( vp_x,  vp_y,  vp_z ).

直线的参数方程为

x = x_m + vl_x * t 
y = y_m + vl_y * t 
z = z_m + vl_z * t 

平面方程为:
vp_x * (x - x_n) + vp_y * (x - x_n) +  vp_z * (x - x_n)  = 0


将直线参数方程和平面方程联立求解得

t = ( ( x_n - x_m ) * vp_x + ( y_n - y_m ) * vp_y + ( z_n - z_m ) * vp_z ) 
/ ( vp_x * vl_x  + vp_y * vl_y + vp_z * vl_z ) 
 

将 t 带入直线方程中,就可求得交点坐标。   

//
//
//  计算直线与平面交点的JavaScript脚本代码  
//  参考http://blog.csdn.net/abcjennifer/article/details/6688080
//

function CalPlaneLineIntersectPoint( planeVector,  planePoint,  lineVector,  linePoint)  
{  
    var returnResult = Array();  
    var vp1, vp2, vp3, n1, n2, n3, v1, v2, v3, m1, m2, m3, t,vpt;  
    vp1 = planeVector[
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值