{"id":486,"date":"2021-07-03T11:11:12","date_gmt":"2021-07-03T03:11:12","guid":{"rendered":"https:\/\/swordofmorning.com\/?p=486"},"modified":"2025-10-09T13:55:52","modified_gmt":"2025-10-09T05:55:52","slug":"swust-computer-graphics-experiment-3-perspective-projection-of-stereo-wireframe-model","status":"publish","type":"post","link":"https:\/\/swordofmorning.com\/index.php\/2021\/07\/03\/swust-computer-graphics-experiment-3-perspective-projection-of-stereo-wireframe-model\/","title":{"rendered":"SWUST \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 \u5b9e\u9a8c\u4e09 \u7acb\u4f53\u7ebf\u6846\u6a21\u578b\u900f\u89c6\u6295\u5f71"},"content":{"rendered":"<p>&emsp;&emsp;\u7ed8\u52363D\u56fe\u5f62\uff0c\u6309\u9f20\u6807\u5207\u6362\u5176\u89c2\u5bdf\u89c6\u89d2\u4ee5\u8fbe\u5230\u65cb\u8f6c\u7684\u76ee\u7684\u3002<br \/>\n&emsp;&emsp;\u201c\u6211\u4ee5\u524d\u8fd8\u4f1a\u8fd9\u4e2a\uff1f\u6211\u90fd\u60ca\u4e86\u201d\uff0c\u8fd9\u662f\u6211\u5927\u4e8c\u505a\u7684\uff0c\u4e00\u5e74\u591a\u4ee5\u524d\u7684\u6587\u7ae0\u4e86\u3002<\/p>\n<pre><code class=\"language-cpp\">#include &lt;iostream&gt;\n#include &lt;GL\/glut.h&gt;\n\n\/* -- - \u5e38\u91cf-- - *\/\nconst int HEIGHT(800);\nconst int WIDTH(800);\n\nvoid Display();\nvoid Reshape(int w, int h);\n\nint time(0);\n\nint main(int argc, char** argv)\n{\n    glutInit(&amp;argc, argv);\n    \/\/glut\u521d\u59cb\u5316\n\n    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);\n    \/\/\u53cc\u7f13\u5b58\u6a21\u5f0f\n\n    glutInitWindowSize(WIDTH, HEIGHT);\n    glutInitWindowPosition(50, 100);\n    \/\/\u7a97\u53e3\u521d\u59cb\u5316\n\n    glClearColor(0, 0, 0, 1);\n    \/\/\u7a97\u53e3\u989c\u8272\n\n    glutCreateWindow(&quot;Window - 3D&quot;);\n    \/\/\u7a97\u53e3\n\n    glutDisplayFunc(Display);\n    glutReshapeFunc(Reshape);\n    glutMainLoop();\n\n    return 0;\n}\n\nvoid Display()\n{\n    glClearColor(1.0, 1.0, 1.0, 0.0);\n    glClear(GL_COLOR_BUFFER_BIT);\n    glLoadIdentity();\n    gluLookAt(4, 0, 1.5, 0, 0, 0, 1, 1, time++);\n\n    time &gt;= 3 ? time = -3:time;\n\n    std::cout &lt;&lt; &quot;\u5f53\u524d\u89c2\u5bdf\u89d2\u5ea6\uff1a(&quot; &lt;&lt; 1 &lt;&lt; &quot;, &quot; &lt;&lt; 1 &lt;&lt; &quot;, &quot; &lt;&lt; time &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;\n\n    \/\/\u7ed8\u5236\u6b63\u65b9\u4f53\u7684\u9762\n    glColor3f(0, 1, 0);\n    glBegin(GL_QUADS);\n    \/\/---1---\n    glNormal3f(-1, 0, 0);\/\/\u8bbe\u7f6e\u70b9\u7684\u6cd5\u5411\u91cf\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    glVertex3f(0.5, 0.5, -0.5);\n    \/\/---2---\n    glNormal3f(-1, 0, 0);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    \/\/---3---\n    glNormal3f(0, 1, 0);\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    glVertex3f(0.5, 0.5, -0.5);\n    \/\/---4---\n    glNormal3f(0, -1, 0);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    \/\/---5---\n    glNormal3f(0, 0, 1);\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    \/\/---6---\n    glNormal3f(0, 0, -1);\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glEnd();\n\n    \/\/draw\n    glColor3f(0, 0, 0);\n    glLineWidth(2.0f);\n    \/\/\u7ed8\u5236\u6b63\u65b9\u4f53\u7684\u8fb9\n    glBegin(GL_LINES);\n    \/\/---1---\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(0.5, 0.5, 0.5);\n    \/\/---2---\n    glVertex3f(0.5, 0.5, -0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    glVertex3f(0.5, 0.5, -0.5);\n    \/\/---3---\n    glVertex3f(0.5, 0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, 0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    glVertex3f(0.5, -0.5, -0.5);\n    glVertex3f(0.5, 0.5, -0.5);\n    glVertex3f(0.5, 0.5, -0.5);\n    glVertex3f(0.5, 0.5, 0.5);\n    \/\/---4---\n    glVertex3f(-0.5, 0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, 0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(-0.5, -0.5, -0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    glVertex3f(-0.5, 0.5, -0.5);\n    glVertex3f(-0.5, 0.5, 0.5);\n    glEnd();\n\n    \/\/\u53cc\u7f13\u5b58\u4f7f\u7528glutSwapBuffers\uff0c\u4f46\u7f13\u5b58glFlush\n    glutSwapBuffers();\n}\n\nvoid Reshape(int w, int h)\n{\n    glMatrixMode(GL_PROJECTION);\n    glLoadIdentity();\n    glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 10.0);\n    glMatrixMode(GL_MODELVIEW);\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&emsp;&emsp;\u7ed8\u52363D\u56fe\u5f62\uff0c\u6309\u9f20\u6807\u5207\u6362\u5176\u89c2\u5bdf\u89c6\u89d2\u4ee5\u8fbe\u5230\u65cb\u8f6c\u7684\u76ee\u7684\u3002 &emsp;&emsp;\u201c\u6211\u4ee5\u524d\u8fd8\u4f1a\u8fd9\u4e2a\uff1f\u6211\u90fd\u60ca\u4e86\u201d &#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[238,237],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/486"}],"collection":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/comments?post=486"}],"version-history":[{"count":1,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/486\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/486\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/media?parent=486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/categories?post=486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/tags?post=486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}