自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

主要研究图形学相关领域

个人网站主页:https://fengkeyleaf.com

  • 博客(144)
  • 收藏
  • 关注

原创 北大C++程序设计编程作业答案+解析·合集

※ 本文之中如有错误和不准确的地方,欢迎大家指正哒~

2024-07-09 03:48:35 304

原创 北大C++程序设计编程作业答案+解析·继承

以下习题答案全部通过OJ,使用编译器为:G++(9.3(with c++17))

2024-07-04 05:04:25 738

原创 北京大学C++程序设计编程作业答案+解析·运算符重载

以下习题答案全部通过OJ,使用编译器为:G++(9.3(with c++17))

2024-07-02 09:56:13 728

原创 北京大学C++程序设计编程作业答案+解析·类和对象提高

以下习题答案全部通过OJ,使用编译器为:G++(9.3(with c++17))

2024-06-30 00:40:45 301

原创 北京大学C++程序设计编程作业答案+解析·类和对象基础

以下习题答案全部通过OJ,使用编译器为:G++(9.3(with c++17))

2024-06-29 21:36:09 252

原创 北京大学C++程序设计编程作业答案+解析·从C走进C++

注意函数返回值是数组a在下标i的值,不是指针,如果我们只返回该值,而不是引用,在外部修改函数的返回值也只是修改该返回值自身,与数组a存储的值没有关联,因为没有返回引用,程序会对返回值进行复制,而不是返回值本身。解析:swap函数需要交换两个参数的值,但是调用函数的时候没有传入指针,所以我们很容易想到需要传入变量的引用,这样在函数内部变更参数的值,才能影响函数外部的变量的值,否则只会影响函数参数的值,而外部则不受影响。所以,这里的swap函数的参数需要:1)必须是指针类型,和外部传入的参数一致;

2024-06-28 03:32:53 817

原创 如何生成/更新SSL证书,并与Azure自定义域名绑定

如何生成/更新SSL证书,并与Azure自定义域名绑定

2023-06-27 00:03:58 447

原创 清华计算几何大作业(十):CG2017 PA5-2 FruitNinja(水果忍者)· 下

Half-plane Intersection算法非常的直接,使用的是Divide-and-Conquer(分治)进行计算,每次递归返回时,我们需要使用MapOverlay来计算半平面的交集(这个交集必为Covexll),但这个交集和之前的MapOverlay不太一样,这里的交集结果可能是平面,线段,或者是点。这个方法非常的直接,这里使用教材上面的图例。这里给到题目网页上的一个实例的可视化结果,左边的结果是线段在对偶平面求得的半平面相交区域,右边的结果是可视化解集中的其中一个解(一条满足题意的直线)

2022-08-20 09:49:19 594 1

原创 清华计算几何大作业(十):CG2017 PA5-2 FruitNinja(水果忍者)· 上

计算几何算法:1)Map Overlay,详见教材 2.3 计算子区域划分的叠合(2.3 Computing the Overlay of Two Subdivisions) 和 4.2 半平面求交 (4.2 Half-Plane Intersection) - 本章节主要讨论算法;2)4 线性规划:铸模制造 (Linear ProgrammingManufacturing with Molds) - 最优算法

2022-08-20 04:41:13 353

原创 124. Binary Tree Maximum Path Sum(二叉树中的最大路径和)

注意,当前Node应该返回Node在MaximumPath这种情况下的最大值,且其Parent也参与到MaximumPath之中,1)种的四种情况,只有1.4是不包含Node.parent在MaximumPath的,所以我们只需要返回1.1和1.2和1.3,三者之中的最大值即可。从这点也说明,MaximumPath一定向下取,就不能返回,所以当我们包含某个Node,那么我们只能包含其左孩子或右孩子,而不能两者都取到,否则该Node会被重复计算两次,不符合题目要求。那么具体应该怎么做呢?......

2022-07-23 04:02:10 211

原创 334. Increasing Triplet Subsequence(递增的三元子序列)

比如输入案例[1,0,2,0,-1,3],最后最小值为-1,次小值为2,最大值为3,但(-1,2,3)并不满足题意,因为-1和2的下标不满足,但在更新最小值为-1之前,我们找到了一个比-1大的最小值0,从而找到了下标m,也能找到满足的题意得三元组。当i>j时形成的三元组满足题意,当且仅当存在下标m...

