网站推广的重要性,网页游戏网站网址,wordpress如何生成网站地图,20个优秀的响应式设计html5网站模板这内容属于计算几何#xff0c;在 3D游戏开发编程基础 或者在游戏开发中的数学和物理算法 这种资料上也可以找到相关的内容和代码。或者更广泛点称为是计算机图形学#xff0c; 接下来我们进入正题#xff0c;如果直线不与平面平行#xff0c;将存在交点。如下图所示#…这内容属于计算几何在 3D游戏开发编程基础 或者在游戏开发中的数学和物理算法 这种资料上也可以找到相关的内容和代码。或者更广泛点称为是计算机图形学 接下来我们进入正题如果直线不与平面平行将存在交点。如下图所示已知直线L过点mm1m2m3且方向向量为VLv1v2v3平面P过点nn1n2n3且法线方向向量为VPvp1vp2vp3 求得直线与平面的交点O的坐标xyz 将直线方程写成参数方程形式即有 x m1 v1 * ty m2 v2 * t (1)式z m3 v3 * t 将平面方程写成点法式方程形式即有 vp1 * (x – n1) vp2 * (y – n2) vp3 * (z – n3) 0 (2)式 则直线与平面的交点一定满足式1式和2式联立两式求得 t ((n1 – m1)*vp1(n2 – m2)*vp2(n3 – m3)*vp3) / (vp1* v1 vp2* v2 vp3* v3) (3)式 如果3式中分母(vp1* v1 vp2* v2 vp3* v3)为0则表示直线与平面平行即直线与平面没有交点。求解出t后然后将t代入式1即可求得交点O的坐标xyz。定义一个求直线与平面交点坐标的函数CalPlaneLineIntersectPoint() 其代码如下 1 /// summary2 /// 求一条直线与平面的交点3 /// /summary4 /// param nameplaneVector平面的法线向量长度为3/param5 /// param nameplanePoint平面经过的一点坐标长度为3/param6 /// param namelineVector直线的方向向量长度为3/param7 /// param namelinePoint直线经过的一点坐标长度为3/param8 /// returns返回交点坐标长度为3/returns9
10 private float[] CalPlaneLineIntersectPoint(float[] planeVector, float[] planePoint, float[] lineVector, float[] linePoint)
11 {
12 float[] returnResult new float[3];
13 float vp1, vp2, vp3, n1, n2, n3, v1, v2, v3, m1, m2, m3, t,vpt;
14 vp1 planeVector[0];
15 vp2 planeVector[1];
16 vp3 planeVector[2];
17 n1 planePoint[0];
18 n2 planePoint[1];
19 n3 planePoint[2];
20 v1 lineVector[0];
21 v2 lineVector[1];
22 v3 lineVector[2];
23 m1 linePoint[0];
24 m2 linePoint[1];
25 m3 linePoint[2];
26 vpt v1 * vp1 v2 * vp2 v3 * vp3;
27 //首先判断直线是否与平面平行
28 if (vpt 0)
29 {
30 returnResult null;
31 }
32 else
33 {
34 t ((n1 - m1) * vp1 (n2 - m2) * vp2 (n3 - m3) * vp3) / vpt;
35 returnResult[0] m1 v1 * t;
36 returnResult[1] m2 v2 * t;
37 returnResult[2] m3 v3 * t;
38 }
39 return returnResult;
40 }
41 参考了http://m.blog.csdn.net/article/details?id6688080 转载于:https://www.cnblogs.com/www-caiyin-com/p/6758548.html