关键词不能为空

当前您在: 主页 > 高中公式大全 >

服装公式空间中直线和三角面片求交

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-09-12 11:31
tags:海伦公式

高中学业水平考试成绩查询-20岁


class CVector
{
public:
union
{
float vec[3];
struct { float x,y,z;};
};
}
class CCommonTools
{
public:
CCommonTools();
virtual ~CCommonTools();
public:
static bool ValidPoint(CVector &LinePoint, CVector &LineV,
CVector &TrianglePoint1, CVector
&TrianglePoint2, CVector &TrianglePoint3,CVector &result);
static float Area(float a, float b, float c);
static float Distance(CVector &p1, CVector &p2);
};

CCommonTools::CCommonTools()
{
}
CCommonTools::~CCommonTools()
{
}
计算p1到p2的距离的平方
float CCommonTools::Distance(CVector &p1, CVector &p2)
{
float dist;
dist = ((p2.x-p1.x)*(p2.x-p1.x)
+ (p2.y-p1.y)*(p2.y-p1.y)
+ (p2.z-p1.z)*(p2.z-p1.z));
return (float)sqrt(dist);
}
利用海伦公式求变成为a,b,c的三角形的面积
float CCommonTools::Area(float a, float b, float c)
{
float s = (a+b+c)2;
return (float)sqrt(s*(s-a)*(s-b)*(s-c));
}
bool CCommonTools::ValidPoint(CVector &LinePoint1, CVector &LinePoint2,
CVector &TrianglePoint1, CVector
&TrianglePoint2,CVector &TrianglePoint3,CVector &result)
{
三角形所在平面的法向量
CVector TriangleV;
三角形的边方向向量
CVector VP12, VP13;
直线与平面的交点
CVector CrossPoint;
平面方程常数项
float TriD;
CVector LineV = LinePoint2 - LinePoint1;
*-------计算平面的法向量及常数项-------*
point1->point2
VP12.x = TrianglePoint2.x - TrianglePoint1.x;
VP12.y = TrianglePoint2.y - TrianglePoint1.y;
VP12.z = TrianglePoint2.z - TrianglePoint1.z;
point1->point3
VP13.x = TrianglePoint3.x - TrianglePoint1.x;
VP13.y = TrianglePoint3.y - TrianglePoint1.y;
VP13.z = TrianglePoint3.z - TrianglePoint1.z;
VP12xVP13
TriangleV.x = VP12.y*VP13.z - VP12.z*VP13.y;
TriangleV.y = -(VP12.x*VP13.z - VP12.z*VP13.x);
TriangleV.z= VP12.x*VP13.y - VP12.y*VP13.x;
计算常数项
TriD = -(TriangleV.x*TrianglePoint1.x
+ TriangleV.y*TrianglePoint1.y
+ TriangleV.z*TrianglePoint1.z);
*-------求解直线与平面的交点坐标---------*
* 思路:
* 首先将直线方程转换为参数方程形式,然后代入平面方程,求得参数t,
* 将t代入直线的参数方程即可求出交点坐标
*
float tempU, tempD; 临时变量
tempU = TriangleV.x*LinePoint1.x + TriangleV.y*LinePoint1.y
+ TriangleV.z*LinePoint1.z + TriD;
tempD = TriangleV.x*LineV.x + TriangleV.y*LineV.y + TriangleV.z*LineV.z;
直线与平面平行或在平面上
if(tempD == 0.0)
{
printf(
return false;
}
计算参数t
float t = -tempUtempD;
计算交点坐标
CrossPoint.x = LineV.x*t + LinePoint1.x;
CrossPoint.y = LineV.y*t + LinePoint1.y;
CrossPoint.z = LineV.z*t + LinePoint1.z;
*----------判断交点是否在三角形内部---------*
计算三角形三条边的长度
float d12 = Distance(TrianglePoint1, TrianglePoint2);
float d13 = Distance(TrianglePoint1, TrianglePoint3);
float d23 = Distance(TrianglePoint2, TrianglePoint3);
计算交点到三个顶点的长度
float c1 = Distance(CrossPoint, TrianglePoint1);
float c2 = Distance(CrossPoint, TrianglePoint2);
float c3 = Distance(CrossPoint, TrianglePoint3);
求三角形及子三角形的面积
float areaD = Area(d12, d13, d23); 三角形面积
float area1 = Area(c1, c2, d12); 子三角形1
float area2 = Area(c1, c3, d13); 子三角形2
float area3 = Area(c2, c3, d23); 子三角形3
根据面积判断点是否在三角形内部
if(fabs(area1+area2+area3-areaD) > 0.001)
{
return false;
}

result = CrossPoint;
return true;
}
这几天同学问我如何 判断空间中的线段和三角面片是否相交,我想这个也许对其他人也有点
用处。
上面的代码是判 断两点构成的直线和三点构成的面片是否相交,要判断线段的话,需要再判
断交点是否在线段的两个端点 之间: 交点和两个端点可以形成两个向量,判断这两个向量的方
向即可。

如何解决孩子厌学-我现在只想对你说


陈雨锶-初中好的学习方法


中国四大发明是哪四大发明-云南医药健康职业学院


情话最暖心八个字-初中生能干嘛


考研都考什么-有氧呼吸的三个阶段


外力作用-潍坊学院分数线


黑龙江高考吧-中国第一部电影


brown是什么意思-超级爆笑脑筋急转弯



本文更新与2020-09-12 11:31,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/392825.html

空间中直线和三角面片求交的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文