예제 #1
0
/* Drawing::drawLineTabbed
 * Draws a line from [start] to [end]
 *******************************************************************/
void Drawing::drawLineTabbed(fpoint2_t start, fpoint2_t end, double tab, double tab_max)
{
	// Draw line
	glBegin(GL_LINES);
	glVertex2d(start.x, start.y);
	glVertex2d(end.x, end.y);
	glEnd();

	// Calculate midpoint
	fpoint2_t mid;
	mid.x = start.x + ((end.x - start.x) * 0.5);
	mid.y = start.y + ((end.y - start.y) * 0.5);

	// Calculate tab length
	double tablen = MathStuff::distance(start, end) * tab;
	if (tablen > tab_max) tablen = tab_max;
	if (tablen < 2) tablen = 2;

	// Calculate tab endpoint
	fpoint2_t invdir(-(end.y - start.y), end.x - start.x);
	invdir.normalize();

	// Draw tab
	glBegin(GL_LINES);
	glVertex2d(mid.x, mid.y);
	glVertex2d(mid.x - invdir.x*tablen, mid.y - invdir.y*tablen);
	glEnd();
}
예제 #2
0
파일: Drawing.cpp 프로젝트: Zekom/SLADE
/* Drawing::drawLineTabbed
 * Draws a line from [x1,y1] to [x2,y2]
 *******************************************************************/
void Drawing::drawLineTabbed(double x1, double y1, double x2, double y2, double tab, double tab_max)
{
	// Draw line
	glBegin(GL_LINES);
	glVertex2d(x1, y1);
	glVertex2d(x2, y2);
	glEnd();

	// Calculate midpoint
	fpoint2_t mid;
	mid.x = x1 + ((x2 - x1) * 0.5);
	mid.y = y1 + ((y1 - y1) * 0.5);

	// Calculate tab length
	double tablen = MathStuff::distance(x1, y1, x2, y2) * tab;
	if (tablen > tab_max) tablen = tab_max;
	if (tablen < 2) tablen = 2;

	// Calculate tab endpoint
	fpoint2_t invdir(-(y2 - y1), x2 - x1);
	invdir.normalize();

	// Draw tab
	glBegin(GL_LINES);
	glVertex2d(mid.x, mid.y);
	glVertex2d(mid.x - invdir.x*tablen, mid.y - invdir.y*tablen);
	glEnd();
}