2022-07-22 03:27:20 168

原创 MapOverlay & Boolean Operations 实现讲解(PS/Photoshop布尔运算底层算法)

从理论上来说,上述所有操作都可以SegmentIntersection算法中解决,但是这样做,Vertex和Edge相交会有问题,因为Edge会被分割成两段,会破坏原来Segment的输入集的范围,导致后续的操作变得困难。PS中的布尔运算可以说是设计师们非常强大和实用的工具之一,笔者探究计算几何的旅程之中,发现了这个算法设计得非常的精妙,所以尝试了实现它!2)Vertex和Vertex必然至少有一条完全重合的Edge,我们只保留其中一个Vertex,去除重合Edge,重定向其他Edge;...

2022-07-15 22:20:50 380

原创 清华计算几何大作业(九):CG2017 PA2-1 Shortest Path in The Room (房间中的最短路径)

这里给到必要观看的视频课程章节,这些内容对理解和实现 Triangulation 算法至关重要,标记有绿色√为必看章节:关于这道题的思路分析,笔者在小破站上面发布了系列讲解视频,相关内容视频都有涉及,大家可以观看相关视频,这里就不再赘述:※ 这部分的伪代码是笔者自己翻译的,所以和中文教材上面有些许不同3.2 三角拆分4. 可视化结果示例这里展示一个相对复杂的案例,输入多边形为正交多边形( Orthogonal Polygon ),且为迷宫多边形,用这个案例大家可以体会到整个算法项目可以应用到很多领

2022-07-13 19:45:59 259

原创 清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 下 | Voronoi Diagrams 构造实现讲解

在生成Voronoi Diagrams之后,我们需要查找某个点位于哪个Voronoi Cell之中,这个操作如果不借助Point Location,我们需要遍历所有Voronoi Cell,查询时间复杂度将会Unacceptable!那么我们可以借助Point Location算法将Voronoi Diagrams分割成一个个Trapezoid。我们在Trapezoidal Map之中进行Point Location,之后查找当前Trapzoid隶属于哪一个Voronoi Cell,即可完成题目要求的高效查

2022-07-13 18:00:38 350

原创 清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 中 | Voronoi Diagrams 构造实现讲解

将无限半边(Infinite Half-edge)连接到Bounding Box的思路也不难,首先,我们先将Bounding Box也看成一个方形的DCEL结构,然后计算出无限半边与边界边的节点,然后进行连接即可:但在进行连接的时候,需要注意四点:首先,在结束计算Voronoi Diagrams之后,Status Tree中存储的中间节点里面就包含了所需连接到R上的Infinite Half-edges,比如之前的例子:大家可以看到右侧Status Tree的中间节点刚好存储了需要进行连接的无限半边:e10

2022-07-13 15:23:24 175

原创 清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 上 | Voronoi Diagrams 构造实现讲解

这里给到必要观看的视频课程章节,这些内容对理解和实现 Voronoi Diagrams 算法至关重要,标记有绿色√为必看章节:问题描述:CG2017 PA2-2 Find Dancing Partners (寻找舞伴)这个作业属于最高难度一档,Voronoi Diagrams算法本身难理解,而且从这个算法开始,需要多个算法进行结合才能最终解决问题,因此大家需要有一定的心理准备哒~根据题目的提示,这道题有两种解题方法:因为为了结合我们学习的内容,这里我们主要介绍第一种解题方法,第二种大家有时间可以自己思考一下

2022-07-12 22:06:29 186

原创 清华计算几何大作业(七):CG2017 PA4-2 Orthogonal Windowing Query (正交矩形窗口查询)

清华计算几何大作业(七):CG2017 PA4-2 Orthogonal Windowing Query (正交矩形窗口查询)

2022-06-12 10:37:49 456

原创 清华计算几何大作业(六):CG2017 PA4-1 Planar Range Query (平面区域查询)

清华计算几何大作业(六):CG2017 PA4-1 Planar Range Query (平面区域查询)

2022-06-11 11:06:14 477

原创 清华计算几何大作业(五):CG2017 PA3-2 Which wall are you looking at (你在看哪面墙)

清华计算几何大作业(五):CG2017 PA3-2 Which wall are you looking at (你在看哪面墙)

