计算几何习题集

poj 1269 (直线交点):

  这道题是给两条直线(输入直线上的两个点),然后问你两条直线是相交、重合还是平行。

  很简单一道题。不过用g++测试的话double要用%f输出。不知道为什么。

  (求交点的模板感觉很科学)

 1 #include <cstdio>
 2 #include <iostream>
 3 #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
 4 #define FE(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
 5 #define rep(i,n) for(int i=0;i<(n);i++)
 6 #define zero(x) ((x>=0?x:-x)<1e-10)
 7 #define debug(x) cout<<#x<<" = "<<x<<endl
 8 using namespace std;
 9
10 struct pot{
11     double x,y;
12     pot() { x=0; y=0; }
13     pot(double _x, double _y):x(_x),y(_y){};
14 };
15 double cross(pot a,pot b) { return a.x*b.y-a.y*b.x; }
16 pot to_v(pot a,pot b) { pot c=pot(b.x-a.x,b.y-a.y); return c; }
17 pot intersection_line(pot u1,pot u2,pot v1,pot v2)
18 {
19     pot ret = u1;
20     double t = ((u1.x-v1.x)*(v1.y-v2.y) - (u1.y-v1.y)*(v1.x-v2.x))
21              / ((u1.x-u2.x)*(v1.y-v2.y) - (u1.y-u2.y)*(v1.x-v2.x));
22     ret.x += (u2.x-u1.x) * t;
23     ret.y += (u2.y-u1.y) * t;
24     return ret;
25 }
26
27 pot a[5];
28 int main()
29 {
30     puts("INTERSECTING LINES OUTPUT");
31     int n; scanf("%d",&n);
32     for (pot ans;n--;)
33     {
34         FOR (i,1,4) scanf("%lf%lf",&a[i].x,&a[i].y);
35         if (zero(cross(to_v(a[1],a[2]),to_v(a[3],a[4]))))
36             if (zero(cross(to_v(a[1],a[2]),to_v(a[1],a[3])))) puts("LINE");
37             else puts("NONE");
38         else ans=intersection_line(a[1],a[2],a[3],a[4]),printf("POINT %.2f %.2f\n",ans.x,ans.y);
39     }
40     puts("END OF OUTPUT");
41     return 0;
42 }
43 /*pot intersection_line(pot u1,pot u2,pot v1,pot v2)
44 {
45     pot ret;
46     double a1=u1.y-u2.y,b1=u2.x-u1.x,c1=u1.y*(u1.x-u2.x)-u1.x*(u1.y-u2.y);
47     double a2=v1.y-v2.y,b2=v2.x-v1.x,c2=v1.y*(v1.x-v2.x)-v1.x*(v1.y-v2.y);
48     ret.y=(a1*c2-a2*c1)/(a2*b1-a1*b2);
49     ret.x=(b1*c2-b2*c1)/(a1*b2-a2*b1);
50     return ret;
51 }*/

萌萌的代码~

计算几何习题集,布布扣,bubuko.com

时间: 2024-10-15 18:40:30

计算几何习题集的相关文章

!HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&amp;线段与点的关系&amp;暴力枚举)

