模块4-2 三维图形投影和消隐

一 实验目的

  1. 编写三维图形各种变换的投影或消隐算法

二 实验内容

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;

}

【计算机图形学】三维图形投影和消隐(正等轴测投影图 消隐图构造)相关推荐

  1. 计算机图形学——三维图形几何变换和投影转换(VC)

    实验目的 掌握4*4矩阵乘法运算的编程实现: 掌握平移.比例.旋转三种基本三维几何变换矩阵生成: 掌握正交投影图的生成和绘制方法. 实验要求 三维坐标系的原点位于屏幕中心,X轴水平向右,Y轴垂直向上, ...

  2. 计算机图形学--三维图形表面绘制

    目录 三维立体图形绘制基本思想 球体绘制思想 代码实现: 圆环体绘制思想 代码实现: 正棱柱体绘制思想 正棱台体以及正棱锥体绘制思想 正棱台体绘制代码实现: 三维立体图形绘制基本思想 对于三维图形的立 ...

  3. 计算机图形学规则形体,计算机图形学 三维形体的表示ppt课件.ppt

    <计算机图形学 三维形体的表示ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机图形学 三维形体的表示ppt课件.ppt>文档请在 ...

  4. 计算机图形学绘制图形的过程,计算机图形学13_图形绘制流水线的实现.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp图形图像 计算机图形学13_图形绘制流水线的实现.pdf6页 本 ...

  5. 学计算机图形图像设计,计算机图形学与图形图像处理技术

    摘 要 本文通过对计算机图形学的研究内容.图形系统的组成以及功能进行分析,阐述了计算机图形技术以及计算机图像技术存在的区别,通过对计算机图形技术以及计算机图像技术的区别分析,得出两者在数据信息来源.处 ...

  6. 【计算机图形学基础】投影矩阵

      最近在重温计算机图形学的基础知识,期望能做到温故知新,加深对其的理解,以便能从容应对工作中各种情况.   小弟水平有限,若有不正确之处,欢迎大家批评指正. 相关文章链接: [计算机图形学基础]线性 ...

  7. 计算机图形学三维投影程序,三维计算机图形学

    <三维计算机图形学>是科学出版社出版.本书共分17章,内容包括IDE环境与编程基础.基本语法与数据类型.运算操作.流程控制.面向对象程序设计.用户界面编程.文件系统管理.图形图像多媒体编程 ...

  8. 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术

    计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...

  9. python计算机图形学_图形图像学习随笔:计算机图形学的一些基本概念

    本文内容摘抄于:<计算机图形学的概念> 一.计算机图形学的范畴 1.图形主要分为两类,一类是基于线条信息表示的,如工程图.等高线地形图.曲面的线框图等:另一类是明暗图,也就是通常所说的真实 ...

最新文章

  1. linux 内核头文件 linux kernel header
  2. ShapeMatching Using Fourier Descriptor
  3. 【ABAP】采购申请自定义审批策略的实现
  4. Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
  5. 安卓 Input Events(输入事件)
  6. qt5 窗体显示完毕信号_iPhone手机信号不好?试试这样设置,随时随地让你的手机信号满格...
  7. linux下分析cel文件,详细解析Linux scp命令的应用
  8. 快过年了,分享 25 个 JS 实用技巧送给大家吧
  9. 1 为发现 php,magento 1.8.1中发现sitemap模块的一个bug
  10. ANT HelloWorld
  11. 回顾 | Apache Flink Meetup · 深圳站精彩回顾(附PPT下载)
  12. MySQL ( Ubuntu16.04 )
  13. app自动化之混合应用的测试(h5,小程序)
  14. python实例02,__str__只能返回字符串
  15. 西安电子科技大学研究生计算机专业怎么样,西安电子科技大学计算机在职研究生怎么样?...
  16. BLDC无刷直流电机
  17. 解决Mac上用spotlight搜索输入几个字母后闪退
  18. 字符串转utf8编码
  19. 导致网页图片字体模糊的原因
  20. 【JAVA】java解析HTML代码

热门文章

  1. BricsCAD 19 for Mac(CAD建模软件)
  2. linux电脑闪屏是什么原因,电脑显示器突然闪屏是什么原因
  3. androud studio 根据本地经纬度获取天气
  4. 【健康】久坐会增加患病几率
  5. python list 转数组assay
  6. 进苹果商店显示无法连接服务器,苹果商店提示无法连接怎么回事_苹果商店打不开连接不上如何解决-win7之家...
  7. WSE(Web Services Enhancements)
  8. 别等ChatGPT开源了,升级版OPT开源模型来了!
  9. 关于邮件系统被列入黑名单进行寄件的错误提示
  10. 你可知vivo手机5大黑科技?如果连这都不知道的话,那可太浪费了