精华内容
下载资源
问答
  • 2021-04-18 11:41:58

    function boxplot3(x0,y0,z0,lx,ly,lz,k)

    %x0,y0,z0分别为立方体起始坐标;lx,ly,lz分别为长,宽,高;

    %k为颜色参数需要加''例:boxplot3(x0,y0,z0,lx,ly,lz,'r')为红色填充图

    x=zeros(6,5);y=zeros(6,5);z=zeros(6,5);

    x=[x0 x0+lx x0+lx x0 x0;

    x0 x0 x0 x0 x0;

    x0 x0+lx x0+lx x0 x0;

    x0 x0+lx x0+lx x0 x0;

    x0 x0+lx x0+lx x0 x0;

    x0+lx x0+lx x0+lx x0+lx x0+lx];

    y=[y0 y0 y0 y0 y0;

    y0 y0 y0+ly y0+ly y0;

    y0 y0 y0+ly y0+ly y0;

    y0 y0 y0+ly y0+ly y0;

    y0+ly y0+ly y0+ly y0+ly y0+ly;

    y0 y0 y0+ly y0+ly y0];

    z=[z0 z0 z0+lz z0+lz z0;

    z0 z0+lz z0+lz z0 z0;

    z0+lz z0+lz z0+lz z0+lz z0+lz;

    z0 z0 z0 z0 z0;

    z0 z0 z0+lz z0+lz z0;

    z0 z0+lz z0+lz z0 z0];

    plot3(1000,1000,1000) %初始的范围为x:0~1000,y:0~1000,z:0~1000 可以改动设置范围进行调整

    hold on

    plot3(0,0,0)

    %kk=[k k k k k];

    for i=1:6                   %进行颜色填充

    fill3(x(i,:),y(i,:),z(i,:),k)

    end

    hold off

    set(gca,'xgrid','on','ygrid','on','zgrid','on');

    set(gca,'ZDir','reverse');

    set(get(gca,'xLabel'),'String','x轴');%设置坐标轴名称

    set(get(gca,'yLabel'),'String','y轴');

    set(get(gca,'zLabel'),'String','z轴');

    set(gca,'box','on');%设置成网格化,看起来方便,如果不用可以把on改成off

    更多相关内容
  • 本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下: 利用Python3中turtle的绘制超立方体。 绘图思路: 1)求出边长100的超立方体的点坐标; 以竖直线为依据,将点分为上下两组: ...
  • 画立方体-计算机图形学实验.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  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

    展开全文
  • matlab画立方体

    千次阅读 2021-05-06 02:28:55
    作一立方体,使其体积等于单位正 方体的两倍.对边长取不同位数,显示计算结果误差。 H=power(2,1/3); D=1; ......三维重建采用移动立方体法(MarchingCubes,MC)算法,对脑部 其中驴上≯。炉土尹;矿亍尹;N---数据集像素...

    MATLAB 程序设计方法 I ? 命令文件(程序文件) ? 表达式和运算符 ? 程序设计中的流程控制 ? 练习与思考题 ——...作一立方体,使其体积等于单位正 方体的两倍.对边长取不同位数,显示计算结果误差。 H=power(2,1/3); D=1; ......

    三维重建采用移动立方体法(MarchingCubes,MC)算法,对脑部 其中驴上≯。炉土尹;矿亍尹;N---数据集像素总数;(xi,...5实验结果采用上述程序对Matlab自带的脑部MRI图像序列“MRI” (共27幅)进行三维重建与动i画显示,其中旋转参数设置如......

    Matlab前三次作业答案_IT认证_资格考试/认证_教育专区 解法一 1、第一个...然后将其围成一个高为x 的矩形无盖盒,求x多大时,这个立方体的体积最大。...采用4阶多项式拟合数据,并绘制拟合 曲线和实际测试点的对比图。 第13页/共......

    其调用格式为: Z=girddata(X,Y,z,X。Y,method)X,Y,Z是原始地震数据点,X,Y是由x, Y利用meshgrid网格化得到的网格坐标, method指定了插值方法,Matlab提供了linear (线性),cubic(立方体),nearest(最近邻点) 和v4(Matlab4网格点......

    实验 2.2 三维数据的绘图 实验目的 学会 MATLAB 软件中三维图形(二元函数)、曲面图形、等高线图的绘图方法。 三维图形包括空间曲面、空间曲线、等高线图等图形。 函数 z=f(x,y)的图 实验2.2 三维数据的绘图 实验目的 学会 MATLAB ......

    基本 FIS 编辑器(MATLAB 模糊逻 辑工具箱函数) 基本 FIS 编辑器 函数 fuzzy 格式 fuzzy %弹出未定义的基本 FIS...单位超立方体内:xBounds 是一个 2×N 可选矩阵,它用于指定如何将 Xin 和 Xout 中的数据映射到一个超立方体内,......

    MATLAB 程序设计方法 I 表达式和运算符 命令文件(程序文件) 命令文件(程序文件) 程序设计中的流程控制 练习与思考...作一立方体,使其体积等于单位 立方倍积问题实验 . 作一立方体 使其体积等于单位 正方体的两倍.对边长取不同位数 ......

    。 matlab 图像处理教程 2011-04-19 11:42fmmu 王孜|分类:图像处理软件...z=E.*(b*sin(th)*sin(t)); plot3(x,y,z,'g')%画全程轨线 ...(d,d,d);%定义一个立方体 x=[x(:);0]; y=[y(:);0]; z=[z......

    Matlab 编程作业 1 题目:设带估计的是个均值为 0,方差为 1 的正态分布函数,若随机的抽 取 X 样本中的 1 个,16 个,256 个作为学习样本,试用 Parzen 窗法估计pN X 编程实现 Parzen 窗法,考虑正态分布随机数的生成方法, 绘制......

    也即这 8 个电子位于边长为 2、中心坐标为(0,0,0)的立方体的八个顶点上. 则得到该带点系电势和电场强度分布的方法如下: 步骤一:依据(4)式求空间点的电势,在 MATLAB 中通过 for 循环语句完成电 势叠加的过程,运用 contour......

    mfedit(a)对于 FIS 结构操作一个 MATLAB 工作空间变量 a。Mfedit 可单独弹出没有装入 FIS 的隶属函数编辑器 图...单位超立方体内:xBounds 是一个 2×N 可选矩阵,它用于指定如何将 Xin 和 Xout 中的数据映射到一个超立方体内,......

    MATLAB 程 序大全讹嘿惑 如弥恐夏狙华 朗除孟坛斥喘 股奎涸珠碾侦 ...将图像变换为立方体的六 个面,然后通过图形学方法贴到立方体上,就能做出类似...3.在 kong.fig 上画一个 Static Text,默认的 tag 为 text1。 4.终端......

    ___ 1.全景图到穹景图 这个程序我最初是用 FreeImage 写的,这两天改成了 matlab,再不贴上来,我就要忘了。 ...一般我们要是有一张全景图,通常会用 cubic 映射,将图像变换为立方体的六 个面,然后通过图形学方法贴到立方体上,......

    这里假定数据位于 一个单位超立方体内:xBounds 是一个 2× N 可选矩阵,它用于指定如何将 Xin 和 Xout 中的数据映射到一 个超立方体内,这里是数据的维数(行数); options 是一个可选向量,它指定的值用于覆盖算法参数的 缺省值。...

    B2 ? 1 n n i ?1 ( xi ? x )2 Matlab命令:mean(X),var(x,1) ? 1 n x ? n i?1 xi ? B2 ?..., X n )落在点( x1 , x2 ,?, xn )的 邻域(边长分别为dx1 ,dx2 ,?,dxn的n维立方体)内 的概率近似地......

    模拟试题-MATLAB 一、单项选择题 1、三阶幻方又称为九宫图,提取三阶幻方矩阵对角元并构造对角阵用( c ) (A) ...当立方体祭台尺寸放大一倍后,瘟疫仍然流行。人们才知道体积并不是扩大了 两倍。这个古希腊难题被称为倍立方体问题,......

    ? ( xi ? x )2 n i ?1 Matlab命令:mean(X),var(x,1) 1 n 1 n B2 ? ? ( xi ? x )2 x ? ..., X n ) 落在点( x1 , x 2 ,?, x n )的 邻域 (边长分别为dx1 , dx 2 ,?, dx n的n维立方体)内......

    2、在 MATLAB 环境下验证以下题目: ?t (1)画出衰减振荡曲线 y ? e 3 sin 3t , t 的取值范围是[0,4? ...二、 实验内容 1、定义一个函数文件 lifang.m,用于计算一个立方体的表面积和体积。在命令 窗口中调用它。 2、当......

    3、MATLAB 计算二项分布随机变量分布律的方法是( C ) (A) binocdf(x,n,p); (B) normpdf(x,mu,s); (C...x 2 ? y 2 dx ) (2) 蒙特卡罗方法选用的随机点变化范围的立方体区域是( B (A) ? = {( x, y, z ) ......

    基于matlab,simulink汽车三自由度模型仿真_数学_自然科学_专业资料。作业任务包括:一、建立前轮角阶跃输入的汽车三自由度操控模型,并且参数可调。 二、绘制六面体并实现对六面体的三维操作,包括平移、旋转、缩放等。 三、动画:本文动画的......

    展开全文
  • 使用Visio画立方体

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


    步骤1:立方体形似

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

    步骤2:立方体神似

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

    注意

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

    参考链接:
    1. visio绘制立方体
    展开全文
  • (2)以三维坐标系 Oxyz 的原点为立方体体心绘制边长为 a 的立方体线框模 型。  (3)使用旋转变换矩阵计算立方体线框模型围绕三维坐标系原点变换前后 的顶点坐标。  (4)使用双缓冲技术在屏幕上绘制三维立方...
  • 如何用PPT画立方体的形状(多个立方体堆叠) 如何用PPT画立方体的形状 第一步 先插入一个长方形,然后再设置形状大小,我这里设置高度0.33厘米,宽度0.33厘米 第二步 复制这个正方形,右击 选择设置形状格式 选择三...
  • HTML5 Canvas 旋转的3D立方体动画,有纵深感的旋转立方体,渲染的很不错,旋转的动画效果流畅,十分不错,是研究HTML5 Canvas技术的好范例。经测试,IE11兼容,火狐或Chrome、Opera等都有完美表现。
  • 主要用到关键帧来使3D图形运动起来,涉及到了一些抽象的思想,立体的想象。 先给大家看看完成的效果,代码也不是很难,每行代码都给到了详细注释,纯CSS,没有用到JS,CSS3不错。 效果如下: 每一行基本都有注释,就...
  • 这是基于VS2010,C#编写的一个3D立方体旋转的演示程序模块,实现了绕X、Y、Z轴旋转,鼠标“抓转”、面的选择性纯色填充,有相配套的文档说明,此部分为源码部分,配套文档可另在本人的共享资源中一起下载。
  • 根据用户指定的长、宽、高绘制长方体
  • 1. 基于MFC绘制三维立体小球(太阳、地球、月亮)基本图形; 2. 基于MFC使用OpenGL 绘制立方体、茶壶、环面等稍复杂的图形; 3. 基于MFC使用OpenGL用鼠标控制三维物体;
  • 文章目录TIT 计算机图形学 实验五 制作立方体光照纹理模型前言一、实验项目要求二、理论分析或算法分析三、源代码四、运行截图 TIT 计算机图形学 实验五 制作立方体光照纹理模型 前言 参考视频计算机图形学全套算法...
  • OPenGL笔记--创建三维图形(立方体)

    千次阅读 2022-03-23 12:04:35
    通过之前的学习,我们已经知道了如何创建多边形,立方体实际就是多边形围起来的三维图形,例如: 椎体是4个三角形围起来的三维图形; 正方体是6个正方形围起来的三维图形; 注意事项: 要让您的对象绕自身的轴...
  • //画立方体 #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...
  • 完自己会动的立方体,下面一个由鼠标和键盘控制的立方体。 一、代码 main.cpp #include &amp;amp;lt;iostream&amp;amp;gt; //GLEW #define GLEW_STATIC #include &amp;amp;lt;GL/glew.h&...
  • 立方体消隐

    热门讨论 2013-05-07 23:28:57
    可以用键盘操纵立方体的旋转(比如左键按一下向左水平旋转某一角度,上下键做垂直旋转)或者鼠标左键控制(比如向右拖动则图形向右旋转某一固定角度,其余角度同理)。 不可以用OpenGL直接Cube实现消影过程。必须...
  • opengl渲染管线是一系列数据处理过程,作用是将应用程序的数据转换到最终渲染的图形。简单来说,opengl渲染流程主要包括顶点变换,图元装配,纹理或着色和光栅化四个阶段。顶点变换:所有的图形在计算机中都是一串串...
  • OpenGL 绘制多个立方体

    2022-01-01 16:07:02
    今天研究了一下,已经可以出两个或多个立方体了。效果图见下图。 主要代码: glGenVertexArrays(1,vao); glBindVertexArray(vao[0]); glGenBuffers(2,vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); g...
  • 球体的函数 glutWireSphere(a,b,c);边框球 a是球体的半径(一定要在画布的有效范围之内) b是经度线,c是纬度线(精密程度,一般情况下20以上) 默认颜色是白色,默认中心点坐标(0,0,0) ***保证画布的Z的...
  • 计算机图形学正十二面旋转.rar.rar
  • 好,下面开始:stop();//这个stop是让FLASH播放在这一帧停下来,但对代码...//先初始化一下变量~angle是立方体每次转过的角度,dot_x和dot_y定义了空间的原点,p是立方体边长的一半,d是眼//睛距离屏幕的像素sx=ne...
  • 使用matlab函数构建三维立方体的几种方法matlab是一种功能强大的科学运算软件,其基于矩阵的运算单位和和演算纸式的编程方式,配合强大的各类工具箱函数,极大简化了编程难度而又不失应用的灵活性,使matlab非常适合...
  • 1. 用对话框实现对立方体,长、宽、高,的设置。 2. 用工具栏上的按钮实现对立方体的控制。具体控制有:平移、缩放、旋转。
  • 28 WebGL绘制立方体

    千次阅读 2017-06-02 17:54:28
    下面,我们将学习如何绘制如图所示的一个立方体,目标:如果按以前所学的知识,制作这个正方体就需要使用三角形两个拼一个矩形,最后拼出来六个正方形来组成这个立方体,由于绘制三角形需要重复调用顶点,虽然只需要...
  • visio绘制立方体

    千次阅读 2021-04-15 09:12:59
    卷积神经网络作图的时候需要绘制立方体,使用visio的绘制过程为: 1)绘制矩形,并用线连接,绘制过程中使用shift+直线可以粘接到已有的端点; 2)使用开发工具的组合-连接-拆分,获得独立的面,这样可以对不同面...
  • 用Visio绘制网络模型的斜立方体、方块

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,380
精华内容 3,752
关键字:

如何画立方体图形