Ampzz 2011 Cross Spider 计算几何
2024-09-08 09:08:23
原题链接:http://codeforces.com/gym/100523/attachments/download/2798/20142015-ct-s02e07-codeforces-trainings-season-2-episode-7-en.pdf
题意
给你一堆三维点,问你他们是否共面
题解
模板题,套版就好,需要注意的是共线
代码
#include<iostream>
#include<cmath>
#include<cstdio>
#define MAX_N 100005
using namespace std; const double eps=1e-; inline double Sqrt(double a) {
return a <= ? : sqrt(a);
} inline double Sqr(double a) {
return a * a;
} class Point_3 {
public:
double x, y, z; Point_3() { } Point_3(double xx, double yy, double zz) : x(xx), y(yy), z(zz) { } Point_3 operator-(Point_3 a) {
return Point_3(x - a.x, y - a.y, z - a.z);
} double Length() const {
return Sqrt(Sqr(x) + Sqr(y) + Sqr(z));
}
}; Point_3 Det(const Point_3 &a,const Point_3 &b) {
return Point_3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
} double Dot(const Point_3 &a,const Point_3 &b) {
return a.x * b.x + a.y * b.y + a.z * b.z;
} double vlen(Point_3 P){return P.Length();} int dot_inline(Point_3 p1,Point_3 p2,Point_3 p3) {
return vlen(Det(p1 - p2, p2 - p3)) < eps;
} bool zero(double x) {
return fabs(x) < eps;
} Point_3 pvec(Point_3 s1,Point_3 s2,Point_3 s3) {
return Det((s1 - s2), (s2 - s3));
} int dots_onplane(Point_3 a,Point_3 b,Point_3 c,Point_3 d) {
return zero(Dot(pvec(a, b, c), d - a));
} int n;
Point_3 point3[MAX_N]; int main() {
scanf("%d", &n);
for (int i = ; i < n; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
point3[i] = Point_3(a, b, c);
}
if (n <= ) {
cout << "TAK" << endl;
return ;
}
int p = -;
for (int i = ; i < n; i++) {
if (dot_inline(point3[], point3[], point3[i]) == ) {
p = i;
break;
}
}
if (p == -) {
cout << "TAK" << endl;
return ;
}
for (int i = ; i < n; i++) {
if (i == p)continue;
if (dots_onplane(point3[], point3[], point3[p], point3[i]) == ) {
cout << "NIE" << endl;
return ;
}
}
cout << "TAK" << endl;
return ;
}
最新文章
- SilverlightERP&;CRM源码(可用于开发基于Silverlight的CRM,OA,HR,进销存等)
- 关于PHP中Session文件过多的问题
- ceph入门学习链接
- 9张思维导图学习Javascript(转)
- 病毒侵袭持续中 - HDU 3065(AC自动机,判断子串个数)
- javascript事件详细说明
- LINQ to Sql系列二 简单查询和联接查询
- php与mysql之间操作原理
- Django多级评论
- asp.net mvc5 多语言应用
- php函数总结2
- linux convert mp3 to wav and opus to wav
- Spark学习笔记--Spark在Windows下的环境搭建
- 《机器学习实战》第3章决策树程序清单3-1 计算给定数据集的香农熵calcShannonEnt()运行过程
- 如何在Linux上安装服务器管理软件Cockpit
- 【c++】字符串流输出恢复状态问题
- echarts柱状图,改变柱状颜色
- caffe Python API 之中值转换
- Java GlassPane进度条遮罩
- mysql把之前表单进行拆分