博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ACM_几何] F. 3D Triangles (三维三角行相交)
阅读量:5134 次
发布时间:2019-06-13

本文共 1864 字,大约阅读时间需要 6 分钟。

题目大意:给出三维空间两个三角形三个顶点,判断二者是否有公共点,三角形顶点、边、内部算三角形的一部分。
解题思路:见模板

 

//*******************************************************************************#include
#include
#include
#include
using namespace std;#define eps 1e-8int dcmp(double x){ if(fabs(x)
0)return false;//交点不在线段AB上 p=A+(B-A)*t; //计算交点 return PointInTri(p,p0,p1,p2); //判断交点是否在三角形内 }}/*到直线的距离double DistanceToLine(Point3 p,Point3 A,Point3 B){ Vector3 v1=B-A,v2=p-A; return Length(Cross(v1,v2))/Length(v1);}//点p到线段AB的距离double DistanceToSegment(Point3 p,Point3 A,Point3 B){ if(A==B)return Length(p-A); Vector3 v1=B-A,v2=p-A,v3=p-B; if(dcmp(Dot(v1,v2))<0)return Length(v2); else if(dcmp(Dot(v1,v3))>0)return Length(v3); else return Length(Cross(v1,v2))/Length(v1);}//返回,,的混合积,他等于四面体邮箱面积的6倍double Volume6(Point3 A,Point3 B,Point3 C,Point3 D){ return Dot(D-A,Cross(B-A,C-A));}*///判断两个三角形是否有公共点bool TriTriIntersection(Point3* T1,Point3* T2){ Point3 p; for(int i=0;i<3;i++){ if(TriSegIntersection(T1[0],T1[1],T1[2],T2[i],T2[(i+1)%3],p))return true; if(TriSegIntersection(T2[0],T2[1],T2[2],T1[i],T1[(i+1)%3],p))return true; } return false;}//*******************************************************************************int main(){ int T;cin>>T; while(T--){ Point3 T1[3],T2[3]; for(int i=0;i<3;i++)cin>>T1[i].x>>T1[i].y>>T1[i].z; for(int i=0;i<3;i++)cin>>T2[i].x>>T2[i].y>>T2[i].z; cout<<(TriTriIntersection(T1,T2) ? "1\n":"0\n"); }return 0;}//*******************************************************************************
View Code

 

转载于:https://www.cnblogs.com/zjutlitao/p/3246491.html

你可能感兴趣的文章
redisson笔记
查看>>
c语言运算优先级与结合方向的问题
查看>>
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "FileSize"
查看>>
html常用标签总结
查看>>
VMware ESXi 虚拟机硬盘格式:精简置备、厚置备延迟置零、厚置备置零
查看>>
洛谷 P2764(最小路径覆盖=节点数-最大匹配)
查看>>
iphone safari不支持position fixed的解决办法
查看>>
Mysql err 1055
查看>>
Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器 (转载)
查看>>
Python-装饰器
查看>>
dsu + lca
查看>>
软工网络15个人作业4——alpha阶段个人总结
查看>>
Linux基础-2文件及目录管理
查看>>
python re.sub
查看>>
《程序是怎样跑起来的》第二章
查看>>
TP5图片上传
查看>>
elasticsearch集群搭建
查看>>
【AtCoder】ARC090
查看>>
运用runtime与AOP实现oc中的kvo
查看>>
使用ssm框架开发dao层所需的配置文件(applicationContext.xml)和jdbc.properties文件
查看>>