2022-06-10 15:29:55 175

原创 清华计算几何大作业(四):CG2017 PA3-1 Delaunay Triangulation (Delaunay三角剖分)

清华计算几何大作业(四):CG2017 PA3-1 Delaunay Triangulation (Delaunay三角剖分)

2022-06-06 21:22:15 460

原创 清华计算几何大作业(三):CG2017 PA1-2 Crossroad (十字路口)

清华计算几何大作业(三):CG2017 PA1-2 Crossroad (十字路口)

2022-06-04 16:11:19 371

原创 清华计算几何大作业(二):CG2017 PA5-1 Dynamic Convex Hull(动态凸包)

清华计算几何大作业(二):CG2017 PA5-1 Dynamic Convex Hull(动态凸包)

2022-06-02 15:27:53 264

原创 清华计算几何大作业(一):CG2017 PA1-1 Convex Hull (凸包)

清华计算几何大作业(一):CG2017 PA1-1 Convex Hull (凸包)

2022-06-02 10:51:33 381

原创 清华计算几何大作业思路分析和代码实现

距离第一次接触计算几何到现在,不知不觉已经过去了一整年的时间,从一开始什么都不会,被DCEL折磨的死去活来,到现在基本还能玩转DCEL,这个过程真是既折磨又快乐,计算几何确实比较难,但是也是充满快乐的,借用邓俊辉老师在edX计算几何课程主页上面的一句话——体味几何之趣,领悟算法之美,可以完美诠释了笔者学习计算几何的感受,所以这里我给大家分享并整理一下清华x计算几何课程所涉及的10个大作业,以及它们的解题思路,可视化结果,以及我自己实现的代码,希望这些能让对计算几何有兴趣的童鞋根据自己的兴趣和学习进度,来选择

2022-06-01 23:48:52 807

原创 Voronoi图(四):抛物线的妙用

在上一节,我们已经了解了Voronoi图大致的构造思路:还是基于平面扫描线策略,但是需要引入抛物线来计算Voronoi Edge和Vertex,也就是上一节视频例子中所提到的海滩线(Beach Line,位于扫描线前进方向的后方)。接下来我们就来详解一下如何通过引入抛物线和海滩线,来完成Voronoi图的构建。

2022-03-29 23:41:22 754

原创 Voronoi图(三):构造Voronoi图

对于Voronoi的构造,我们究竟使用什么策略比较合适呢?针对这个问题,大家可以结合之前我们讲解的算法策略来分析一下呢。如果你之前看过笔者所著的其他计算几何算法详解,你应该对下面这些算法策略感到无比亲切

2022-03-26 23:15:24 2928

原创 Voronoi图(二):基本概念和性质

接下来,我们就先来看看Voronoi图的概念。就笔者自己的理解来说,Voronoi Diagrams(Voronoi图)主要由两部分组成:1)四个数据结构;2)一个基本性质。四个数据结构依次为。

2022-03-23 23:08:51 7366

原创 Voronoi图(一):塞尔达背后的计算几何

玩过塞尔达传说:荒野之息的朋友,应该都会赞叹海拉鲁风景的美丽。我们的林克时不时一人独自在战后废墟中探索一座座神庙,有时武器库告急,也会偶尔探望一下亲爱的人马们。现在林克一个人游荡在海拉鲁大地上,遇到了一个难题:他突然想回到河畔驿站修整一下,恢复心心,但是他究竟需要传送哪个传送塔,才能离驿站最近呢?下图给出了河畔驿站的位置,以及三个比较近的传送塔:平原之塔,双子山之塔和初始之塔

2022-03-22 12:15:33 1306 1

原创 点定位(五):处理退化情况·续(Point Location: handle degenerate cases)

点定位(五):处理退化情况·续

2022-03-20 21:19:49 903 26

原创 点定位(四):处理退化情况(Point Location: handle degenerate cases)

在前面几节,我们讲解了如何对梯形图和搜索结构进行拆解和更新,但是我们对输入做出了不少限制(即不允许退化情况),这一节我们就把关注点放在各种退化情况的处理上。总的来说,笔者总结的退化情况一共有三种。

2022-03-19 16:15:22 395 2

原创 双向链接的红黑树(二):直接删除

