文档章节

三角形填充

来来叔叔
 来来叔叔
发布于 2017/08/04 23:56
字数 367
阅读 16
收藏 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
android 3D游戏开发 - 潜入理解

1.3d场景中的 3d模型的最基本单位是称为顶点的vertex 2.openGL支持多种多边形 openGL es目前只支持三角形 主要是出于性能的原因,任何多边形都可以拆分成多个三角形 在openGL中一个长方体可以...

长平狐
2012/08/29
342
0

没有更多内容

加载失败,请刷新页面

加载更多

微信开发-正式号的配置

1、设置相关 业务域名的设置(不设置的话,相关页面会显示防欺诈盗号信息提示) JS接口安全域名设置 网页授权域名设置 注意:以上三个设置中都有下载文件的提示,此文件内容一样,下载一个即可...

Code辉
3分钟前
0
0
微服务之Eureka服务发现

当调用API或者发起网络通信的时候,无论如何我们都要知道被调用方的IP和服务端口,大部分情况是通过域名和服务端口,事实上基于DNS的服务发现,因为DNS缓存、无法自治和其他不利因素的存在,...

架构师springboot
4分钟前
0
0
spring boot2 admin login

版本: admin server 配置 admin client 配置 参考资料

showlike
6分钟前
0
0
NIO、Netty(Netty基础)

一、概述 Netty是一个Java的开源框架。提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 Netty是一个NIO客户端,服务端框架。允许快...

这很耳东先生
12分钟前
0
0
Spring boot 读文件

每次都忘, 找起来太费事, 因为太乱. 简单说, 就是不打成jar包的时候, 可以返回File, 打成jar包只能返回InputStream. -- 要是把返回File那个方法去掉多好.就不用tmd本地ok, 发布的时候懵逼了....

园领T
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部