题意:小明要买三座房子,这三个房子构成一个三角形,已知n个房子的坐标,任何三个房子都不在一条直线上,又已知有m个宝藏的坐标,问房子构成的三角形内有奇数个宝藏的三角形有多少个.数据范围:n(3~100),m(1~1000) 分析: 简单的计算几何.记住这题的做法. 三角形内的点的个数=上面的线段下面的点的个数 -- 下面两条线段下面的点的个数(或者下面一条线段减上面两条线段,看具体位置情况,所以直接取绝对值就好) n个点有n(n-1)/2条线段,不超过1W,枚举每条线段,再枚举每个宝藏的坐标(10

Opengl绘制计算几何库CGAL三角剖分结果的Demo

Ubuntu下改编了一个用CGAL计算输入点的三角剖分,并用OpenGL显示结果的C++程序. 该Demo可作为一个计算几何及绘图的框架. 代码如下: //编译命令:g++ spatial_sort.cpp -lglut -lGL -lGLU -lCGAL -lCGAL_Core -lgmp #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>   #include <CGAL/Triangulation_eucl

Ubuntu下安装cgal4.5.2计算几何库

摘要:cgal是一个开源的计算几何库, 博文记录了其编译.安装和使用方法. 1 库下载 站点:http://www.cgal.org/ 下载:https://gforge.inria.fr/frs/download.php/file/34514/CGAL-4.5.2.zip 2 解压缩.编译与安装 shell下进入解压文件夹 1)库配置文件生成命令: cmake . 提示缺少gmp和mpfr库 安装缺少的库: sudo apt-get install libgmp-dev libmpfr-dev

UVA 11178 Morley&#39;s Theorem 计算几何

计算几何: 最基本的计算几何,差积  旋转 Morley's Theorem Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description Problem D Morley's Theorem Input: Standard Input Output: Standard Output Morley's theorem states that that the line

计算几何导论

计算几何 计算几何是一门兴起于二十世纪七十年代末的计算机科学的一个分支,主要研究解决几何问题的算法.在现代工程和数学领域,计算几何在图形学.机器人技术.超大规模集成电路设计和统计等诸多领域有着十分重要的应用. 计算几何问题的输入一般是关于一组几何对象的描述,如一组点.一组线段,或者一个多边形的按逆时针顺序排列的一组顶点.输出常常是对有关这些对象的问题的回答,如是否直线相交,是否为一个新的几何对象,如顶点集合的凸包. 本文将介绍一些平面上的计算几何算法.在这些算法中,每个输入对象都是一组点{p1,

HDU 6206 Apple ( 高精度 &amp;&amp; 计算几何 &amp;&amp; 三点构圆求圆心半径 )

题意 : 给出四个点,问你第四个点是否在前三个点构成的圆内,若在圆外输出"Accepted",否则输出"Rejected",题目保证前三个点不在一条直线上. 分析 : 简单的计算几何问题,如果能够知道圆心和半径(Radius)以及第四个点和圆心的距离(Distance),我们就能够判断第四个点是否在圆外,例如Distance > Radius则在圆外.三点构圆 的圆心和半径是能够推导出公式的 (参考==> http://blog.csdn.net/dea

【您有新的未分配天赋点】计算几何:从被纸笔支配的恐怖到达被代码支配的恐怖

开坑时间:2017/8/5 21:25 今天呢$lgl$神犇终于打开了坑害了无数英雄好汉的新陷阱的盖子新世界的大门:计算几何.尽管再不愿意但该来的还是要来.于是我就这么踏上了这条贼船--(缓更,勿催) 本文将对现阶段所需的四项知识做出一些主观的感性分析,希望大家能够就此感性理解一下. 一.凸包 凸包,顾名思义就是把给定点围在里面的最小凸多边形.这个东西一般采用扫描方法进行处理,时间瓶颈为排序的$O(nlogn)$. 链接:http://www.cnblogs.com/Loser-of-Life/

计算几何中的精度问题

转自:北岛知寒 计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了.精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,简直"画龙点睛".这些年的题目基本是朝着越来越不卡精度的方向发展了,但是也不乏一些奇怪的题,另外有些常识不管题目卡不卡,都是应该知道的.今天我就开膛回顾下见过且还有印象的精度问题,由于本人见识和记忆均有限,望各位大神瞄过后不吝补充.另外,为了弥补我匮乏的文思,我可能乱扯些不太相关或者尽人皆知的东西凑数.那么,现在开始.

[BZOJ 1027][JSOI2007]合金(计算几何+Floyd最小环)

Description 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金的铁铝锡比重为用户所需要的比重. 现在,用户给出了n种他们需要的合金,以及每种合金中铁铝锡的比重.公司希望能够订购最少种类的原材料,并且使用这些原材料可以加工出用户需要的所有种类的合金. Solution 今天考试T3的70分算法似乎是这道原题(然而我没做过QwQ) 思路值得学习一下(