Ejemplo n.º 1
0
std::vector<Point> Line::points()
{
	std::vector<Point> pts;
	lineBresenham(m_start.xInt(), m_start.yInt(), m_end.xInt(), m_end.yInt(), pts);

	return pts;
}
Ejemplo n.º 2
0
color* integerInt(vertex* sP, vertex* eP, int x, int y)
{
	color* res = (color*)malloc(sizeof(color));
	if (sP->x > eP->x)
	{
		vertex* tmp = eP;
		eP = sP;
		sP = tmp;
	}
	int spx = sP->x;
	int epx = eP->x;
	int spy = sP->y;
	int epy = sP->y;
	
	int dx = epx - spx;
	int dy = epy - spy;
	// If the triangle has a rise > run,
	// then interpolate on Y to get a nicer interpolation
	if (dy > dx)
	{
		// TODO make it interpolate on y instead of x
		if (sP->y > eP->y)
		{
			vertex* tmp = eP;
			eP = sP;
			sP = tmp;
		}
		int spy = sP->y;
		int epy = sP->y;
		res->red = (GLubyte)lineBresenham(spy, epy, y, sP->v_color.red, eP->v_color.red);
		res->green = (GLubyte)lineBresenham(spy, epy, y, sP->v_color.green, eP->v_color.green);
		res->blue = (GLubyte)lineBresenham(spy, epy, y, sP->v_color.blue, eP->v_color.blue);
	}
	else 
	{
		res->red = (GLubyte)lineBresenham(spx, epx, x, sP->v_color.red, eP->v_color.red);
		res->green = (GLubyte)lineBresenham(spx, epx, x, sP->v_color.green, eP->v_color.green);
		res->blue = (GLubyte)lineBresenham(spx, epx, x, sP->v_color.blue, eP->v_color.blue);
	}
	//printf("(%d, %d, %d)\n", res->red, res->green , res->blue);
	return res;
}