一点透视

一点透视只有一个主灭点,进行透视投影时,需要很好地考虑图面布局,以避免三维形体的平面或直线积聚成直线或点而影响直观性。具体而言,就是要考虑一下三点:

三维形体与画面(投影面)的相对位置

视距,即视点(投影中心)与画面的距离

视点的高度

为简述方便,假定视点(投影中心)在Z轴上(z=-d处),画面(投影面)在xoy面上,一点透视的步骤如下:

将三维形体平移到适当位置l,m,n

令视点在Z轴,进行投影变换,此时的透视变换矩阵

最后,向xoy面作正投影变换,将结果变换到xoy面上。如此构造的一点透视变换矩阵为

则三维形体中心任意一点(x,y,z)的一点透视变换的齐次坐标计算形式为

下面绘制如图所示的单位立方体的一点透视图

#include<stdio.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
struct point
{double x;double y;double z;
}point[10];
int l,m,n;
int d;
void init()
{//将三维形体平移到适当位置l,m,n//投影中心在Z轴上(z=-d处)l=50;m=50;n=50;d=200;point[1].x=0;point[1].y=0;point[1].z=100;point[2].x=100;point[2].y=0;point[2].z=100;point[3].x=100;point[3].y=0;point[3].z=0;point[4].x=0;point[4].y=0;point[4].z=0;point[5].x=0;point[5].y=100;point[5].z=100;point[6].x=100;point[6].y=100;point[6].z=100;point[7].x=100;point[7].y=100;point[7].z=0;point[8].x=0;point[8].y=100;point[8].z=0;
}
void sol1() //一点透视
{int i;for(i=1;i<=8;i++){point[i].x=(point[i].x+l)*d/(d+(n+point[i].z));point[i].y=(point[i].y+m)*d/(d+(n+point[i].z));}
}
void sol2()  //绘制透视的图形
{line(point[1].x,point[1].y,point[2].x,point[2].y);line(point[2].x,point[2].y,point[3].x,point[3].y);line(point[1].x,point[1].y,point[4].x,point[4].y);line(point[3].x,point[3].y,point[4].x,point[4].y);line(point[5].x,point[5].y,point[8].x,point[8].y);line(point[4].x,point[4].y,point[8].x,point[8].y);line(point[5].x,point[5].y,point[1].x,point[1].y);line(point[7].x,point[7].y,point[8].x,point[8].y);line(point[7].x,point[7].y,point[3].x,point[3].y);setlinestyle(PS_DOT);line(point[7].x,point[7].y,point[6].x,point[6].y);line(point[2].x,point[2].y,point[6].x,point[6].y);line(point[5].x,point[5].y,point[6].x,point[6].y);
}
int main()
{initgraph(500,500);   init();sol1();sol2();getch();               closegraph(); return 0;
}

图形的平移即像素点的移动

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include <graphics.h>
#define MAX 500
int main()
{int i;IMAGE img; //保存图像的对象initgraph(501,501);rectangle(0,0,30,30);  //画空心矩形getimage(&img,0,0,31,31); //从当前绘图设备中获取图像for(i=0;i<MAX;i++){putimage(i,i,&img); //在当前设备上绘制指定图像Sleep(50);putimage(i,i,&img,0);//清除图像}getch();closegraph();return 0;
}

可看到一正方形从左上角移至右下角

