【博客源码素材】【芝加哥到纽约源码】【aspnetcore 单例源码】矩阵时钟源码_矩阵时钟源码是什么

2024-12-24 20:54:43 来源:一拳超人台服源码 分类:休闲

1.����ʱ��Դ��

矩阵时钟源码_矩阵时钟源码是矩阵矩阵<strong>博客源码素材</strong>什么

����ʱ��Դ��

       #include "stdafx.h"

       #include "MFCFrame1.h"

       #include "MFCFrame1Doc.h"

       #include "MFCFrame1View.h"

       #include "PointDialog.h"

       #include "math.h"

       GLUquadricObj *objCylinder = gluNewQuadric();

       #ifdef _DEBUG

       #define new DEBUG_NEW

       #undef THIS_FILE

       static char THIS_FILE[] = __FILE__;

       #endif

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View

       IMPLEMENT_DYNCREATE(CMFCFrame1View, CView)

       BEGIN_MESSAGE_MAP(CMFCFrame1View, CView)

        //{ { AFX_MSG_MAP(CMFCFrame1View)

        ON_WM_CREATE()

        ON_WM_DESTROY()

        ON_WM_SIZE()

        ON_COMMAND(IDM_ZIXUAN, OnZixuan)

        ON_WM_TIMER()

        ON_COMMAND(IDM_ChangDirect, OnChangDirect)

        //}}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()

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View construction/destruction

       CMFCFrame1View::CMFCFrame1View()

       {

        // TODO: add construction code here

        this->m_GLPixelIndex = 0;

        this->m_hGLContext = NULL;

        Angle1=0.0;

        Angle2=.0;

        Timer=0;

        x=0.0;

        z=0.0;

        juli=.0;

       }

       CMFCFrame1View::~CMFCFrame1View()

       {

       }

       BOOL CMFCFrame1View::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);

       }

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View drawing

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View printing

       BOOL CMFCFrame1View::OnPreparePrinting(CPrintInfo* pInfo)

       {

        // default preparation

        return DoPreparePrinting(pInfo);

       }

       void CMFCFrame1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

       {

        // TODO: add extra initialization before printing

       }

       void CMFCFrame1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

       {

        // TODO: add cleanup after printing

       }

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View diagnostics

       #ifdef _DEBUG

       void CMFCFrame1View::AssertValid() const

       {

        CView::AssertValid();

       }

       void CMFCFrame1View::Dump(CDumpContext& dc) const

       {

        CView::Dump(dc);

       }

       CMFCFrame1Doc* CMFCFrame1View::GetDocument() // non-debug version is inline

       {

        ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCFrame1Doc)));

        return (CMFCFrame1Doc*)m_pDocument;

       }

       #endif //_DEBUG

       /////////////////////////////////////////////////////////////////////////////

       // CMFCFrame1View message handlers

       BOOL CMFCFrame1View::SetWindowPixelFormat(HDC hDC)

       {

        PIXELFORMATDESCRIPTOR pixelDesc=

        {

        sizeof(PIXELFORMATDESCRIPTOR),

        1,

        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|

        PFD_DOUBLEBUFFER|PFD_SUPPORT_GDI,

        PFD_TYPE_RGBA,

        ,

        0,0,0,0,0,0,

        0,

        0,

        0,

        0,0,0,0,

        ,

        0,

        0,

        PFD_MAIN_PLANE,

        0,

        0,0,0

        };

        this->m_GLPixelIndex = ChoosePixelFormat(hDC,&pixelDesc);

        if(this->m_GLPixelIndex==0)

        {

        this->m_GLPixelIndex = 1;

        if(DescribePixelFormat(hDC,this->m_GLPixelIndex,sizeof(PIXELFORMATDESCRIPTOR),&pixelDesc)==0)

        {

        return FALSE;

        }

        }

        if(SetPixelFormat(hDC,this->m_GLPixelIndex,&pixelDesc)==FALSE)

        {

        return FALSE;

        }

        return TRUE;

       }

       int CMFCFrame1View::OnCreate(LPCREATESTRUCT lpCreateStruct)

       {

        if (CView::OnCreate(lpCreateStruct) == -1)

        return -1;

        // TODO: Add your specialized creation code here

        HWND hWnd = this->GetSafeHwnd();

        HDC hDC = ::GetDC(hWnd);

        if(this->SetWindowPixelFormat(hDC)==FALSE)

        {

        return 0;

        }

        if(this->CreateViewGLContext(hDC)==FALSE)

        {

        return 0;

        }

        return 0;

       }

       BOOL CMFCFrame1View::CreateViewGLContext(HDC hDC)

       {

        this->m_hGLContext = wglCreateContext(hDC);

        if(this->m_hGLContext==NULL)

        { //创建失败

        return FALSE;

        }

        if(wglMakeCurrent(hDC,this->m_hGLContext)==FALSE)

        { //选为当前RC失败

        return FALSE;

        }

        return TRUE;

       }

       void CMFCFrame1View::OnDestroy()

       {

        CView::OnDestroy();

        // TODO: Add your message handler code here

        if(wglGetCurrentContext()!=NULL)

        {

        wglMakeCurrent(NULL,NULL);

        }

        if(this->m_hGLContext!=NULL)

        {

        wglDeleteContext(this->m_hGLContext);

        this->m_hGLContext = NULL;

        }

       }

       void CMFCFrame1View::OnSize(UINT nType, int cx, int cy)

       {

        CView::OnSize(nType, cx, cy);

        // TODO: Add your message handler code here

        GLsizei width,height;

        GLdouble aspect;

        width = cx;

        height = cy;

        if(cy==0)

        {

        aspect = (GLdouble)width;

        }

        else

        {

        aspect = (GLdouble)width/(GLdouble)height;

        }

        glViewport(0,0,width,height);

        glMatrixMode(GL_PROJECTION);

        glLoadIdentity();

        gluPerspective(.0,aspect,5.0,.0);

       }

       void CMFCFrame1View::OnDraw(CDC* pDC)

       {

        CMFCFrame1Doc* pDoc = GetDocument();

        ASSERT_VALID(pDoc);

        // TODO: add draw code for native data here

        CPaintDC dc(this);

        glClearColor(1.0,1.0,1.0,1.0);

        glClear(GL_COLOR_BUFFER_BIT);

        glMatrixMode(GL_MODELVIEW);

        glLoadIdentity();

        gluLookAt(0.0,0.0,.0,0.0,0.0,0.0,0.0,1.0,0.0);

       glRotatef(-.0,1.0,0.0,0.0);/*返回原坐标*/

        glTranslatef(-3.0,0.0,0.0);

       SwapBuffers(dc.m_ps.hdc);

        glDrawBuffer (GL_BACK);

        glFlush();

       }

       void CMFCFrame1View::OnZixuan()

       {

        // TODO: Add your command handler code here

        Timer=1;

        SetTimer(1,,NULL);

       }

       void CMFCFrame1View::OnTimer(UINT nIDEvent)

       {

        // TODO: Add your message handler code here and/or call default

        CPaintDC dc(this);

        if (Timer==1)

        { Angle1=Angle1-1;

        Angle2=Angle2-1;

       glClearColor(1.0,1.0,1.0,1.0);

        glClear(GL_COLOR_BUFFER_BIT);

        glMatrixMode(GL_MODELVIEW);/**/

        glLoadIdentity();

        gluLookAt(0.0,.0,0.,0.0,0.0,0.0,0.0,1.0,0.0);

       glPushMatrix();

        glColor3f(0.7,0.7,0.7);

        glTranslatef(0.0,0.0,1.1);

        glRotatef(-.0,1.0,0.0,0.0);

        glutSolidCone(5.0,0.0,.0,.0); /*底盘*/

        glPopMatrix();

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glTranslatef(3.9,0.,1.0); /*刻度*/

        glRotatef(.0,0.0,1.0,0.0);

        gluCylinder(objCylinder, 0., 0., 0.8, , 9);

        glPopMatrix();

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glTranslatef(-4.7,0.,1.0); /*刻度*/

        glRotatef(.0,0.0,1.0,0.0);

        gluCylinder(objCylinder,0., 0., 0.8, , 9);

        glPopMatrix();

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glTranslatef(0.0,0.,-2.9); /*刻度*/

        glRotatef(.0,0.0,1.0,0.0);

        gluCylinder(objCylinder,0., 0., 0.8, , 9);

        glPopMatrix();

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glTranslatef(0.0,0.,5.8); /*刻度*/

        glRotatef(.0,0.0,1.0,0.0);

        gluCylinder(objCylinder,0., 0.,0.8, , 9);

        glPopMatrix();

        glPushMatrix();

        glColor3f(0.0,1.0,0.0);

        glRotatef(.0,0.0,1.0,0.0);

        glTranslatef(-0.,0.,0.7); /*时针*/

        glRotatef(Angle1/,0.0,1.0,0.0);

        gluCylinder(objCylinder, 0., 0., 2.5, , 9);

        glPopMatrix();

        glPushMatrix();

        glColor3f(1.0,0.0,0.0);

        glTranslatef(0.0,0.,1.0); /*分针*/

        glRotatef(Angle2/,0.0,1.0,0.0);

        gluCylinder(objCylinder, 0., 0., 3.5, , 9);

        glPopMatrix();

       glPushMatrix();

        glColor3f(0.0,0.0,0.5);

        glTranslatef(0.0,0.,1.0); /*秒针*/

        glRotatef(Angle1,0.0,1.0,0.0);

        gluCylinder(objCylinder, 0., 0., 4.5, , 9);

        glPopMatrix();

       SwapBuffers(dc.m_ps.hdc);

        glDrawBuffer (GL_BACK);

        glFlush();

        }

        else if(Timer==2)

        { glClearColor(1.0,1.0,1.0,1.0);

        glClear(GL_COLOR_BUFFER_BIT);

        if (juli>.0)

        {

        glMatrixMode(GL_MODELVIEW);/*建立了从世界坐标系到观察坐标系的转换矩阵*/

        glLoadIdentity();

        gluLookAt(0.0,8.0,juli,0.0,0.0,0.0,0.0,1.0,0.0);

        juli=juli-0.1;

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glRotatef(-.0,1.0,0.0,0.0);

        glutWireCone(.0,0.0,.0,.0); /*画高度为0的圆锥*/

        glPopMatrix();

        glPushMatrix();

        glColor3f(1.0,0.0,1.0);

        glLineWidth(4.0);

        glTranslatef(4.0,1.0,0.0);

        glutWireOctahedron(); /*画八面体*/

        glLineWidth(1.0);

        glPopMatrix();

       glPushMatrix();

        glColor3f(1.0,0.0,1.0);

        glTranslatef(0.0,1.1,0.0);

        glRotatef(Angle2,0.0,1.0,0.0);

        gluCylinder(objCylinder, 1.0, 1.0, .0, , 9); /*画壶*/

        glPopMatrix();

        }

        else if(juli<=.0)

        {

        Angle2=Angle2+0.;

        if (Angle2==.0)

        Angle2=0.0;

        glMatrixMode(GL_MODELVIEW);/*建立了从世界坐标系到观察坐标系的转换矩阵*/

        glLoadIdentity();

        x=.0*sin(Angle2);

        z=.0*cos(Angle2);

        gluLookAt(x,5.0,z,0.0,0.0,0.0,0.0,1.0,0.0);

        glPushMatrix();

        glColor3f(0.0,0.0,0.0);

        glRotatef(-.0,1.0,0.0,0.0);

        glutWireCone(.0,0.0,.0,.0); /*画高度为0的圆锥*/

        glPopMatrix();

        glPushMatrix();

        glColor3f(1.0,0.0,1.0);

        glLineWidth(4.0);

        glTranslatef(4.0,1.0,0.0);

        glutWireOctahedron(); /*画八面体*/

        glLineWidth(1.0);

        glPopMatrix();

       glPushMatrix();

        glColor3f(1.0,0.0,1.0);

        glTranslatef(0.0,1.1,0.0);

        gluCylinder(objCylinder, 1.0, 1.0, .0, , 9);

        glPopMatrix();

        }

        SwapBuffers(dc.m_ps.hdc);

        glDrawBuffer (GL_BACK);

        glFlush();

        }

        CView::OnTimer(nIDEvent);

       }

       void CMFCFrame1View::OnChangDirect()

       {

        // TODO: Add your command handler code here

        Timer=2;

        SetTimer(1, ,NULL);

       }

本文地址:http://04.net.cn/news/29d324196729.html 欢迎转发