【计算机图形学】三维图形投影和消隐(正等轴测投影图 消隐图构造)
模块4-2 三维图形投影和消隐
一 实验目的
- 编写三维图形各种变换的投影或消隐算法
二 实验内容
1:自行选择三维物体(不能选长方体),建立坐标系,给定点的三维坐标值,建立边表结构,完成正等轴测投影图。
实验结果如下图所示:
2:自行选择三维物体(不能选长方体),建立坐标系,给定点的三维坐标值,画出三维物体的消隐图。
实验结果如下图所示:
三 程序说明
最终的实验代码如下表所示:
2题 |
// // 程序名称:消隐图 // 功 能:实现预设三维物体的消隐图。 // 编译环境:VS2019,EasyX_20220116 // 最后修改:2022-4-14 #include <graphics.h> #include <conio.h> #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; //顶点表 float point[20][4] = { {0,0,150,1},//0 {250,0,150,1},//1 {250,0,50,1},//2 {300,0,50,1},//3 {300,0,0,1},//4 {300,200,0,1},//5 {0,200,0,1},//6 {0,200,100,1},//7 {0,150,100,1},//8 {0,150,150,1},//9 {50,150,150,1},//10 {50,50,150,1},//11 {250,50,150,1},//12 {250,50,50,1},//13 {150,50,50,1},//14 {150,200,50,1},//15 {100,200,100,1},//16 {100,150,100,1},//17 {300,200,50,1},//18 {0,0,0,1}//19 }; //环表 int ring[72] = { //parallel XOY 0,1,12,11,10,9,0,//visible 8,17,16,7,8,//visible 2,3,18,15,14,13,2,//visible 4,19,6,5,4,//invisible //parallel XOZ 1,2,3,4,19,0,1,//invisible 12,13,14,11,12,//visible 10,17,8,9,10,//visible 5,6,7,16,15,18,5,//visible //parallel YOZ 1,2,13,12,1,//visible 0,9,8,7,6,19,0,//invisible 3,4,5,18,3,//visible //slope 11,10,17,16,15,14,11 //visible }; //面表 int surface[12][2] = { //parallel XOY {0,6},{7,11},{12,18},{19,23}, //parallel XOZ {24,30},{31,35},{36,40},{41,47}, //parallel YOZ {48,52},{53,59},{60,64}, //slope {65,71} }; //矩阵乘法,a*b=c,a[m][n],b[n][q],c[m][q] void MatrixMultiplication(float a[20][4], float b[4][4], float c[20][4]) { int i = 0, j = 0, k = 0; for (i = 0; i < 20; i++) { for (j = 0; j < 4; j++) { c[i][j] = 0; for (k = 0; k < 4; k++) { c[i][j] = c[i][j] + a[i][k] * b[k][j]; } } } } //主函数 int main() { //float point[20][4] //int ring[72] //int surface[12][2] int i, j, start, end; //正等轴测向量 float zdz[4][4] = { {0.707,0,-0.408,0},{-0.707,0,-0.408,0},{0,0,0.8165,0},{0,0,0,1} }; //备份顶点集 float point1[20][4]; double x1, x2, x3, z1, z2, z3; //E值 double valueE[12]; //矩阵乘法=>正等轴测 MatrixMultiplication(point, zdz, point1); initgraph(1000, 700); //移动x坐标和y坐标 for (i = 0; i < 20; i++) { point1[i][0] = 500 - point1[i][0] * 1.2;//220 point1[i][2] = 350 - point1[i][2] * 1.2;//140 } //求E的值 for (i = 0; i < 12; i++) { j = surface[i][0]; x1 = point1[ring[j]][0]; x2 = point1[ring[j + 1]][0]; x3 = point1[ring[j + 2]][0]; z1 = point1[ring[j]][2]; z2 = point1[ring[j + 1]][2]; z3 = point1[ring[j + 2]][2]; valueE[i] = (z2 - z1) * (x3 - x2) - (x2 - x1) * (z3 - z2); } for (i = 0; i < 12; i++) { if (valueE[i] >= 0) { start = surface[i][0]; end = surface[i][1]; for (j = start; j < end; j++) { line(point1[ring[j]][0], point1[ring[j]][2], point1[ring[j + 1]][0], point1[ring[j + 1]][2]); } } } _getch(); closegraph(); return 0; } |
1题 |
// // 程序名称:正等轴测投影图 // 功 能:实现预设三维物体的正等轴测投影图。 // 编译环境:VS2019,EasyX_20220116 // 最后修改:2022-4-14 #include <graphics.h> #include <conio.h> #include <iostream> #include <math.h> using namespace std; //和分割线之间的距离 const int gap = 50; //预设三维体的点坐标 int X[33] = { 0,0,0,0,0,0,0,0,100,100,0,100,100,100,100,100,100,100,100,0,0,0,0,100,100,100,100,0,0,0,0,100,100 }; int Y[33] = { 0,0,250,250,200,150,0,0,0,0,0,0,150,200,250,250,0,0,150,150,0,150,200,200,150,200,250,250,200,250,250,250,250 }; int Z[33] = { 100,0,0,50,50,100,100,0,0,100,100,100,100,50,50,0,0,100,100,100,100,100,50,50,100,50,50,50,50,50,0,0,50 }; //顶点总数 const int num = 33; //正等轴测图绘制 void fun() { POINT* p = new POINT[num]; for (int i = 0; i < num; i++) { p[i].x = 0.7071 * X[i] - 0.7071 * Y[i] + 500; p[i].y = 0.4082 * X[i] + 0.4082 * Y[i] - 0.8165 * Z[i] + 350; } for (int i = 0; i < num - 1; i++) { setcolor(YELLOW); line(p[i].x, p[i].y, p[i + 1].x, p[i + 1].y); } free(p); } int main() { initgraph(1000, 700); //调用函数 fun(); _getch(); closegraph(); return 0; } |
【计算机图形学】三维图形投影和消隐(正等轴测投影图 消隐图构造)相关推荐
- 计算机图形学——三维图形几何变换和投影转换(VC)
实验目的 掌握4*4矩阵乘法运算的编程实现: 掌握平移.比例.旋转三种基本三维几何变换矩阵生成: 掌握正交投影图的生成和绘制方法. 实验要求 三维坐标系的原点位于屏幕中心,X轴水平向右,Y轴垂直向上, ...
- 计算机图形学--三维图形表面绘制
目录 三维立体图形绘制基本思想 球体绘制思想 代码实现: 圆环体绘制思想 代码实现: 正棱柱体绘制思想 正棱台体以及正棱锥体绘制思想 正棱台体绘制代码实现: 三维立体图形绘制基本思想 对于三维图形的立 ...
- 计算机图形学规则形体,计算机图形学 三维形体的表示ppt课件.ppt
<计算机图形学 三维形体的表示ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机图形学 三维形体的表示ppt课件.ppt>文档请在 ...
- 计算机图形学绘制图形的过程,计算机图形学13_图形绘制流水线的实现.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > 图形图像 计算机图形学13_图形绘制流水线的实现.pdf6页 本 ...
- 学计算机图形图像设计,计算机图形学与图形图像处理技术
摘 要 本文通过对计算机图形学的研究内容.图形系统的组成以及功能进行分析,阐述了计算机图形技术以及计算机图像技术存在的区别,通过对计算机图形技术以及计算机图像技术的区别分析,得出两者在数据信息来源.处 ...
- 【计算机图形学基础】投影矩阵
最近在重温计算机图形学的基础知识,期望能做到温故知新,加深对其的理解,以便能从容应对工作中各种情况. 小弟水平有限,若有不正确之处,欢迎大家批评指正. 相关文章链接: [计算机图形学基础]线性 ...
- 计算机图形学三维投影程序,三维计算机图形学
<三维计算机图形学>是科学出版社出版.本书共分17章,内容包括IDE环境与编程基础.基本语法与数据类型.运算操作.流程控制.面向对象程序设计.用户界面编程.文件系统管理.图形图像多媒体编程 ...
- 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术
计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...
- python计算机图形学_图形图像学习随笔:计算机图形学的一些基本概念
本文内容摘抄于:<计算机图形学的概念> 一.计算机图形学的范畴 1.图形主要分为两类,一类是基于线条信息表示的,如工程图.等高线地形图.曲面的线框图等:另一类是明暗图,也就是通常所说的真实 ...
最新文章
- linux 内核头文件 linux kernel header
- ShapeMatching Using Fourier Descriptor
- 【ABAP】采购申请自定义审批策略的实现
- Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
- 安卓 Input Events(输入事件)
- qt5 窗体显示完毕信号_iPhone手机信号不好?试试这样设置,随时随地让你的手机信号满格...
- linux下分析cel文件,详细解析Linux scp命令的应用
- 快过年了,分享 25 个 JS 实用技巧送给大家吧
- 1 为发现 php,magento 1.8.1中发现sitemap模块的一个bug
- ANT HelloWorld
- 回顾 | Apache Flink Meetup · 深圳站精彩回顾(附PPT下载)
- MySQL ( Ubuntu16.04 )
- app自动化之混合应用的测试(h5,小程序)
- python实例02,__str__只能返回字符串
- 西安电子科技大学研究生计算机专业怎么样,西安电子科技大学计算机在职研究生怎么样?...
- BLDC无刷直流电机
- 解决Mac上用spotlight搜索输入几个字母后闪退
- 字符串转utf8编码
- 导致网页图片字体模糊的原因
- 【JAVA】java解析HTML代码
热门文章
- BricsCAD 19 for Mac(CAD建模软件)
- linux电脑闪屏是什么原因,电脑显示器突然闪屏是什么原因
- androud studio 根据本地经纬度获取天气
- 【健康】久坐会增加患病几率
- python list 转数组assay
- 进苹果商店显示无法连接服务器,苹果商店提示无法连接怎么回事_苹果商店打不开连接不上如何解决-win7之家...
- WSE(Web Services Enhancements)
- 别等ChatGPT开源了,升级版OPT开源模型来了!
- 关于邮件系统被列入黑名单进行寄件的错误提示
- 你可知vivo手机5大黑科技?如果连这都不知道的话,那可太浪费了