计算几何入门向

这是一个计算几何入门的教程。

与计算几何密切相关的就是坐标系,坐标系上的点可以用下面数据结构实现。

struct Point
{
	double x,y;
	Point(int x,int y) :x(x),y(y){};
};typedef Point Vector;

向量也是经常需要的,由于和点所需储存的信息相同,可以直接定义为别名。

由于需要使用大量加减乘除,我们可以重载运算符达到很好的使用效果。

挖坑,有时间再写代码

×/

我们也可以用STL的虚数类来实现点和向量。

typedef complex<double> Point;
typedef Point Vector;

double Dot(Vector A,Vector B)
{
	return real(B*conj(A));
}

double Cross(Vector A,Vector B)
{
	return imag(B*conj(A));
}

这样我们就可以直接使用自带的构造函数和重载的运算符,我们只需自己实现点乘和叉乘(同样很简单,设A为a+b i,则Conj(A)=a - b  i),可以思考一下为什么是这样写。

这样实现很简单,很好记忆,但效率并不是很高。

时间: 2024-10-17 13:49:22

计算几何入门向的相关文章

hdu 1086(计算几何入门题——计算线段交点个数)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7167    Accepted Submission(s): 3480 Problem Description Ma

[您有新的未分配科技点]计算几何入门(1):点,向量以及向量的简单应用

在打了一阵数据结构之后,老师表示"今天晚上让学长给你们讲一下计算几何"--然后就死了.jpg 昨天晚上一直在推数学的式子以及回顾讲课的笔记--计算几何特点就是多而杂,即使是入门部分也是如此-- 首先,我们从二维的几何问题开始处理. 我们知道,高中解析几何计算几何的基础是向量(Vector)和点(Point),所以我们先来表示这两个概念: 在计算几何中,点和向量一般用结构体来存储,像这样: 1 struct Point 2 { 3 double x,y,rad; 4 Point(doub

计算几何入门模板(持续更新)

我也算是刚入门计算几何吧,想写一篇入门的模板,让那些和我一样刚入门的人都能看懂就好. 首先要有一些理论知识,这可以百度,我就不多说了,通过百度,你要知道: ①叉积可以判断3个点共线,还可以判断2个点构成直线,第3个点在直线的左边还是右边. ②判断两条线段相交要有2个条件,一个是矩形的什么定理(名字太长,忘了)另一个就是4个点的叉积相乘小于0(也就是异号) 之后就可以看下我收集的简单的模板了. #include <map> #include <set> #include <li

计算几何入门之aizu两题 Projection Reflection

---恢复内容开始--- 使用complex类来写计算几何. 第一题 传送门: 题意给定一直线输入一个点求输入点到该直线射影交点的坐标: = p0到p2向量称为v2,p0到p1向量称为v1 易求得p0到t的向量为 (v2·v1)*(v1的方向向量) . 用复数表示每个点和每个向量,则将v1*(v2的共轭复数)得到的实部就是x1*x2虚部就是y1*y2. 这样求得了p0到t的向量v3,所以ansx=xp0+xv3,ansy=yp0+yv3; 第二题  题意类似,做法相同.不再赘述. 现在贴第二题代

TOYS(计算几何-入门)

题目 '^'代表叉乘 '?'代表点乘 点积:a?b=ax*bx+ay*by 叉积:a^b=ax*by-bx*ay 有了这些,代码就呼之欲出了. 首先read(线段) 然后read(点) 发现满足二分性(点A一定在前t条线后,在后n-t条线前) 于是,二分优化查找 O(mlogn) #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include &l

计算几何入门

poj 3304 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <map> #include <vector> #include <set> #include <string> #include <math.h> using

UVA - 11646 - Athletics Track (计算几何~)

题目地址:点这里 思路:计算几何入门题,首先,两个圆弧是同一个圆的,所以这个圆是矩形的外接圆,那么矩形中心就是圆心,由长宽算出角度和半径(这时用单位长度表示),再算出一个单位长度的实际长度,从而得出长和宽 AC代码: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> using namespace std;

计算几何相关

任意多边形面积-有向面积 凸包算法(Graham扫描法)详解 蒟蒻blog(计算几何入门) 原文地址:https://www.cnblogs.com/Gkeng/p/12079028.html

【COGS &amp; USACO】896. 圈奶牛(凸包)

http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点确定一条线变成一个点从原点o出发的射线!!!! 这就是所谓的玩概念吗 然后用所谓的向量加减,是这些向量起点相同,然后就变成了原点o出发的射线!!! 然后你们还在玩概念!我跪了. (以上纯属蒟蒻吐槽) 好吧,计算几何非常有用的..简化了不少操作. 这里还有啥点积啥叉积.点积就是同一起点的向量(终点)的