【计算几何】点与三角形关系

时间限制: 1 Sec 内存限制: 128 MB

题目描述

已知一个平面坐标系中三角形三个点 A 、 B 、 C A、B、C A、B、C 的坐标,判断另外一个点 D D D 是否在三角形内(点在三角形边上也认为在三角形内)

输入

输入共四行,每行两个数,前三行表示 A 、 B 、 C A、B、C A、B、C 的坐标,第四行为 D D D 的坐标。

输出

输出一个字符串,in表示点D在三角形 A B C ABC ABC 内,out表示点 D D D 在三角形 A B C ABC ABC 外。

样例输入

1.0 2.0
7.0 1.0
7.0 5.0
5.0 3.0

样例输出

in

思路

判断三角形DAB、DBC、DCA面积之和与三角形ABC面积的关系,若相等在里面,否则,在外面。

#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
#define ls (rt<<1)
#define rs (rt<<1|1)
typedef long long ll;
template <typename T>
inline void read(T &x) {x = 0;static int p;p = 1;static char c;c = getchar();while (!isdigit(c)) {if (c == '-')p = -1;c = getchar();}while (isdigit(c)) {x = (x << 1) + (x << 3) + (c - 48);c = getchar();}x *= p;
}
template <typename T>
inline void print(T x) {if (x<0) {x = -x;putchar('-');}static int cnt;static int a[50];cnt = 0;do {a[++cnt] = x % 10;x /= 10;} while (x);for (int i = cnt; i >= 1; i--)putchar(a[i] + '0');puts("");
}
const double eps=1e-6;
const int mod = 1e9+9;
const int inf = 0x3f3f3f3f;
const int maxn = 4e5+10;
struct Point {double x, y;Point(double x = 0, double y = 0) : x(x), y(y) {};Point operator-(const Point &oth) const {return Point(x - oth.x, y - oth.y);}}a,b,c,d;
double dot(const Point &a, const Point &b) {return a.x * b.y - a.y * b.x;
}
inline void work() {scanf("%lf%lf", &a.x, &a.y);scanf("%lf%lf", &b.x, &b.y);scanf("%lf%lf", &c.x, &c.y);scanf("%lf%lf", &d.x, &d.y);double s1 = fabs(dot(b - d, a - d));double s2 = fabs(dot(a - d, c - d));double s3 = fabs(dot(c - d, b - d));double s = fabs(dot(b - a, c - a));if (fabs(s1 + s2 + s3 - s) < eps) puts("in"); else puts("out");
}
int main() {//freopen("1.txt","r",stdin);int T = 1;//read(T);while (T--) {work();}return 0;
}

【计算几何】点与三角形关系相关推荐

  1. poj 2398 Toy Storage (计算几何,判断点和线段关系)

    http://poj.org/problem?id=2398 题意大概是说将一个盒子用n个board分成n+1 部分 然后往里面放toy,给定盒子,board,和toy的坐标 问所有的toy放完后,有 ...

  2. 计算几何(证明三角形内心公式: aOA+bOB+cOC = 0)

    公式说明 其中大写如果没加绝对值符号均为向量. 求三角形内心时会用到公式:aOA+bOB+cOC = 0 其中各点如图所示 证明过程 充分性证明 已知aOA+bOB+cOC = 0,证明O点为内接圆圆 ...

  3. 线段(向量)的计算(判断线段重叠、相交,合并线段,点与线的关系)

    主要内容: 判断两线段是否相交 计算两线段的交叉点 点与直线的位置关系 判断两线段重合并计算其重合部分 判断合并两条线段 说明全都在注释里了,有的方法可能不是最佳,欢迎大家提出建议~~ public ...

  4. ACM 进阶计划~~转

    ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l ...

  5. 今天又看到的Acm指南

    大一上学期: 必学: 2. 简单数学题(推荐"数学"分类20道以上) 需要掌握以下基本算法: a) 欧几里德算法求最大公约数 b) 筛法求素数 c) 康托展开 d) 逆康托展开 e ...

  6. ACM成长之路(干货) 我爱ACM,与君共勉

    前几天在网上看到,转过来时刻督促一下自己. ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l ...

  7. ACM进阶大一到大三

    ACM课程: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原理 l算法设计与分析 大一上学期: 必学: 1. ...

  8. ACM进阶计划(来自于南阳理工学院)

    ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l ...

  9. 机械键盘,让你的手指爱上打字

    很喜欢敲击键盘时清脆的声音和那种节奏感,啪啪啪啪啪啪啪. 90年代初第一次接触电脑,学习五笔字型打字和Basic语言,就很迷恋打字的声音.当时还不懂什么是机械键盘.工作时在单位使用的第一台电脑,方正的 ...

最新文章

  1. 管理云栈将会胜出吗?
  2. FFT和Matlab中操作FFT
  3. maf中anglearc_Oracle MAF中的LOV
  4. spring mvc学习(40):restful的crud实现增加方式
  5. 0414-复利计算再升级
  6. linux标准I/O——流的相关操作
  7. java中生成pdf文件,java 中生成pdf 文件
  8. 65279 php,php头部#65279;去除bom执行文件
  9. excel函数学习系列一
  10. java队列 notify_java使用线程做一个消息队列,wait,notify
  11. matlab 对角线相加,求和、转置和对角线 - MATLAB 系统中文帮助手册
  12. php 查文件sha1 内存不足,PHP 计算文件的 sha1 散列值
  13. 万用表怎么测量电池容量_电池容量测试——白菜价的万用表
  14. 如何把两块硬盘数据迁移到另一块硬盘
  15. 2022年餐饮连锁行业研究报告
  16. 纯JS绘制的QQ LOGO
  17. 王者nba服务器维护,王者NBA新手常用问题FAQ大全
  18. 【信息技术】【2004.05】双耳语音识别研究:声与电的听觉
  19. Java网络编程笔记
  20. java唯一的id_Java:唯一的10位数ID

热门文章

  1. sx1308升压电路
  2. 基于vivado2019的FDMA及DDR3仿真(AXI接口)
  3. Power BI中配置Python运行环境,及相关错误问题解决
  4. 大学物理实验——密立根油滴实验数据计算Python代码
  5. 应聘Java笔试时可能出现问题及其答案
  6. CPU.GPU 安卓设备 内存 硬盘排名 (天梯图) 网址
  7. outlook 日历 桌面_将Microsoft Outlook固定到桌面背景
  8. oracle00011,Oracle EXP-00011 导出数据时空表报错的解决
  9. 你一直在找的 Mac 系统优化工具,可能就是这一款!
  10. 17、GATK使用简介 Part2/2