文档章节

三角形填充

来来叔叔
 来来叔叔
发布于 2017/08/04 23:56
字数 367
阅读 10
收藏 0
 

给定三角形的三个顶点,填充三角形,想来想去,竟然找不到这样的软件工具。就连matlab都没有提供这样的绘图功能。我有一组三角形的顶点坐标,想判断这些三角形是否可以完全拼合在一起。如果一个一个地去检查每个三角形的顶点坐标,那真不是人干的活。求人不如求已,干脆自己写一个windows程序吧,利用gdi来填充三角形。

(1)读取三角形顶点坐标

三角形的顶点坐标是如此保存在一个txt文件中的:

248 224 242 223 247 221
253 221 245 218 229 218
219 218 253 221 229 218

。。。

每行格式为:x0 y0 x1 y1 x2 y2,核心代码为:

FILE* txtFile;
txtFile=fopen(fileName,"rt");
int i=0;
while(fscanf(txtFile,"%d %d %d %d %d %d\n",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF)
{
   tris[i].x0 = x0;
   tris[i].y0 = y0;
   tris[i].x1 = x1;
   tris[i].y1 = y1;
   tris[i].x2 = x2;
   tris[i].y2 = y2;
   i++;
}

(2)填充三角形的函数

CClientDC dc(this);
CPoint p1(x0,y0), p2(x1,y1), p3(x2,y2);
CPoint points[]={p1,p2,p3,p1};

CRgn rgn;
   rgn.CreatePolygonRgn(points,3,ALTERNATE/*WINDING*/);//创建区域  
   CBrush brush;
   brush.CreateSolidBrush(rgb);//创建画刷
  
   dc.FillRgn(&rgn,&brush);//填充区域

   brush.DeleteObject();
   rgn.DeleteObject();

(3)绘制所有三角形

在OnDraw()函数中调用以下代码就可以绘制出所有的三角形了。

for(int i=0;i<trisCnt;i++)
{
   FillPoly3f(tris[i].x0, tris[i].y0,
    tris[i].x1, tris[i].y1,
    tris[i].x2, tris[i].y2, 0xFFFFFF);
}



© 著作权归作者所有

共有 人打赏支持
来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
OpenGL超级宝典笔记——画三角形

学习了画线的知识,我们可以使用GLLINELOOP来画闭合的多边形。但是使用这种方式画出来的只有线框,多边形没有填充颜色。OpenGL支持绘制实心的多边形,并使用当前的颜色进行填充。 三角形 简单...

Mario_Q
2013/09/12
0
0
canvas核心技术-如何绘制图形

这篇学习和回顾canvas系列笔记的第二篇,完整笔记详见:canvas核心技术 通过上一篇canvas核心技术-如何绘制线段的学习,我们知道了如何去绘制线段。很多的线段的拼接就组成了图形了,比如常见...

snayan
07/18
0
0
p5.js作品集(2):彩旗

效果图.png 作品链接 https://codepen.io/SampleTape/full/baGbjE/ 主要方法 arc() triangle() translate() rotate() push() pop() 草图 草图.png 过程分解 初始化:新建一块画板 一、将坐标...

SampleTape
2017/12/12
0
0
[翻译]PyCairo指南--形状和填充

PyCairo中的形状和填充 PyCairo指南的这个部分,我们将创建一些基本的和更高级的形状。我们将使用单一颜色,patterns和渐变来填充他们。渐变将在另一章中讨论。 基本形状 PyCairo有一些基本的...

WolfCS
2013/05/21
0
0
Metal入门资料006-MetalKit第五部分

写在前面: 对Metal技术感兴趣的同学,可以关注我的专题:Metal专辑 也可以关注我个人的简书账号:张芳涛 所有的代码存储的Github地址是:Metal 正文 上次我们描述了(图形管道)和(Metal管道)...

张芳涛
06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
68
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部