Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
02.05.2014
Размер:
10.86 Кб
Скачать
// FirstView.cpp : implementation of the CFirstView class
//

#include "stdafx.h"
#include "First.h"
#include <math.h>
#include <stdlib.h>
#include "FirstDoc.h"
#include "FirstView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFirstView

IMPLEMENT_DYNCREATE(CFirstView, CView)

BEGIN_MESSAGE_MAP(CFirstView, CView)
	//{{AFX_MSG_MAP(CFirstView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFirstView construction/destruction

CFirstView::CFirstView()
{
	// TODO: add construction code here

}

CFirstView::~CFirstView()
{
}

BOOL CFirstView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	cs.style|=(WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFirstView drawing

 void CFirstView::OnDraw(CDC* pDC)
{
	CRect ClientRect;	
	GetClientRect(&ClientRect); 
	windW=abs(ClientRect.right-ClientRect.left);
	windH=abs(ClientRect.top-ClientRect.bottom);
	
	glClearColor(0.75f, 0.75f, 0.75f, 1.0f);// цвет фона - серый		
	GLUquadricObj *quadObj;
	quadObj = gluNewQuadric();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	InitViewport(0, 0, windW, windH);
  glTranslatef(-12.f,-3.5f,0.f);
//	glTranslatef(-1.0f,3.4f,1.f); 
 
  	
//тело-шар
 glTranslatef(10.0f,6.2f,0.0f);	 //сдвиг(расположение)
 glColor3d(0.15, 0.5, 2.0);      //цвет 
 auxSolidSphere(3.0);            //тело-шар
 glTranslatef(-10.0f,-6.2f,0.0f);//сдвиг(расположение)
 /*
 //тело-конус
 glTranslatef(0.0f,-3.5f,0.0f);  //сдвиг(расположение)
 glScalef(1.5,1.5,3.5);          //ссужение растяжение
 glRotatef(90.0,0.-90,0.0,0.0);  //поворот
 glColor3d(0.15, 0.5, 2.0);      //цвет
 auxSolidCone(2.621,1.794);      //тело-конус
 glTranslatef(0.0f,3.5f,0.0f);   //сдвиг(расположение)

//глаз правый
 glTranslatef(12.0f,6.5f,0.3f);  //сдвиг(расположение)
 glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(1.5f,1.5f,3.0f);       //ссужение растяжение
 auxSolidSphere(0.5);            //глаз правый
 glTranslatef(-0.3f,4.0f,-0.3f); //сдвиг(расположение)
//глаз левый
 glTranslatef(-2.0,-4.0,0.3);    //сдвиг(расположение)
 glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(2.0f,2.2f,2.0f);       //ссужение растяжение
 auxSolidSphere(0.225);          //глаз левый
 glTranslatef(0.08,4.0,-0.3);    //сдвиг(расположение)
*//*
 //зрачок левый
 glTranslatef(-3.01,2.0,-0.01); //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5f,1.5f,1.0f);      //ссужение растяжение
 auxSolidSphere(0.015);         //зрачок левый
 glTranslatef(3.01,2.0,0.01);   //сдвиг(расположение)
//зрачок правый
 glTranslatef(0.02,-0.1,-0.01); //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5f,1.5f,1.5f);      //ссужение растяжение
 auxSolidSphere(0.01);          //зрачок правый
 glTranslatef(-0.02,0.1,0.01);  //сдвиг(расположение)
 /*
//нос
 glTranslatef(-0.07,0.0,-0.02); //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5,3.0,1.5);         //ссужение растяжение
 glRotatef(-25.1,5.,-70.0,1.5); //поворот
 auxSolidSphere(0.005);         //нос
 glTranslatef(0.07,0.0,0.02);   //сдвиг(расположение)
//рот1
 glTranslatef(0.01,-0.003,-0.03);//сдвиг(расположение)
 glColor3f(2.0, 0.0, 0.0);      //цвет
 glScalef(3.0f,1.5f,1.5f);      //ссужение растяжение
 glRotatef(-25.1,5.,-70.0,1.5); //поворот
 auxSolidSphere(0.005);         //рот1
 glTranslatef(-0.01,0.003,0.03);//сдвиг(расположение)

 //рот2
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 glTranslatef(-0.6,0.0,0.0);    //сдвиг(расположение)
 glColor3f(0.15, 0.5, 2.0);     //цвет
 glScalef(3.0,1.5,1.5);         //ссужение растяжение
 glRotatef(-25.1,5.,-70.0,1.5); //поворот
 auxSolidSphere(0.02);
 glPushMatrix();
*/

//Стираем старое изображение в BACK-буфере,т.е. рисуем его под цвет фона 

   //цикл по кадрам
	for (int i=0;i<150;i++) 
	{    glColor3f(0.75, 0.75, 0.75);
	

//тело-шар
 glTranslatef(0.0f,3.2f,0.0f);	//сдвиг(расположение)
 auxSolidSphere(3.0);          //тело-шар
 glTranslatef(0.0f,-3.2f,0.0f);	//сдвиг(расположение)
/*
//тело-конус
 glTranslatef(0.0f,-3.5f,0.0f); //сдвиг(расположение)
// glScalef(1.5,1.5,3.5);         //ссужение растяжение
 //glRotatef(90.0,0.90,0.0,0.0);  //поворот
 auxSolidCone(2.621,1.794);     //тело-конус
 glTranslatef(0.0f,3.5f,0.0f);  //сдвиг(расположение)

//глаз правый
 glTranslatef(12.0f,6.5f,0.3f);  //сдвиг(расположение)
// glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(1.5f,1.5f,3.0f);       //ссужение растяжение
 auxSolidSphere(0.5);            //глаз правый
 glTranslatef(-0.3f,4.0f,-0.3f); //сдвиг(расположение)
//глаз левый
 glTranslatef(-2.0,-4.0,0.3);    //сдвиг(расположение)
// glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(2.0f,2.2f,2.0f);       //ссужение растяжение
 auxSolidSphere(0.225);          //глаз левый
 glTranslatef(0.08,4.0,-0.3);    //сдвиг(расположение)
   /*
//зрачок левый 
   glTranslatef(0.1f,0.09f,0.0);//сдвиг(расположение)
   auxSolidSphere(0.01);
//зрачок правый
   glTranslatef(0.1f,0.09f,0.0);//сдвиг(расположение)
   auxSolidSphere(0.01);
//нос
   glTranslatef(0.1f,0.09f,0.0);//сдвиг(расположение)
   auxSolidSphere(0.005);
//рот1
   glTranslatef(0.1f,0.09f,0.0);//сдвиг(расположение)
   auxSolidSphere(0.005);
  */ 

 //Создаем в BACK-буфере новое изображение
  glTranslatef(0.2f,-0.08f,0.2f);

   
//тело-шар
 glTranslatef(0.0f,3.2f,0.0f);	//сдвиг(расположение)
 glColor3d(0.15, 0.5, 2.0);     //цвет 
 auxSolidSphere(3.0);          //тело-шар
 glTranslatef(0.0f,-3.2f,0.0f);	//сдвиг(расположение)
/*
//тело-конус
 glTranslatef(0.0f,-3.5f,0.0f); //сдвиг(расположение)
 //glScalef(1.5,1.5,3.5);         //ссужение растяжение
// glRotatef(90.0,0.90,0.0,0.0);  //поворот
 glColor3d(0.15, 0.5, 2.0);     //цвет
 auxSolidCone(2.621,1.794);     //тело-конус
 glTranslatef(0.0f,3.5f,0.0f);  //сдвиг(расположение)
 
 //глаз правый
 glTranslatef(12.0f,6.5f,0.3f);  //сдвиг(расположение)
 glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(1.5f,1.5f,3.0f);       //ссужение растяжение
 auxSolidSphere(0.5);            //глаз правый
 glTranslatef(-0.3f,4.0f,-0.3f); //сдвиг(расположение)
//глаз левый
 glTranslatef(-2.0,-4.0,0.3);    //сдвиг(расположение)
 glColor3f(1.0, 1.0, 1.0);       //цвет
// glScalef(2.0f,2.2f,2.0f);       //ссужение растяжение
 auxSolidSphere(0.225);          //глаз левый
 glTranslatef(0.08,4.0,-0.3);    //сдвиг(расположение)
/*
 //зрачок левый
 glTranslatef(0.01,0.0,-0.01);  //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5f,1.5f,1.0f);      //ссужение растяжение
 auxSolidSphere(0.015);
 glTranslatef(-0.01,0.0,0.01);  //сдвиг(расположение)
//зрачок правый
 glTranslatef(0.02,-0.1,-0.01); //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5f,1.5f,1.5f);      //ссужение растяжение
 auxSolidSphere(0.01);
 glTranslatef(-0.02,0.1,0.01);  //сдвиг(расположение)
//нос
 glTranslatef(-0.07,0.0,-0.02); //сдвиг(расположение)
 glColor3f(0.0, 0.0, 0.0);      //цвет
 glScalef(1.5,3.0,1.5);         //ссужение растяжение
 glRotatef(-25.1,5.,-70.0,1.5); //поворот
 auxSolidSphere(0.005);
 glTranslatef(0.07,0.0,0.02);   //сдвиг(расположение)
//рот1
 glTranslatef(0.01,-0.003,-0.03);//сдвиг(расположение)
 glColor3f(2.0, 0.0, 0.0);      //цвет
 glScalef(3.0f,1.5f,1.5f);      //ссужение растяжение
 glRotatef(-25.1,5.,-70.0,1.5); //поворот
 auxSolidSphere(0.005);
 glTranslatef(-0.01,0.003,0.03);//сдвиг(расположение)		

*/
		glFlush();
		SwapBuffers(wglGetCurrentDC());
		
	}

}

/////////////////////////////////////////////////////////////////////////////
// CFirstView printing

BOOL CFirstView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CFirstView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CFirstView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CFirstView diagnostics

#ifdef _DEBUG
void CFirstView::AssertValid() const
{
	CView::AssertValid();
}

void CFirstView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CFirstDoc* CFirstView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFirstDoc)));
	return (CFirstDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFirstView message handlers

int CFirstView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	PIXELFORMATDESCRIPTOR pfd;
	memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
	pfd.nSize=sizeof(PIXELFORMATDESCRIPTOR);
	pfd.nVersion=1;
	pfd.dwFlags=PFD_DRAW_TO_WINDOW|
				PFD_SUPPORT_OPENGL|
				PFD_DOUBLEBUFFER;
	pfd.iPixelType=PFD_TYPE_RGBA;
	pfd.cColorBits=32;
	pfd.cAlphaBits=8;
	pfd.cAccumBits=32;
	pfd.cDepthBits=32;
	pfd.cStencilBits=8;
	pfd.iLayerType=PFD_MAIN_PLANE;
	m_pdc=GetDC();

	int nPixelFormat=ChoosePixelFormat(m_pdc->m_hDC, &pfd);
	if(nPixelFormat==0)
	{	
		MessageBox("Ошибка при выборе формата пикселей");
		return FALSE;
	}

	BOOL bResult=SetPixelFormat(m_pdc->m_hDC, nPixelFormat, &pfd);
	if(!bResult)
	{
		MessageBox("Ошибка при выборе формата пикселей");
		return FALSE;
	}
	if((hrc=wglCreateContext(m_pdc->m_hDC))==NULL)
		return FALSE;
	if(wglMakeCurrent(m_pdc->m_hDC,hrc)==FALSE)
		return FALSE;

	return 0;
}

void CFirstView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
	if(hrc==::wglGetCurrentContext())
	{
		wglMakeCurrent(NULL,NULL);
		wglDeleteContext(hrc);
		hrc=NULL;
	}

	CView::OnDestroy();
}

void CFirstView::InitViewport(int x, int y, int width, int height)
{
	glViewport(x, y, width, height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
//	glOrtho(-10, 10, 7, -7, 2, 12);
	glOrtho(-30, 30, -30, 10, -50, 12);
	glMatrixMode(GL_MODELVIEW);
//	gluLookAt(0,0,1,-1,1,0,-1,-1,1);
	gluLookAt(0,0,1,0,0,0,0,1,0);
}


Соседние файлы в папке Движение грузовика