对于deleteMax()和deleteMin(),双向链接的逻辑和代码和原版是非常相似的,只需要在原版的基础上修复双向指向关系,和删除双向链表的头或尾节点即可,非常的简单。所以这一节我们把重点放在delete()上面,和之前分析put()的方法一样,我们也来看看原版delete()有哪些主要的步骤:

2022-03-17 14:52:12 285

原创 双向链接的红黑树(一):基础概念和插入

首先我们还是先来看看双向链接红黑树的概念,其实和双向链接BST相似,我们只是在此前的基础上引入红黑节点,其他的概念保持不变。下图展示了一个完整的双向链接红黑树:基本和之前的双向链接BST相似,所以这里不再详细介绍双向链接红黑树的概念。同样,经过这样处理的红黑树将不是一颗树,严格意义上来说,它是个连接图(Connected Graph)。

2022-03-16 13:53:52 869

原创 双向链接的二叉查找树(二):直接插入和删除

双向链接的二叉查找树(二):直接插入和删除1. 插入2. 删除3. 免责声明1. 插入首先实现双向的方法非常简单,我们只需在原来BST的基础上,每次插入或删除之后,修复一下子节点指向的父结点即可。另外因为BST在实际应用中因为效率问题,一般都是使用BBST,所以这里我没有实现BST的直接插入或删除,而是使用之前的插入或删除操作形成双向链接的BST,但BST的直接插入和删除方法基本和我下面讲解的非常相似,如果大家在自己实现的时候有问题可以留言哦~我们以插入(put)为例,原来的put()代码为:pri

2022-03-15 20:30:58 818

原创 双向链接的二叉查找树(一):基本概念

双向链接的二叉查找树(一):基本概念1. 背景介绍2. 基本概念2.1 为什们需要双向链接?2.2 结构和定义3. 直接前后继4. 免责声明1. 背景介绍从这章开始,我们将会深入讲解一下Voronoi图(Voronoi Diagrams)相关的内容,但是在进入到Voronoi图讲解之前,我们需要先来讲解一下特殊的数据结构——双向链接的红黑树(Doubly-linked red black tree),它的实现和理解对于我们高效实现Voronoi图算法至关重要,所以整个系列文章的结构如下:双向链接的二

2022-03-15 11:19:18 576

原创 点定位:如何拆分更新梯形图和二分搜索结构 · (三):处理S(Update trapezoidal map and search structure in point location)

点定位:如何拆分更新梯形图和二分搜索结构 · (三)

2021-12-21 11:49:30 175

原创 点定位:如何拆分更新梯形图和二分搜索结构 · (二):处理P和Q(Update trapezoidal map and search structure in point location)

点定位:如何拆分更新梯形图和二分搜索结构 · (二):处理P和Q

2021-12-21 11:37:41 156

原创 点定位:如何拆分更新梯形图和二分搜索结构 · (一):总思路分析(Update trapezoidal map and search structure in point location)

点定位(Point Location)是计算几何中非常重要的基础算法,一个最常用的应用就是GPS定位,在定位查找中,我们会用到点定位的算法进行快速查找。而且通过学习点定位算法,大家应该会见识到如何在空间内进行二分查找,以及如何创建这样一个支持在空间中进行二分查找的数据结构(即Search Structure,SS)。在此之前,我们一般接触的二分都是在一个数组中进行查找。

2021-12-20 22:40:03 589

原创 生成圆锥内的均匀分布的单位向量(Generating uniform unit random vectors in a cone)

生成一个单位向量非常的简单,但是如果我们要求这个单位向量是在单位球或单位圆锥里面呢?而且随机生成均匀分布的单位向量,应该怎们做呢?这点非常重要哦,因为我们在粒子系统中,需要这个技术来模拟流星效果,或者爆炸效果,也就是说粒子的方向向量是在单位圆锥里面的均匀分布的随机单位向量,比如下面的流星效果

2021-12-16 11:56:34 793

原创 WebGL | CSS样式对Canvas的影响(模糊)

WebGL | CSS样式对Canvas的影响

2021-09-06 16:38:23 487

原创 速来收藏 | 数据结构和算法文章汇总(含代码)

速来收藏!数据结构和算法文章汇总(含代码)

2021-08-22 11:00:06 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除