多边形填充 c语言 Easy-X

本文介绍了使用C语言实现多边形填充的方法,主要依赖X射线扫描线算法和y向连贯性算法。实验目的为填充多边形,通过VC6.0进行编程。在y向连贯性算法中,优先考虑交点递增和增量递增的边,并用结构体代替链表简化数据结构。最终将思路转化为C语言代码并进行了编译。
摘要由CSDN通过智能技术生成

一、 实验目的。

使用改进的X扫描线算法进行多边形的填充。

二、 实验工具

VC6.0

三、 实验步骤

1.首先了解多边形填充
输入:多边形顶点序列输出:最佳逼近这个多边形的像素点集

利用X-射线扫描思想:确定多边形所占用的最大扫描线数,得到多边形顶点max, min从Ymax移动到Ymin

然后进行一些 求交,排序,配对,着色。

在求交排序中采用y向连贯性算法进行改进。

**2.学习y向连贯性算法的大概思路:
** 优先
X | Ymax | 1/k | next
交点递增;交点相同,则增量递增
变成有效边表(开始为空的删除无效边之后的表)
X | Ymax | 1/k | next
X+1/k | Ymax | 1/k | next(y向递增)
(考虑到由于链表可能会很复杂,所以会用结构体代替链表。)

3.建立一个工程文件,将思路转化为c编程语言,进行编译。

代码如下:	
#include <windows.h>
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <string.h>
#include <queue>  
using namespace std;

struct XET   //定义了一个结构体存储来边表
{
   
	float xmin,ymax,ymin,dx;  
//dx=1/k, ymin为了扫描的时候判断扫描线是否在ymax和ymin之间
}pNET[1024];

struct node    //定义扫描线与边的交点
{
   
	float x,y;
}point[1024];

drawColor(float a,float b,int y)
{
   
	int x;
	for(x=a+0.5;x<=b+0.5;x++)
	putpixel(x,y,RED);   //  在指定位置画一红的像素
}
priority_queue<float,vector<float>,greater<float> >s;
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值