Exemple #1
0
void Car::draw(DrawingState* d)
{
	// Draw four wheel 
	glColor3f(.1f,.1f,.1f);
	glPushMatrix();
		glTranslatef(w-.5f,h,f-h);
		drawWheel(h,1);
	glPopMatrix();
	glPushMatrix();
		glTranslatef(w-.5f,h,f+r-h-1);
		drawWheel(h,1);
	glPopMatrix();

	glPushMatrix();
		glTranslatef(-w+.5f,h,f-h);
		glRotatef(180,0,1,0);
		drawWheel(h,1);
	glPopMatrix();
	glPushMatrix();
		glTranslatef(-w+.5f,h,f+r-h-1);
		glRotatef(180,0,1,0);
		drawWheel(h,1);
	glPopMatrix();

	// Draw the body of the car
	glColor3fv(&color.r);
	drawBody(d);
}
Exemple #2
0
void drawTankForDirectionDOWN()
{
    COORD drawPos = {10, 0};
    char symbol1 = 203;
    char symbol2 = 205;
    char symbol3 = 32;
    printf("\n");
    SetConsoleCursorPosition(hCon,drawPos);
    drawWheel(drawPos, symbol2);
    drawPos.Y++;
    SetConsoleCursorPosition(hCon,drawPos);
    drawWheel(drawPos, symbol3);
    drawPos.Y++;
    SetConsoleCursorPosition(hCon,drawPos);
    drawWheel(drawPos, symbol3);
    drawPos.Y++;
    SetConsoleCursorPosition(hCon,drawPos);
    drawWheel(drawPos, symbol1);
    drawPos.Y++;
    SetConsoleCursorPosition(hCon,drawPos);
    printf("  %c  ",186);
    drawPos.Y++;
    SetConsoleCursorPosition(hCon,drawPos);
    printf("  %c  ",223);

}
void ColorWheel::resizeEvent(QResizeEvent *event)
{
    wheel = QPixmap(event->size());
    wheel.fill(palette().background().color());
    drawWheel(event->size());
    //drawSquareImage(current.hue());
    update();
}
Exemple #4
0
GLuint wheel::createDL() {
	GLuint temp;
	temp = glGenLists(1);
	glNewList(temp,GL_COMPILE);
	drawWheel();
	glEndList();
	return(temp);
}
void ColorWheel::svChanged(const QColor &newcolor)
{
    int hue = current.hue();
    current.setHsv(hue, newcolor.saturation(), newcolor.value());
    if(!isVisible()) return;
    drawWheel(size());
    drawSquare(hue);
    drawIndicator(hue);
    drawPicker(newcolor);
    repaint();
    emit colorChange(current);
}
void Car::draw()
{ 
  // Draw Chassis 
  GM_POINT* pos = convert->convertB2Vec2ToGM_Point(m_car->GetPosition());
  glPushMatrix();
  glTranslatef(pos->x,pos->y,0.0f);
  // glRotatef(convert->convertRadiansToDegrees(m_car->GetAngle()),0.0f,0.0f,1.0f);
  glBegin(GL_POLYGON);
  for(int i = 0; i < chassis.m_vertexCount; ++i)
  {
    glVertex2f(chassis.m_vertices[i].x*PIXEL_TO_METER,chassis.m_vertices[i].y*PIXEL_TO_METER); 
  }
  glEnd();
  
  // Draw the wheels
  // wheel 1
  drawWheel(convert->convertB2Vec2ToGM_Point(m_wheel1->GetPosition()),0.4f*PIXEL_TO_METER,m_wheel1->GetAngle());
  
  //wheel 2
  drawWheel(convert->convertB2Vec2ToGM_Point(m_wheel2->GetPosition()),0.4f*PIXEL_TO_METER,m_wheel2->GetAngle());
  
  glPopMatrix(); 
}
void ColorWheel::hueChanged(const int &hue)
{
    if( hue<0 ||hue>359)return;
    int s = current.saturation();
    int v = current.value();
    current.setHsv(hue, s, v);
    if(!isVisible()) return;
    drawWheel(size());
    drawSquare(hue);
    drawIndicator(hue);
    drawPicker(current);
    repaint();
    emit colorChange(current);
}
/*! 
   Redraw panel and wheel
   \param painter Painter
*/
void QwtWheel::draw(QPainter *painter, const QRect&)
{
    qDrawShadePanel( painter, rect().x(), rect().y(),
        rect().width(), rect().height(),
#if QT_VERSION < 0x040000
        colorGroup(), 
#else
        palette(), 
#endif
        true, d_data->borderWidth );

    drawWheel( painter, d_data->sliderRect );

    if ( hasFocus() )
        QwtPainter::drawFocusRect(painter, this);
}
Exemple #9
0
/*** シミュレーションループ ***/
static void simLoop(int pause)
{
    if (!pause)
    {
        dSpaceCollide(space,0,&nearCallback); // add
        control();
        dWorldStep(world, 0.01);
        dJointGroupEmpty(contactgroup); // add
    }

    const dReal *linear_vel = dBodyGetLinearVel(base.body);
    const dReal *angular_vel = dBodyGetAngularVel(base.body);
    printf("linear : %.3f %.3f %.3f\n", linear_vel[0], linear_vel[1], linear_vel[2]);
    printf("angular: %.3f %.3f %.3f\n", angular_vel[0], angular_vel[1], angular_vel[2]);

    drawBase();
    drawWheel();  // add
    drawBall();   //add
    drawGoal();
}
Exemple #10
0
void Car::draw()
{
	if (!active) return;
	// Reinicia transformações
	glPushMatrix();
	glTranslatef(_position.getX(), _position.getY(), _position.getZ() + 0.2);
	glRotatef(_turnAngle, 0, 0, 1);

	//corpo do carro
	glPushMatrix();
	GLfloat bodyAmb[] = { 0.35f,0.0f,0.0f,1.0f };
	GLfloat bodyDiff[] = { 0.69f,0.0f,0.0f,1.0f };
	GLfloat bodySpec[] = { 0.29f,0.28f,0.29f,1.0f };
	GLfloat bodyShine = 46;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, bodyAmb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, bodyDiff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, bodySpec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, bodyShine);
	glColor3f(1.0f, 0.0f, 0.0f);
	glScalef(1.0f, 0.8f, 0.3f);
	drawCube();
	glPopMatrix();

	//cockpit do carro
	glPushMatrix();
	glTranslatef(-0.2f, 0.0f, 0.20f);
	glScalef(0.4f, 0.6f, 0.1f);
	GLfloat cockpitAmb[] = { 0.07f,0.07f,0.07f,1.0f };
	GLfloat cockpitDiff[] = { 0.13f,0.17f,0.17f,1.0f };
	GLfloat cockpitSpec[] = { 0.42f,0.41f,0.41f,1.0f };
	GLfloat cockpitShine = 4;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, cockpitAmb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, cockpitDiff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, cockpitSpec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, cockpitShine);
	glColor3f(1.0, 1.0, 1.0);
	drawCube();
	glColor3f(1.0, 0.0, 0.0);
	glutWireCube(1.0);
	glPopMatrix();


	// roda traseira direita
	glPushMatrix();
	GLfloat wheel1Amb[] = { 0.0f,0.0f,0.0f,1.0f };
	GLfloat wheel1Diff[] = { 0.13f,0.13f,0.14f,1.0f };
	GLfloat wheel1Spec[] = { 0.17f,0.18f,0.19f,1.0f };
	GLfloat wheel1Shine = 12;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, wheel1Amb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, wheel1Diff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, wheel1Spec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, wheel1Shine);
	glColor3f(1.0, 1.0, 1.0);
	glTranslatef(-0.3f, -0.45f, 0.0f);
	glRotated(90, 1, 0, 0);
	glScalef(0.4f, 0.4f, 1.5f);
	drawWheel();
	glColor3f(0, 0, 0);
	glutWireTorus(0.05, 0.2, 32, 32);
	glPopMatrix();


	//perna dianteira direita
	glPushMatrix();
	GLfloat wheel2Amb[] = { 0.0f,0.0f,0.0f,1.0f };
	GLfloat wheel2Diff[] = { 0.13f,0.13f,0.14f,1.0f };
	GLfloat wheel2Spec[] = { 0.17f,0.18f,0.19f,1.0f };
	GLfloat wheel2Shine = 12;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, wheel2Amb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, wheel2Diff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, wheel2Spec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, wheel2Shine);
	glColor3f(1.0, 1.0, 1.0);
	glTranslatef(0.3f, -0.45f, 0.0);
	glRotated(90, 1, 0, 0);
	glScalef(0.4f, 0.4f, 1.5f);
	drawWheel();
	glColor3f(0.0, 0.0, 0.0);
	glutWireTorus(0.05, 0.2, 32, 32);
	glPopMatrix();


	// roda traseira direita
	glPushMatrix();
	GLfloat wheel3Amb[] = { 0.0f,0.0f,0.0f,1.0f };
	GLfloat wheel3Diff[] = { 0.13f,0.13f,0.14f,1.0f };
	GLfloat wheel3Spec[] = { 0.17f,0.18f,0.19f,1.0f };
	GLfloat wheel3Shine = 12;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, wheel3Amb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, wheel3Diff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, wheel3Spec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, wheel3Shine);
	glColor3f(1.0, 1.0, 1.0);
	glTranslatef(-0.3f, 0.45f, 0.0f);
	glRotated(90, 1, 0, 0);
	glScalef(0.4f, 0.4f, 1.5f);
	drawWheel();
	glColor3f(0, 0, 0);
	glutWireTorus(0.05, 0.2, 32, 32);
	glPopMatrix();


	//perna dianteira direita
	glPushMatrix();
	GLfloat wheel4Amb[] = { 0.0f,0.0f,0.0f,1.0f };
	GLfloat wheel4Diff[] = { 0.13f,0.13f,0.14f,1.0f };
	GLfloat wheel4Spec[] = { 0.17f,0.18f,0.19f,1.0f };
	GLfloat wheel4Shine = 12;
	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, wheel4Amb);
	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, wheel4Diff);
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, wheel4Spec);
	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, wheel4Shine);
	glColor3f(1.0, 1.0, 1.0);
	glTranslatef(0.3f, 0.45f, 0.0);
	glRotated(90, 1, 0, 0);
	glScalef(0.4f, 0.4f, 1.5f);
	drawWheel();
	glColor3f(0.0, 0.0, 0.0);
	glutWireTorus(0.05, 0.2, 32, 32);
	glPopMatrix();

	glPopMatrix();
}
void display(void)
{
	/*clear all pixels*/
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// we'll explain this later, but it's setting our default modelview matrix
	if (camera == STATIC_CAMERA)
	{
		if (staticCameraCenterOfStage == true)
		{
			mv = LookAt(vec4(0, CAR_HEIGHT+(WHEEL_RADIUS), dolly, 1.0), vec4(0, 0, 0, 1.0), vec4(0, 1, 0, 0.0));
		}
		else
		{
			mv = LookAt(vec4(0, CAR_HEIGHT+(WHEEL_RADIUS), dolly, 1.0), vec4(xPosition, yPosition, zPosition, 1.0), vec4(0, 1, 0, 0.0));
		}
	}
	else if (camera == VIEWPOINT_CAMERA)	
	{
		float Angle = (M_PI*(carAngle+headAngle)/180);
		float X = sin(Angle)*40;
		float Z = cos(Angle)*40;
		mv = LookAt(vec4(xPosition, yPosition+STAGE_HEIGHT+(CAR_HEIGHT*2)+WHEEL_RADIUS+(HEAD_RADIUS*2), zPosition, 1.0), 
			vec4(X+xPosition, 1, Z+zPosition, 1.0), vec4(0, 1, 0, 0.0));
	}
	else if (camera == CHASE_CAMERA)
	{
		float Angle = (M_PI*(carAngle)/180);
		float X = sin(Angle)*20;
		float Z = cos(Angle)*20;
		mv = LookAt(vec4(xPosition+X, 20, zPosition+Z, 1.0), 
			vec4(xPosition-X, 1, zPosition-Z, 1.0), vec4(0, 1, 0, 0.0));
	}

	mv = mv*Translate(tx, ty, tz);
	mv = mv*RotateX(rx);
	mv = mv*RotateY(ry);
	mv = mv*RotateZ(rz);
	mv = mv*Scale(sx, sy, sz);

	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);

	// and we also need to send our projection matrix, which again is more appropriately
	// a uniform instead of an attribute since it's the same for every vertex
	

	if (camera == STATIC_CAMERA)
	{
		p = Perspective(zoom, (float)ww/(float)wh, 1.0, 100.0);
	}
	else if (camera == VIEWPOINT_CAMERA)
	{
		p = Perspective(45, (float)ww/(float)wh, (HEAD_RADIUS*2+(EYE_RADIUS*2)), 100.0);
	}
	else if (camera == CHASE_CAMERA)
	{
		p = Perspective(45, (float)ww/(float)wh, 1.0, 100.0);
	}

	glUniformMatrix4fv(projection, 1, GL_TRUE, p);

	glBindVertexArray( vao[STAGE] );
	glDrawArrays( GL_TRIANGLES, 0, STAGE_POINT_COUNT );    // draw the stage

	mat4 original = mv;
	mv = mv*Translate(-20, 0, -20);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[PYLON] );
	glDrawArrays( GL_TRIANGLES, 0, PYLON_POINT_COUNT );    // draw the pylons

	mv = original;
	mv = mv*Translate(20, 0, -20);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[PYLON] );
	glDrawArrays( GL_TRIANGLES, PYLON_POINT_COUNT, PYLON_POINT_COUNT*2 );

	mv = original;
	mv = mv*Translate(20, 0, 20);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[PYLON] );
	glDrawArrays( GL_TRIANGLES, PYLON_POINT_COUNT*2, PYLON_POINT_COUNT*3 );

	mv = original;
	mv = mv*Translate(-20, 0, 20);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[PYLON] );
	glDrawArrays( GL_TRIANGLES, PYLON_POINT_COUNT*3, PYLON_POINT_COUNT*4 );

	mv = original;
	mv = mv*Translate(0.0, CAR_HEIGHT+(WHEEL_RADIUS), 0.0);
	mv = mv*Translate(xPosition, yPosition, zPosition);
	mv = mv*RotateY(carAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	
	glBindVertexArray( vao[CAR] );
	glDrawArrays( GL_TRIANGLES, 0, CAR_POINT_COUNT );    // draw the car 

	original = mv;

	mv = mv*Translate(0.0, CAR_HEIGHT+(HEAD_RADIUS*2), 0.0);
	mv = mv*RotateY(headAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[HEAD] );
	glDrawArrays( GL_LINE_LOOP, 0, HEAD_POINT_COUNT );    // draw the head 
	mat4 headOriginal = mv;
	mv = mv*Translate(.4*HEAD_RADIUS, 0.0, HEAD_RADIUS);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[EYE] );
	glDrawArrays( GL_LINE_LOOP, 0, EYE_POINT_COUNT );    // draw one eye 
	mv = headOriginal;
	mv = mv*Translate(-.4*HEAD_RADIUS, 0.0, HEAD_RADIUS);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);
	glBindVertexArray( vao[EYE] );
	glDrawArrays( GL_LINE_LOOP, 0, EYE_POINT_COUNT );    // draw the other eye 

	mv = original;

	mv = mv*Translate(WHEEL_X_OFFSET, WHEEL_Y_OFFSET, -WHEEL_Z_OFFSET);
	mv = mv*RotateY(90-steering);
	mv = mv*RotateZ(wheelRollAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);

	drawWheel();

	mv = original;
	mv = mv*Translate(-WHEEL_X_OFFSET, WHEEL_Y_OFFSET, -WHEEL_Z_OFFSET);
	mv = mv*RotateY(-90-steering);
	mv = mv*RotateZ(-wheelRollAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);

	drawWheel();

	mv = original;
	mv = mv*Translate(WHEEL_X_OFFSET, WHEEL_Y_OFFSET, WHEEL_Z_OFFSET);
	mv = mv*RotateY(90);
	mv = mv*RotateZ(wheelRollAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);

	drawWheel();

	mv = original;
	mv = mv*Translate(-WHEEL_X_OFFSET, WHEEL_Y_OFFSET, WHEEL_Z_OFFSET);
	mv = mv*RotateY(-90);
	mv = mv*RotateZ(-wheelRollAngle);
	glUniformMatrix4fv(model_view, 1, GL_TRUE, mv);

	drawWheel();

	glutSwapBuffers();
}