摘要:
题目大意: 让你输入一个n边形的n个点的坐标,要你求这个多边形的重心。解题思路: 用叉积的思想把多边形给分割成多个小三角形,就可以搞定啦。 贴公式:C=sigma(Ai * Ci) / A (i=1…N) Ci=Centroid(△ O Pi Pi+1) = (O + ↑Pi +↑Pi+1 )/... 阅读全文
摘要:
ACM入门之STL简介第二章 STL简介1.STL是什么作为一个C++程序设计者,STL是一种不可忽视的技术。Standard Template Library (STL):标准模板库,更准确的说是 C++ 程序设计语言标准模板库。STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的... 阅读全文
摘要:
题目大意: 让你逆时针输入一个n边行n个点的坐标,然后判断这个n边形的凹凸性。解题思路: 利用两向量的叉积就可以秒掉。不过一开始对叉积理解得还不是很好。所以调试了20分钟,汗!~~水!~~~ 再看一遍叉积吧:计算矢量叉积是与直线和线段相关算法的核心部分。设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉... 阅读全文
摘要:
题目大意: 给你逆时针n个坐标点,要求求一个多边形的面积(多边形可能为凸多边形or凹多边形)。解题思路: 利用叉积的思想,改进版是只要求一个循环的点的关系。S=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+...+xn*y1-yn*x1);代码:#includeconst int MAX=105;using namespa... 阅读全文
摘要:
在此献上一个牛逼网站:计算机几何概述:http://dev.gameres.com/Program/Abstract/Geometry.htm矢量的概念: 如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。 矢量加减法: 设二维矢量P = ( x1, y1 ),... 阅读全文
摘要:
背景知识:判断两线段是否相交: 我们分两步确定两条线段是否相交: (1)快速排斥试验 设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。 (2)跨立试验 如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的... 阅读全文