Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Движение грузовика / FirstView
.cpp// 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);
}
Соседние файлы в папке Движение грузовика