计算几何
文章平均质量分 75
计算机中数据结构、算法设计与分析、计算机图形学等等中需要的数学知识
别看着我笑了
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
任意多边形的三角剖分可视化实现(先划分成单调多边形,再在单调多边形中做三角剖分)
多边形三角剖分是计算几何( Computational Geometry)中的经典问题,起源于一个有趣的艺术画廊问题。目前有很多不同的算法实现了对多边形的三角剖分,三角化算法所追求的目标主要有两个:形状匀称和计算速度快,这也决定了多边形三角剖分的两个不同的应用方向。在形状匀称方面,人们对三角化的性质、 形状最优准则及算法进行了深入研究 ,采用较多的是 Delaunay 准则。这些算法在保证形状匀称的前提下,也尽可能考虑了提高计算速度。在有限元分析等许多应用场合三角形匀称是必须的,对单元质量是有一定要求的。但原创 2020-06-09 14:39:22 · 4580 阅读 · 2 评论 -
计算几何——n条线段求交Bentley-Ottmann算法可视化实现
算法原理:我们对所有左右端点进行X坐标的排序,放入priority queue(优先队列)结构的事件队列中,每个端点的结构体:每个原创 2020-06-04 14:18:17 · 5632 阅读 · 2 评论 -
计算几何——求简单多边形的重心可视化实现
这里首先给出一个公式:平面多边形 X 可以被剖分为 n个有限的简单图形 X1,X2,…Xn,这些简单图形的重心为 Ci,面积为 Ai,那么这个平面多边形的重心点坐标为 (Cx,Cy):一般来说我们可以给多边形进行三角剖分,而n个三角形的面积Ai之和即为多边形的总面积,那么这个公式可以理解为:多边形重心横坐标 = 多边形剖分的每一个三角形重心的横坐标 * 该三角形的面积之和 / 多边形总面积多边形重心纵坐标 = 多边形剖分的每一个三角形重心的纵坐标 * 该三角形的面积之和 / 多边形总面积对于一个原创 2020-05-28 21:56:41 · 1694 阅读 · 0 评论 -
计算几何——凸包问题(上下凸包法)原理及可视化实现
引言:利用归并排序实现凸包算法merge sort:看了这个图一定能回忆起归并排序分而治之的思想,我们为什么不把点集也进行均匀划分去求每一个小的凸包,进而去逐步合成大的凸包呢?说起来容易做起来不要忽略难点和细节:如何由两个子凸包合成一个凸包呢?这里我们主要实现这个步骤。原理(1)既然要把点集进行均匀划分去求每一个小的凸包,进而去逐步合成大的凸包,所以我们有必要去进行一个排序,这里我们采取的是x轴正方向排序:bool cmp(Point a, Point b){ if (a.x == b原创 2020-05-27 20:53:18 · 2236 阅读 · 0 评论 -
计算几何——关于凸包的graham算法的实现并将其可视化,以及一个问题希望大神能解答
graham算法是先要对顶点进行预处理:首先通过找到起始点LTL,然后其他点按照与起始点间极角的大小排序。然后我们利用两个堆栈来对点集中的点进行操作,先是初始化:之后我们会对T逐个元素的扫描看其是否为极点,每次扫描后都会让问题的规模线性减少,也就是必然有一个堆栈中的一个元素被剔除(判断为非极点),最终栈S中剩下的元素就是逆时针排放好的极点集合。代码实现:#include <iostream>#include <vector>#include <map>原创 2020-05-27 10:54:54 · 635 阅读 · 0 评论 -
计算几何——线段和平面的交点的实现
原理:我们用向量sv0点乘法向量N,向量se点乘法向量N,二者相除再乘以向量se,我们就可以得到sv0在法向量上的投影比上se在法向量上的投影,根据相似三角形再乘以向量se即可得到s与线段和平面交点的向量,再加上s坐标即为交点坐标。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标原创 2020-05-26 17:39:59 · 3389 阅读 · 0 评论 -
计算几何——点到线的投影点的实现
原理:先用L的单位向量和w点乘得到投影长度|bP0|,L的单位向量乘以投影长度|bP0|即为向量P0b=b-P0,再加上向量P0即为投影点b。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标 double z; // z坐标(默认为0,如果需要三维点则给z赋值)原创 2020-05-26 17:00:06 · 7750 阅读 · 0 评论 -
计算几何——点到线的距离的实现
原理:利用向量点乘求出P到L上的投影长度PP0,再利用勾股定理求d的程度即可。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标 double z; // z坐标(默认为0,如果需要三维点则给z赋值) Point(double a = 0, double b =原创 2020-05-26 16:47:25 · 1221 阅读 · 0 评论 -
计算几何中基础几何问题的总结和实现(c/c++)
最近在学计算几何,在博客园里看到一篇对于计算几何中比较常见的基础的数据结构和问题的实现代码的集合,但是并没有目录,转载到博客中为各节标题加上目录并加上我个人的一些补充方便日后使用。原文地址https://www.cnblogs.com/zutterhao/p/11694367.html会涉及到一些基本的向量、线性代数、图形学中的知识,都是比较基础的,随着学习还会进行不断的补充。1.包含的头文件#include <iostream>#include <vector>#inc转载 2020-05-24 22:18:11 · 3656 阅读 · 1 评论 -
凸包问题算法总结并将算法过程可视化
什么是凸包?百度百科上是这样说的:凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,…Xn)的凸组合来构造.老师是用一个形象的例子来解释的:在板子上钉钉子,钉了一定数量后用一个橡皮筋撑大到足以包括所有钉子,然后松手,橡皮筋所包围的最外一侧钉子形成的多边形就是这一堆钉子的凸包。这些外侧的钉子称为极点,他们形成的边称为极边。凸包问题正是计算几何的核心,也是开头的第一课,下面总原创 2020-05-11 23:01:53 · 4532 阅读 · 1 评论
分享