抗锯齿形式铺砖尝试
这里我先画下了这样子的,一个场地范围,以及内部的铺装分割线。这个就等于一个简易的CAD吧。
个人认为这一步还挺重要的,就是一个封面吧,对场地进行简单的划分。哪些地方是绿地?哪些地方是铺砖?然后再对铺砖进行简易的分类,并提取他们的边缘线,这个边缘线为后期,我们的一个布尔运算做准备。
接下来的这一步呢,我们便是选取最外部的这样子的一个轮廓线,这个外部的轮廓线,我给他的理解是场地,红线范围的一个拓展线吧,主要是便于后期的修整,或者说做一些人行道,不这么处理也行,然后将这个范围呢给它成一个面,这里头有一个数值,这个数值主要是便于我们控制场地铺砖的大小,由于配置一般,所以呢,我给的就比较大,只给的越小,后期两种铺装的衔接处会显得越自然。
接下来呢,我先上一张图。
好,通过这张图应该不难看出,这是一个非常明显的迭代过程。
我们选取了,这个迭代过程中,不同的迭代产物。
我们将之前生成的网格进行一个炸开,并选取其中心点,然后来计算它离我们所划分的分界线的一个距离。
为了将网格进行进一步的细分,我们做了如下操作,提取每一块瓷砖的边,然后呢,通过这个每一条边进行等分,最终通过这些等分点来生成细分的网格。
将这个过程再循环一次,那么我们将得到下一轮更小的网格。
但处理到这一步之后,我们就可以很清楚的看到,已经出现了三种不同大小的铺砖,但现在,下一个问题又出现了,现在我们所拥有的数据,是大铺砖,在一个数据分支,中等铺装,在一个数据分支,最后小铺砖又在一个数据分支。
接下来要做的就是将不同类型的铺装分到相应的数据列表里面去,这个就需要用到我们第1步所提取出来的边缘线了,其实就是做一个布尔运算。
好吧,到这里整个程序这里就告一段落了,详细的大家可以参照下面的电池图。
到这一步,应该不算太难,更多的是应该想着如何去和工程接轨,比如不同类型的铺装,有多少块?这个算是留作大家的思考吧~
最后也感谢ncfz给我们提供这样一个交流、学习、共进的平台,好了,诸神们退朝吧,有机会我们下期再见。