前面讲了谢尔宾斯基三角形,它是不停地将一个三角形拆分三个与之相似的三角形。这一节给大家展示的图形是将一个等腰钝角三角形不停地拆分两个与之相似的三角形。

核心代码:

static void SplitTriangle(const Vector3& v1, const Vector3& v2, const Vector3& v3, Yreal angle, Vector3* pVertices)
{
Vector3 dir12 = v1 - v2;
Yreal len12 = D3DXVec3Length(&dir12); //Vector3 dir13 = v1 - v3;
//Yreal len13 = D3DXVec3Length(&dir13); Vector3 dir23 = v2 - v3;
Yreal len23 = D3DXVec3Length(&dir23);
dir23 /= len23; Yreal len = len12*0.5f/cosf(angle); pVertices[] = v2 - dir23*len;
pVertices[] = v1;
pVertices[] = v2; pVertices[] = v3 + dir23*len;
pVertices[] = v3;
pVertices[] = v1;
}

软件截图:

既然说是钝角三角形,那么就可以设置其底角的角度。

当其底角为45度时,为等腰直角三角形,则生成如下网格形:

当其底角为30度时,则其图形将蜕变为Koch曲线,见:分形之科赫(Koch)雪花

软件下载地址:http://files.cnblogs.com/WhyEngine/Fractal.7z

分形之拆分三角形(Split Triangle)的更多相关文章

  1. 信1705-2 软工作业最大重复词查询思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中。 (2)定义一个Map,key是字符串类型,保存单词;value是数字类型,保存该单词出现的次数。 (3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的key中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(

    通过学习学会了文本的访问,了解一点哈希表用途.经过网上查找做成了下面查询文章重复词的JAVA程序. 1 思 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词 ...

  2. 以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle 代码示例: import java.util.Scanner; class Point{ private ...

  3. 2.编写实现:有一个三角形类Triangle,成员变量有底边x和另一条边y,和两边的夹角a(0<a<180),a为静态成员,成员方法有两个:求面积s(无参数)和修改角度(参数为角度)。 编写实现: 构造函数为 Triangle(int xx,int yy,int aa) 参数分别为x,y,a赋值 在main方法中构造两个对象,求出其面积,然后使用修改角度的方法,修改两边的夹角,再求出面积值。(提示

    求高的方法 h=y*Math.sin(a) 按题目要求,需要我们做的分别是:1.改角度2.显示角度3.求面积并显示 代码用到:1.静态成员变量以修改角度2.数学函数 以下具体代码具体分析 import ...

  4. luogu P2992 [USACO10OPEN]三角形计数Triangle Counting

    https://www.luogu.org/problemnew/solution/P2992 考虑包含原点,不包含原点的三角形有什么特征. 包含原点的三角形:任意找一个顶点和原点连线,一定能把另外两 ...

  5. 【题解】Luogu P2992 [USACO10OPEN]三角形计数Triangle Counting

    原题传送门 我们考虑进行容斥 包含原点的三角形个数=所有可能三角形的个数-不包含原点三角形的个数 对于每个点,我们会发现:将它与原点连线,在直线左边任选两点或右边任选两点与这个点构成的三角形一定是不包 ...

  6. mysql字符串拆分实现split功能

    转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的字符串拆分题目要求数据库中 num字段值为: 实现的效果:需要将一行数据 ...

  7. bat 下 字符串拆分 类似 split 可以使用 for /f delims

    @echo offset strin=AA,BB,CC,DDfor /f "tokens=1,2,3,4 delims=, " %%a in ('echo %strin%') do ...

  8. 机器学习进阶-图片基本处理-ROI区域 1.img[0:200, 0:200]截取图片 2.cv2.split(对图片的颜色通道进行拆分) 3. cv2.merge(将颜色通道进行合并) 4 cur_img[:, :, 0] = 0 使得b通道的颜色数值为0

    1. 截取图片的部分区域img[0:200, 0:200], 读入的图片是ndarray格式 2. b, g, r = cv2.split(img)  # 对图片的颜色通道进行拆分 3.img = c ...

  9. python递归三战:Sierpinski Triangle、Tower of Hanoi、Maze Exploring

    本文已做成视频教程投稿b站(视频版相对文本版有一些改进),点击观看视频教程 本文主要通过三个实例来帮助大家理解递归(其展示动画已上传B站): 谢尔宾斯基三角形(Sierpinski Triangle) ...

随机推荐

  1. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  2. RAC初步使用

    信号基本流程: //1:创建信号 RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSub ...

  3. 使用vmware安装ubuntu不能上网

    桌面版的话,进入桌面后还可以配置,服务版,我是在安装过程中提示的网络配置时候按照下面的方法手动配置的 安装虚拟机时候要安装网络服务,有的虚拟机在安装过程中可能已经安装好了,主机保持VMware NAT ...

  4. flask在其他文件中添加路由

    应用文件为:app.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): re ...

  5. Mac网络命令 老命令重新学

    网络与通信操作 命令名 功能描述 使用举例 telnet 远程登录 telnet hpc.sp.net.edu.cn rlogin 远程登录 rlogin hostname -l username r ...

  6. CSS-尺寸与边框

    1.基础选择器的优先级 权值:标识当前选择器的重要程度,权值越大优先级越高. 元素选择器 1 类选择器 10 伪类选择器 10 ID选择器 100 内联样式 1000 选择器的权值加到一起,大的优先 ...

  7. Java学习总结1

    1. 断点调试 a:定位(设置断点)  b:启动调试  c:单步执行  观察变量(F5单步执行   F6单步跳过)d:修改2 static  静态  静态成员,为类的所有对象共享  在静态方法中,只能 ...

  8. yum 安装报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

    [root@venn09 ~]# yum install -y vim Loaded plugins: fastestmirror Could not retrieve mirrorlist http ...

  9. Le Chapitre VI

    Ah! petit prince, j'ai compris, peu à peu, ainsi, ta petite vie mélancolique. Tu n'avais eu longtemp ...

  10. mysql学习之路_字段类型与属性2

    字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...