精华内容
下载资源
问答
  • 画立方体-计算机图形学实验.doc (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分计算机图形学实验——画立方体(通过视向变换等)具体实现如下(仅供参考)一...

    a7f4a3f590493a1e451dd952a488fd7c.gif 画立方体-计算机图形学实验.doc

    (8页)

    b7bef445891b023236dd80b9d2cba5b2.gif

    本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

    9.90 积分

    计算机图形学实验——画立方体(通过视向变换等)具体实现如下(仅供参考)一、添加一个头文件Data.hData文件包含立方体数据:具体代码:double Vertex[8][3]={ {0,20,0},{30,20,0},{30,20,15},{0,20,15}, {0,0,0},{30,0,0},{30,0,15},{0,0,15}};int Edge[12][2]={ {0,1},{1,2},{2,3},{3,0}, {4,5},{5,6},{6,7},{7,4}, {0,4},{1,5},{2,6},{3,7}};double Vertex1[8][3];//视点double Eye[3]={20.0f,30.0f,56.1f};//窗口数据//int Window[4]={-30,5,-15,3};int Window[4]={-20,-15,-2,-20};//视区数据int ViewPort[4]={200,250,180,15};二、View类头文件6_Draw cubeView.h // 6_Draw cubeView.h : interface of the CMy6_DrawcubeView class///#if !defined(AFX_6_DRAWCUBEVIEW_H__940E4DA8_261A_46F3_82C2_259B9B805817__INCLUDED_)#define AFX_6_DRAWCUBEVIEW_H__940E4DA8_261A_46F3_82C2_259B9B805817__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CMy6_DrawcubeView : public CView{protected: // create from serialization only CMy6_DrawcubeView(); DECLARE_DYNCREATE(CMy6_DrawcubeView)// Attributespublic: CMy6_DrawcubeDoc* GetDocument();bool draw;void drawCube();// Operationspublic:// Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMy6_DrawcubeView) public: virtual void OnDraw(CDC* pDC); // overridden to draw this view virtual BOOL PreCreateWindow(CREATESTRUCT& cs); protected: virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); //}}AFX_VIRTUAL// Implementationpublic: virtual ~CMy6_DrawcubeView();#ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const;#endifprotected:// Generated message map functionsprotected: //{{AFX_MSG(CMy6_DrawcubeView) afx_msg void Ondrawcube(); afx_msg void OnUpdatedrawcube(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP()};#ifndef _DEBUG // debug version in 6_Draw cubeView.cppinline CMy6_DrawcubeDoc* CMy6_DrawcubeView::GetDocument() { return (CMy6_DrawcubeDoc*)m_pDocument; }#endif///{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_6_DRAWCUBEVIEW_H__940E4DA8_261A_46F3_82C2_259B9B805817__INCLUDED_)三、View 类实现代码:6_Draw cubeView.cpp代码:// 6_Draw cubeView.cpp : implementation of the CMy6_DrawcubeView class//#include "stdafx.h"#include "6_Draw cube.h"#include "data.h"#include #include "6_Draw cubeDoc.h"#include "6_Draw cubeView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/// CMy6_DrawcubeViewIMPLEMENT_DYNCREATE(CMy6_DrawcubeView, CView)BEGIN_MESSAGE_MAP(CMy6_DrawcubeView, CView) //{{AFX_MSG_MAP(CMy6_Dra。省略部分。 CMy6_DrawcubeView drawingvoid CMy6_DrawcubeView::OnDraw(CDC* pDC){ CMy6_DrawcubeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CClientDC dc(this); dc.TextOut(10,10,"计算计图形学作业六:画立方体"); dc.TextOut(10,30,"姓名:晓晓"); dc.TextOut(10,50,"学号:200812301004"); if(draw) { //dc.TextOut(100,100,"fdsfsdf"); drawCube(); } // TODO: add draw code for native data here}/// CMy6_DrawcubeView printingBOOL CMy6_DrawcubeView::OnPreparePrinting(CPrintInfo* pInfo){ // default preparation return DoPreparePrinting(pInfo);}void CMy6_DrawcubeView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){ // TODO: add extra initialization before printing}void CMy6_DrawcubeView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){ // TODO: add cleanup after printing}/// CMy6_DrawcubeView diagnostics#ifdef _DEBUGvoid CMy6_DrawcubeView::AssertValid() const{ CView::AssertValid();}void CMy6_DrawcubeView::Dump(CDumpContext& dc) const{ CView::Dump(dc);}CMy6_DrawcubeDoc* CMy6_DrawcubeView::GetDocument() // non-debug version is inline{ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy6_DrawcubeDoc))); return (CMy6_DrawcubeDoc*)m_pDocument;}#endif //_DEBUG/// CMy6_DrawcubeView message handlersvoid CMy6_DrawcubeView::Ondrawcube() { // TODO: Add your command handler code here draw=!draw; CMy6_DrawcubeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDoc->UpdateAllViews(NULL);}void CMy6_DrawcubeView::OnUpdatedrawcube(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here if(draw) { pCmdUI->SetCheck(1); } else {pCmdUI->SetCheck(0);}}void CMy6_DrawcubeView::drawCube(){ //读入模型 //定义视点 //视向变换 double V[8][3]; int i; double a=sqrt(Eye[0]*Eye[0]+Eye[1]*Eye[1]), b=sqrt(Eye[0]*Eye[0]+Eye[1]*Eye[1]+Eye[2]*Eye[2]); for(i=0;i<8;i++) { V[i][0]= Vertex[i][0]*(-Eye[1]/a) + Vertex[i][1]*(Eye[0]/a) ; V[i][1]= Vertex[i][0]*(-Eye[0]*Eye[2]/(a*b)) + Vertex[i][1]*(Eye[1]*Eye[2]/(a*b)) + Vertex[i][2]*a/b; V[i][2]= Vertex[i][0]*(-Eye[0]/b) + Vertex[i][1]*(-Eye[1]/b) + Vertex[i][2]*(-Eye[2]/b); } //投影到XY平面 //窗口视区变换 double a1=(ViewPort[1]-ViewPort[0])/(Window[1]-Window[0]); double b1=ViewPort[0]-a1*Window[0]; double c1=(ViewPort[3]-ViewPort[2])/(Window[3]-Window[2]); double d1=ViewPort[2]-c1*Window[2]; for(i=0;i<8;i++) { V[i][0]=a1*V[i][0]+b1; V[i][1]=c1*V[i][1]+d1; } //画出投影图 CClientDC dc(this); for(i=0;i<12;i++) { dc.MoveTo((int)V[Edge[i][0]][0],(int)V[Edge[i][0]][1]); dc.LineTo((int)V[Edge[i][1]][0],(int)V[Edge[i][1]][1]); }}三、效果图 关 键 词: 实验 立方体 图形 计算机

    4d91c43bfc72ca913299809b07b4968f.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

    展开全文
  • 本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下:利用Python3中turtle的绘制超立方体。绘图思路:1)求出边长100的超立方体的点坐标;以竖直线为依据,将点分为上下两组:a为...

    本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下:

    利用Python3中turtle的绘制超立方体。

    201907150037430825.jpg

    绘图思路:

    1)求出边长100的超立方体的点坐标;

    以竖直线为依据,将点分为上下两组:

    a为上边点列表,b为下边点列表:

    a = [[120.71, 50], [50, 120.71], [-50, 120.71], [-120.71, 50], [-50, -20.71], [50, -20.71], [20.71, 50],[-20.71, 50]]

    b = [[120.71, -50], [50, 20.71], [-50, 20.71], [-120.71, -50], [-50, -120.71], [50, -120.71], [20.71, -50],[-20.71, -50]]

    2)编写绘制直线函数;

    3)编写主程序:绘制点,绘制六角形直线,绘制竖直直线,绘制斜线

    代码片段如下,可能不是最简洁的,如有好的建议,请不吝指正。

    import turtle

    # 创建绘制直线函数

    def drawLine(p1, p2, size=3, color="black"):

    turtle.penup()

    turtle.goto(p1)

    turtle.pensize(size)

    turtle.pencolor(color)

    turtle.pendown()

    turtle.goto(p2)

    def main():

    # 求取点后,将超立方体点分为上下两个部分,两个列表

    a = [[120.71, 50], [50, 120.71], [-50, 120.71], [-120.71, 50], [-50, -20.71], [50, -20.71], [20.71, 50],

    [-20.71, 50]]

    b = [[120.71, -50], [50, 20.71], [-50, 20.71], [-120.71, -50], [-50, -120.71], [50, -120.71], [20.71, -50],

    [-20.71, -50]]

    # 绘制点

    turtle.pencolor("red")

    turtle.penup()

    for i in range(len(a)):

    turtle.goto(a[i])

    turtle.down()

    turtle.dot(10, "red")

    turtle.penup()

    for i in range(len(b)):

    turtle.goto(b[i])

    turtle.down()

    turtle.dot(10, "red")

    turtle.penup()

    # 绘制六边形直线

    for i in range(6):

    if i <= 4:

    drawLine(a[i], a[i + 1])

    drawLine(b[i], b[i + 1])

    else:

    drawLine(a[i], a[0])

    drawLine(b[i], b[0])

    # 绘制竖直线

    for i in range(len(a)):

    drawLine(a[i], b[i])

    # 绘制斜线

    drawLine(a[6], a[0])

    drawLine(a[6], a[2])

    drawLine(a[6], a[4])

    drawLine(a[7], a[1])

    drawLine(a[7], a[3])

    drawLine(a[7], a[5])

    drawLine(b[6], b[0])

    drawLine(b[6], b[2])

    drawLine(b[6], b[4])

    drawLine(b[7], b[1])

    drawLine(b[7], b[3])

    drawLine(b[7], b[5])

    turtle.done()

    if __name__ == '__main__':

    main()

    pass

    运行结果:

    201907150037433100.png

    注:使用eclipse+pyDev结合Python3环境开发时,会提示:Undefined variable from import: penup及Undefined variable from import: goto等错误,无需理会直接运行仍可绘制出该图形。

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • 本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下: 利用Python3中turtle的绘制超立方体。 绘图思路: 1)求出边长100的超立方体的点坐标; 以竖直线为依据,将点分为上下两组: ...
  • matlab画立方体

    2011-11-01 15:44:48
    利用matlab画立方体,可选择填充颜色。
  • 使用Visio画立方体

    千次阅读 2020-12-13 10:58:36
    使用Visio立方体步骤1:立方体形似步骤2:立方体神似注意 步骤1:立方体形似 借助两个矩形绘制立方体: 连接棱边: 补全其他线条,去掉原有的两个辅助矩形: 注意,避免出现如下情况: 步骤2:立方体神似 ...


    步骤1:立方体形似

    借助两个矩形绘制立方体:
    在这里插入图片描述
    连接棱边:
    在这里插入图片描述
    补全其他线条,去掉原有的两个辅助矩形:
    在这里插入图片描述
    注意,避免出现如下情况:
    在这里插入图片描述

    步骤2:立方体神似

    确认visio开启了开发者模式,如果没有,请按照如下顺序打开:文件→选项→自定义功能区→开发工具,勾选并确认即可。
    在这里插入图片描述
    在这里插入图片描述
    选中之前画的图形,打开开发工具,先点击组合,现在他成为了一个整体;然后点击连接;然后是拆分;一个立方体就大功告成了,你可以给不同侧面上色,然后点击组合;如果不需要分开上色就直接再选中立方体,点击组合即可统一上色。在这里插入图片描述
    成品展示:
    在这里插入图片描述

    注意

    1. 使用Visio进行立方体绘制,先用简单线条拼接,拼接过程中,最好使线条交叉,避免在断点处出现“若即若离”的状态,否则组合、连接等操作会出现问题。
    2. 可以把画好的模型保存成模板,之后直接使用。简单做法是保存在这里:左侧形状中点击更多形状->我的形状 ...,直接拖动到收藏夹或者自定义的模板中即可。

    参考链接:
    1. visio绘制立方体
    展开全文
  • 如何用PPT画立方体的形状(多个立方体堆叠) 如何用PPT画立方体的形状 第一步 先插入一个长方形,然后再设置形状大小,我这里设置高度0.33厘米,宽度0.33厘米 第二步 复制这个正方形,右击 选择设置形状格式 选择三...

    如何用PPT画立方体的形状(多个立方体堆叠)

    如何用PPT画立方体的形状

    第一步

    先插入一个长方形,然后再设置形状大小,我这里设置高度0.33厘米,宽度0.33厘米

    第二步

    复制这个正方形,右击 选择设置形状格式 选择三维旋转 设置顶面参数(46.2,296.3, 317.0),同理设置侧面参数(300,40,0)

    第三步

    适当手动调整位置,然后选中三个面,组合即可。

    如何画多个小立方体堆叠效果

    只需要将三个面重复复制,然后适当调整位置关系即可(注意调节的过程中可能要微调三个不同面尺寸)
    多个立方体堆叠效果图

    展开全文
  • 有关计算机图形学的立方体动态画家隐面算法 出自清华大学出版社的《计算机图形学实践教程》。很有借鉴的价值哦
  • //画立方体 #include <iostream> #define GLEW_STATIC #include"Shader.h" #include"Camera.h" #include<GL/glew.h> #include<GLFW/glfw3.h> #include<glm/glm.hpp> #include<glm/gtc...
  • 上一篇文章中是关于二维的平面图形,这里有个地方需要改进一下: 上一篇文章中每个方法中都有这么两句: ...画立方体 立方体其实也是由三角形组成的,立方体包含六个面,每个面上有两个三角形,我们挨个
  • /* 立方体旋转动画 */ animation: rotate 20s infinite linear; } /* 立方体六面样式 */ .box>div{ width: 200px; height: 200px; border: 1px solid black; box-sizing: border-box; /* 绝对定位使所以面...
  • 完会动的 3D 矩形,现在玩点高级的,一个会动的 3D 彩色的立方体。 一、代码 main.cpp #include &amp;amp;lt;iostream&amp;amp;gt; //GLEW #define GLEW_STATIC #include &amp;amp;lt;GL/glew....
  • 主要为大家提供立方体的顶点数组,及基本的图形绘制方法。一个很基础的openGL程序。这个立方体是通过12条棱线得到的。程序中还对该立方体进行了旋转和平移。
  • 应用c++ MFC实现立方体动态画家隐面算法,配套清华大学出版社的《计算机图形学基础教程》。
  • 完自己会动的立方体,下面一个由鼠标和键盘控制的立方体。 一、代码 main.cpp #include &amp;amp;lt;iostream&amp;amp;gt; //GLEW #define GLEW_STATIC #include &amp;amp;lt;GL/glew.h&...
  • (2)以三维坐标系 Oxyz 的原点为立方体体心绘制边长为 a 的立方体线框模 型。  (3)使用旋转变换矩阵计算立方体线框模型围绕三维坐标系原点变换前后 的顶点坐标。  (4)使用双缓冲技术在屏幕上绘制三维立方...
  • 立方体动态隐线算法,计算机图形学。很有用的!!!
  • 一个可以由鼠标键盘控制的立方体 本节将会再OpenGL中配置一个摄像机,让正方体能够再3D场景中自由移动,同时也会讨论鼠标和键盘输入。OpenGL本身没有相机的概念,我们可以通过把物体往相反的方向移动来模拟出摄像...
  • 利用OPENGL图形学绘制一个立方体,并实现简单的旋转
  • opengl从三角形到一个立方体(一)

    万次阅读 多人点赞 2017-09-30 09:33:43
    一个立方体,然后设计一个camera类。本文涉及的内容有点多,请读者耐心的看下去,这里不仅有软件的配置,还有shader的应用,以及摄像机类的编写,还包括一些矩阵变换之类的,闲话少说,具体内容一步一步展开。按照...
  • 资源内容:绘制立方体并消隐显示 语言:C++ 运行环境:Visual Studio 2013/更高版本
  • 开始绘制立体图形立方体正四面体

    千次阅读 2016-04-25 18:07:24
    刚刚学会绘制B曲线和曲面,突然想学习绘制立体图形了,说干就干,百度了一下,从立方体开始 做了好好长时间终于完成了。。实现的代码如下 #include #include #include #include static const GLfloat vertex_...
  • 计算机图形学作业( 三):使用openGL一个立方体,并实现平移、旋转和放缩变换题目引入GLM库画立方体模型、观察和投影 题目 引入GLM库 利用openGL进行3D绘图需要用到大量的数学矩阵运算,而OpenGL没有自带...
  • 计算机图形学作业( 六):一个平面和一些立方体并实现阴影映射引入依赖库阴影映射原理 引入依赖库 本次实验需要用到 OpenGL 官方的 Camera 库和 Shader 库。Camera 库内包含一个摄像机类,可以帮助我们快速地...
  • 计算机图形学作业( 五):一个立方体并实现 Phong Shading 和 Gouraud Shading 两种阴影颜色和光照场景Phong Shading环境光照漫反射光照镜面光照着色器代码结果Gouraud Shading 颜色和光照场景 我们在现实生活...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,651
精华内容 3,460
关键字:

如何画立方体图形