Пример #1
0
void 
HUD::draw_partial_tri_fan(const double fraction)
{
    const double angle = SPEEDBAR_BASE_ANGLE + 
	( SPEEDBAR_MAX_ANGLE - SPEEDBAR_BASE_ANGLE ) * fraction;

    const int divs = int(( SPEEDBAR_BASE_ANGLE - angle ) * CIRCLE_DIVISIONS / 360.0);
    double cur_angle = SPEEDBAR_BASE_ANGLE;
    const double angle_incr = 360.0 / CIRCLE_DIVISIONS;
	
	bool trifan = false;
    for(int i=0; i<divs; i++){
		if( !trifan ){
			start_tri_fan();
			trifan = true;
		}
		cur_angle -= angle_incr;
		gl::Vertex(calc_new_fan_pt(cur_angle));
    }

    if(cur_angle > angle + EPS ){
		cur_angle = angle;
		if ( !trifan ) {
			start_tri_fan();
			trifan = true;
		}
		gl::Vertex(calc_new_fan_pt(cur_angle));
    }

    if ( trifan ) {
		gl::End();
		trifan = false;
    }
}
Пример #2
0
void draw_partial_tri_fan (ETR_DOUBLE fraction) {
	bool trifan = false;

	ETR_DOUBLE angle = SPEEDBAR_BASE_ANGLE + 
		(SPEEDBAR_MAX_ANGLE - SPEEDBAR_BASE_ANGLE) * fraction;

	int divs = (int)((SPEEDBAR_BASE_ANGLE - angle) * CIRCLE_DIVISIONS / 360.0);
	ETR_DOUBLE cur_angle = SPEEDBAR_BASE_ANGLE;
	ETR_DOUBLE angle_incr = 360.0 / CIRCLE_DIVISIONS;

	for (int i=0; i<divs; i++) {
		if (!trifan) {
			start_tri_fan();
			trifan = true;
		}
		cur_angle -= angle_incr;
		TVector2d pt = calc_new_fan_pt (cur_angle);
		glVertex2f (pt.x, pt.y);
#ifdef USE_GLES1
		glTexCoord2f(pt.x/GAUGE_IMG_SIZE, pt.y/GAUGE_IMG_SIZE);
#endif
	}

	if (cur_angle > angle + EPS) {
		cur_angle = angle;
		if (!trifan) {
			start_tri_fan();
			trifan = true;
		}
		TVector2d pt = calc_new_fan_pt (cur_angle);
		glVertex2f (pt.x, pt.y);
#ifdef USE_GLES1
		glTexCoord2f(pt.x/GAUGE_IMG_SIZE, pt.y/GAUGE_IMG_SIZE);
#endif
	}

	if (trifan) {
		glEnd();
		trifan = false;
	}
}
Пример #3
0
void draw_partial_tri_fan (double fraction) {
    int divs;
    double angle, angle_incr, cur_angle;
    int i;
    bool trifan = false;
    TVector2 pt;

	angle = SPEEDBAR_BASE_ANGLE + 
		(SPEEDBAR_MAX_ANGLE - SPEEDBAR_BASE_ANGLE) * fraction;

    divs = (int)((SPEEDBAR_BASE_ANGLE - angle) * CIRCLE_DIVISIONS / 360.0);
    cur_angle = SPEEDBAR_BASE_ANGLE;
    angle_incr = 360.0 / CIRCLE_DIVISIONS;

    for (i=0; i<divs; i++) {
		if  (!trifan) {
		    start_tri_fan();
	    	trifan = true;
		}
		cur_angle -= angle_incr;
		pt = calc_new_fan_pt (cur_angle);
		glVertex2f (pt.x, pt.y);
    }

    if  (cur_angle > angle + EPS) {
		cur_angle = angle;
		if  (!trifan) {
		    start_tri_fan();
	    	trifan = true;
		}
		pt = calc_new_fan_pt (cur_angle);
		glVertex2f (pt.x, pt.y);
    }

    if  (trifan) {
		glEnd();
		trifan = false;
    }
}