图形的一点透视和平移相关推荐

  1. createbitmap 旋转90度_小学数学,图形的运动,平移与旋转

    对称现象在我们生活中非常常见,小到我们的衣服,大到各种建筑.比如说北京天安门城楼也是对称的.对称的物体有个特点,看着比较美观.协调.如果是运动物体,它相对的平衡性也好.比如说飞机是对称的,我们放的风筝 ...

  2. webgl_图形变换(旋转,平移,缩放)

    平移 平移一个三角形,你需要对顶点坐标的每个分量(x和y),加上三角形在对应轴(如X轴或Y轴)上平移的距离.比如,将点p(x, y, z)平移到p'(x', y', z'),在X轴.Y轴.Z轴三个方向 ...

  3. 全新C#写的读取cad dxf文件,并解析显示,显示的图形可放大缩小平移

    全新C#写的读取cad dxf文件,并解析显示,显示的图形可放大缩小平移,目前可解析圆,圆弧,线段,可解析cad2000到2018等各个版本的文件,可显示解析文件的详细信息,并可修改源代码保存为不同版 ...

  4. OpenGL 图形变换练习(平移,缩小)——画小汽车

    写在前面 哈哈哈哈哈哈哈哈哈哈,东拼西凑自己写出来的作业,太爽了 效果图 俺觉得还挺好看的~ 代码 #include <GL/glut.h> #include "math.h&q ...

  5. C语言 图形任意多次平移、旋转、缩放和对称的变换方案

    #include <stdio.h> int main() {long long a[4] = {0}; //0-平移,1-旋转,2-缩放,3-对称long long b[4] = {0} ...

  6. 行测-判断推理-图形推理-位置规律-平移

    位置平移,选D 空白每次顺时针移动一格,黑色圆每次逆时针移动2格 选C 两个黑色⚪,每次顺时针移动2格 白色⚪,先到对角位置,再顺时针移动一格 选B 三角形的底,顺时针移动 三角形的顶点,在正方形的内 ...

  7. cesium 缩放_Cesium 中的图形变换:局部平移、缩放、旋转思路及代码实现

    开门见山:tileset.modelMatrix 这个属性可以在数据本身的基础上再进行坐标变换,不熟悉转换矩阵各个部分的含义的可参考图形学有关资料. 此文不一定是最佳算法,但是提供一种思路.转载请注明 ...

  8. OpenGL实验2:图形的旋转、平移、缩放

    之后有空再补一下具体的细节理论叭(可能正好当作自己复习的资料啦,

  9. 图形学 ---- 二维几何变换(二维图形矩阵平移,旋转,缩放)

    二维图形几何变换,矩阵计算 前言:对于一个图形的几何变换,对应的是操作到图形中的每一个点! 即对每一个点做出相应的几何变换.比如平移,就是对二维图形的每个点都平移相同的距离:旋转则是对每一个点,基于基 ...

最新文章

  1. pytorch自定义数据集和数据加载器
  2. linux设备模型(8)_platform设备,Linux设备模型之platform总线
  3. Linux怎么修改用户密码
  4. 【w3cschool】通过C语言类比快速上手C#
  5. 关于 easyPr的问题
  6. mysql按照汉字拼音排序
  7. php融云开源sdk使用im,开源项目索引
  8. Glide 源码解析之监听生命周期
  9. 如何把公司网址生成二维码
  10. 怎么修改扫描PDF?扫描件PDF修改编辑教程
  11. ambari 修改服务器名,ambari - Ambari无法运行用于修改用户配置单元的自定义钩子 - 堆栈内存溢出...
  12. 实验七 二极管包络检波实验
  13. JZOJ 2679. 跨时代
  14. python爬虫微信_搜狗微信采集 —— python爬虫系列一
  15. 【Java获取配置文件的2种方式】
  16. JAVA-extends
  17. ACL 2016 会议论文全集
  18. 字符串的charCode
  19. 跟老齐学python轻松入门_跟老齐学Python:轻松入门
  20. 关于浏览器被hao123劫持的解决办法

热门文章

  1. 分享一个自动刷抖音的代码
  2. 总结:大学实验室的教授喜欢什么样的本科实习学生
  3. 软件测试与游戏测试文章合集录
  4. 遥控视频小车实际应用效果以及功能实现
  5. 网上开店平台选择最关键
  6. Android 悬浮窗、悬浮球开发
  7. css: 照片有如层叠效果
  8. 什么品牌的台灯适合学生用?适合学生党用的台灯推荐
  9. 世界著名设计公司-网址介绍
  10. Centos 7.9挂载群晖NAS