【计算几何】点与三角形关系
【计算几何】点与三角形关系
时间限制: 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;
}
【计算几何】点与三角形关系相关推荐
- poj 2398 Toy Storage (计算几何,判断点和线段关系)
http://poj.org/problem?id=2398 题意大概是说将一个盒子用n个board分成n+1 部分 然后往里面放toy,给定盒子,board,和toy的坐标 问所有的toy放完后,有 ...
- 计算几何(证明三角形内心公式: aOA+bOB+cOC = 0)
公式说明 其中大写如果没加绝对值符号均为向量. 求三角形内心时会用到公式:aOA+bOB+cOC = 0 其中各点如图所示 证明过程 充分性证明 已知aOA+bOB+cOC = 0,证明O点为内接圆圆 ...
- 线段(向量)的计算(判断线段重叠、相交,合并线段,点与线的关系)
主要内容: 判断两线段是否相交 计算两线段的交叉点 点与直线的位置关系 判断两线段重合并计算其重合部分 判断合并两条线段 说明全都在注释里了,有的方法可能不是最佳,欢迎大家提出建议~~ public ...
- ACM 进阶计划~~转
ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l ...
- 今天又看到的Acm指南
大一上学期: 必学: 2. 简单数学题(推荐"数学"分类20道以上) 需要掌握以下基本算法: a) 欧几里德算法求最大公约数 b) 筛法求素数 c) 康托展开 d) 逆康托展开 e ...
- ACM成长之路(干货) 我爱ACM,与君共勉
前几天在网上看到,转过来时刻督促一下自己. ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l ...
- ACM进阶大一到大三
ACM课程: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原理 l算法设计与分析 大一上学期: 必学: 1. ...
- ACM进阶计划(来自于南阳理工学院)
ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l ...
- 机械键盘,让你的手指爱上打字
很喜欢敲击键盘时清脆的声音和那种节奏感,啪啪啪啪啪啪啪. 90年代初第一次接触电脑,学习五笔字型打字和Basic语言,就很迷恋打字的声音.当时还不懂什么是机械键盘.工作时在单位使用的第一台电脑,方正的 ...
最新文章
- 管理云栈将会胜出吗?
- FFT和Matlab中操作FFT
- maf中anglearc_Oracle MAF中的LOV
- spring mvc学习(40):restful的crud实现增加方式
- 0414-复利计算再升级
- linux标准I/O——流的相关操作
- java中生成pdf文件,java 中生成pdf 文件
- 65279 php,php头部#65279;去除bom执行文件
- excel函数学习系列一
- java队列 notify_java使用线程做一个消息队列,wait,notify
- matlab 对角线相加,求和、转置和对角线 - MATLAB 系统中文帮助手册
- php 查文件sha1 内存不足,PHP 计算文件的 sha1 散列值
- 万用表怎么测量电池容量_电池容量测试——白菜价的万用表
- 如何把两块硬盘数据迁移到另一块硬盘
- 2022年餐饮连锁行业研究报告
- 纯JS绘制的QQ LOGO
- 王者nba服务器维护,王者NBA新手常用问题FAQ大全
- 【信息技术】【2004.05】双耳语音识别研究:声与电的听觉
- Java网络编程笔记
- java唯一的id_Java:唯一的10位数ID
热门文章
- sx1308升压电路
- 基于vivado2019的FDMA及DDR3仿真(AXI接口)
- Power BI中配置Python运行环境,及相关错误问题解决
- 大学物理实验——密立根油滴实验数据计算Python代码
- 应聘Java笔试时可能出现问题及其答案
- CPU.GPU 安卓设备 内存 硬盘排名 (天梯图) 网址
- outlook 日历 桌面_将Microsoft Outlook固定到桌面背景
- oracle00011,Oracle EXP-00011 导出数据时空表报错的解决
- 你一直在找的 Mac 系统优化工具,可能就是这一款!
- 17、GATK使用简介 Part2/2