精华内容
下载资源
问答
  • MFC计算机图形学正轴测投影,斜平行投影程序源代码,可直接导入VC6.0工程运行,在Debug中有可执行程序。注意图片格式BMP
  • c语言,利用opengl中用自带函数实现平行,透视投影
  • 绘制一个长方体的平行投影投影在z=0平面上,使用鼠标控制转向,三维旋转,没有键盘的东西,有需要请自取。
  • 计算机图形学VS C++6.0实现投影功能~~~~~~~~~~~~欢迎下载~~~~~~~~~~
  • 针对平行投影数据,通过直接反投影算法、滤波反投影算法和卷积反投影算法进行图像重建。文件是三种算法的源程序。
  • opengl 圆球 光照 平行投影 透视投影 光照 源代码
  • 1平行投影——学习ppt课件
  • 正六面体平行投影

    2016-02-26 18:57:15
    华科图形学作业,正六面体平行投影,边长为1的正六面体,进行平移、比例、旋转后,向x,y平面进行平行投影,并绘出投影图
  • 提出并实现了改进的基于极坐标下反投影及坐标映射的快速重建算法, 通过实验结果分析, 优化后的算法与传统算法相比在图像质量上相当, 而运算速度要快, 尤其是对于大幅图像而言优势更加明显
  • 目录 投影变换 ...根据投影方向(视线方向)与投影平面的夹角是否垂直,平行投影可分为正平行投影(简称正投影)和斜平行投影(简称斜投影)。 正投影 根据投影平面与坐标轴是否垂直,正投影又可分...

    目录

    投影变换

    平行投影

    正投影

    斜投影

    透视投影 (属于中心投影)

    点的透视投影

    平行线段的透视变换

    透视投影分类


    投影变换

    根据投影中心投影平面(观察平面)之间距离(或者说,投影线是否相交于一点,或者说是否保持对象的比例),分为平行投影 和 透视投影。

    平行投影

    根据投影方向(视线方向)投影平面夹角是否垂直,平行投影可分为正平行投影(简称正投影)和斜平行投影(简称斜投影)。

    正投影

    根据投影平面坐标轴是否垂直,正投影又可分为:三视图 和 正轴测投影。

    正轴测投影

    根据投影平面坐标轴之间的三个夹角相等的个数(或者说三个轴向变形系数相等的个数),可分为正等测投影、正二测投影、正三测投影。

    斜投影

    根据投影方向与投影平面夹角a的大小(tana=1 tana=2),斜投影可分为 斜等侧投影斜二测投影。

    透视投影(属于中心投影)

    根据投影平面与坐标轴相交的个数,分为一点透视,两点透视,三点透视。

    透视投影属于中心投影

    点的透视投影

    平行线段的透视变换

    透视投影分类

    一点透视,两点透视,三点透视。

     

    参考:计算机图形学基础(OpenGL版)清华大学出版社 主编 徐文鹏

    展开全文
  • 在行处理方法的基础上提出了一种基于平行投影的迭代方法,与传统的行处理方法不同,它不是通过向某一超平面作垂线进行迭代,而是作某个超平面的平行线与另一超平面相交进行迭代.与传统方法相比,它明显加快了迭代速度.
  • 1.透视投影 如下a图,透视投影是从某个...2.平行投影 如下b图,平行投影是在一束平行光线照射下形成的投影。在平行投影中,同一时刻改变物体的方向和位置,其投影也跟着发生变化;投影大小与物体和投影面之间的距离...

    1.透视投影

    如下a图,透视投影是从某个投影点将物体投影到单一投影面上所得到的图形,透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失。在透视投影中,同一灯光下,改变物体的位置和方向,其投影也跟着发生变化

    2.平行投影

    如下b图,平行投影是在一束平行光线照射下形成的投影。在平行投影中,同一时刻改变物体的方向和位置,其投影也跟着发生变化;投影大小与物体和投影面之间的距离无关。度量性较好。
    在这里插入图片描述

    3.正投影

    正投影是平行投影的一种特殊形式,投影方向和投影面垂直,正投影法的特点是,能准确、完整地表达出形体的形状和结构,且作图简便,度量性较好

    投影变换:给定视点、视线方向,计算出当前顶点的投影点的坐标

    在OpenGL中有三个函数glFrustum(),gluPerspective(),glOrtho()

    1.void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom, GLdouble top, GLdouble near, GLdouble far)

    创建一个透视型的视椎体,其操作是创建一个透视投影的矩阵,并且用这个矩阵乘以当前矩阵。
    这个函数的参数之定义,只定义近才见面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near),最后一个参数far是裁减面的,离视点的距离值,其左下角和右上角空间坐标由函数根据透视投影原理自动生成,near和far为正值,即必须>0
    在这里插入图片描述

    2.void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);

    创建一个对称的透视型视椎体,其操作是创建一个对称的透视投影矩阵。参数fovy定义视野在Y-Z平面的角度,范围是[0.0, 180.0],参数aspect是投影平面宽度与高度的比例;参数near和far分别是近远裁剪面到视点的距离,沿Z负轴,总为正值
    在这里插入图片描述
    总结:以上两个函数视点都在原点,视线沿z轴指向负方向
    void mydisplay()
    {

    glMatrixMode(GL_PROJECTION);
    LoadIdentity();
    Frustum(left,right,bottom,top,near,far)

    }

    3.glOrtho(GLdobule left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)

    六个参数,前面来给个是x轴最小坐标和最大坐标,中间两个是y轴,最后两个是z轴
    这个函数创建的是一个平行视景体,就是一个长方体区域,实际上是创建一个正射投影矩阵,并且用这个矩阵乘以当前矩阵,所有的near和far值同时为正,或者同时为负u,值不能相同,如果没有其他变换,正射投影的方向平行于z轴,且视点朝向z负轴,这意味着物体在视点前面时far和near都是负值,在视点后面时far和near都为正值,只有在视景体里面的物体才能显示出来
    在这里插入图片描述

    展开全文
  • 基于MFC的平行投影算法

    千次阅读 2020-05-12 13:40:51
    基于MFCMFCMFC的平行投影算法实现 本文实现程序的IDEIDEIDE是VS 2017VS\ 2017VS 2017。 一、新建项目 此处就不再赘述,没有有MFCMFCMFC基础可以先看第一个MFCMFCMFC的程序。 设置项目名为...

    基于 M F C MFC MFC的平行投影算法实现

    本文实现程序的 I D E IDE IDE V S   2017 VS\ 2017 VS 2017

    一、新建项目

    此处就不再赘述,没有有 M F C MFC MFC基础可以先看第一个 M F C MFC MFC的程序。

    设置项目名为 P a r a l l e l P r o j e c t i o n ParallelProjection ParallelProjection

    二、类定义初始化

    首先在在 P a r a l l e l P r o j e c t i o n V i e w . h ParallelProjectionView.h ParallelProjectionView.h文件最上方加#define N 12
    然后在 V i e w View View类中定义成员变量和函数成员。

    public:
    	void matx_N4(double a[][4], double b[4][4], double c[][4]);
    	double lifang[N][4];
    	double bianhuan1[4][4], bianhuan2[4][4], zhouce[4][4];
    	double jieguo[N][4];
    	void mydraw();
    

    三、矩阵相乘函数实现

    void CParallelProjectionView::matx_N4(double a[][4], double b[4][4], double c[][4])
    {
    	int i, j, m;
    	for (m = 0; m < N; m++)
    		for (i = 0; i < 4; i++)
    			c[m][i] = 0;
    	for (m = 0; m < N; m++)
    		for (i = 0; i < 4; i++)
    			for (j = 0; j < 4; j++)
    				c[m][i] += a[m][j] * b[j][i];
    	for (i = 0; i < N; i++)
    		for (j = 0; j < 4; j++)
    			c[i][j] /= c[i][3];
    }
    

    四、绘制形体各条棱边函数实现

    void CParallelProjectionView::mydraw()
    {
    	int tx[N][2];
    	CDC *pDC = GetDC();
    	for (int i = 0; i < N; i++) {
    		tx[i][0] = jieguo[i][0] * 100 + 300;
    		tx[i][1] = 200 - jieguo[i][1] * 100;
    	}
    	pDC->MoveTo(tx[0][0], tx[0][1]);
    	pDC->LineTo(tx[1][0], tx[1][1]);
    	pDC->MoveTo(tx[3][0], tx[3][1]);
    	pDC->LineTo(tx[0][0], tx[0][1]);
    	pDC->MoveTo(tx[1][0], tx[1][1]);
    	pDC->LineTo(tx[2][0], tx[2][1]);
    	pDC->MoveTo(tx[2][0], tx[2][1]);
    	pDC->LineTo(tx[3][0], tx[3][1]);
    
    	pDC->MoveTo(tx[8][0], tx[8][1]);
    	pDC->LineTo(tx[9][0], tx[9][1]);
    	pDC->LineTo(tx[10][0], tx[10][1]);
    	pDC->LineTo(tx[11][0], tx[11][1]);
    	pDC->LineTo(tx[8][0], tx[8][1]);
    
    	pDC->MoveTo(tx[4][0], tx[4][1]);
    	pDC->LineTo(tx[5][0], tx[5][1]);
    	pDC->MoveTo(tx[4][0], tx[4][1]);
    	pDC->LineTo(tx[7][0], tx[7][1]);
    	pDC->MoveTo(tx[5][0], tx[5][1]);
    	pDC->LineTo(tx[6][0], tx[6][1]);
    	pDC->MoveTo(tx[6][0], tx[6][1]);
    	pDC->LineTo(tx[7][0], tx[7][1]);
    
    	pDC->MoveTo(tx[8][0], tx[8][1]);
    	pDC->LineTo(tx[4][0], tx[4][1]);
    	pDC->MoveTo(tx[9][0], tx[9][1]);
    	pDC->LineTo(tx[5][0], tx[5][1]);
    
    	pDC->MoveTo(tx[2][0], tx[2][1]);
    	pDC->LineTo(tx[6][0], tx[6][1]);
    	pDC->MoveTo(tx[3][0], tx[3][1]);
    	pDC->LineTo(tx[7][0], tx[7][1]);
    
    	pDC->MoveTo(tx[0][0], tx[0][1]);
    	pDC->LineTo(tx[11][0], tx[11][1]);
    	pDC->MoveTo(tx[1][0], tx[1][1]);
    	pDC->LineTo(tx[10][0], tx[10][1]);
    	
    }
    

    五、图形元素初始化

    在类向导中,选择消息,然后选择 W M _ C R E A T E WM\_CREATE WM_CREATE,添加处理程序。

    int CParallelProjectionView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	// TODO:  在此添加您专用的创建代码
    	lifang[0][0] = 0, lifang[0][1] = 0.5, lifang[0][2] = 1, lifang[0][3] = 1;
    	lifang[1][0] = 1, lifang[1][1] = 0.5, lifang[1][2] = 1, lifang[1][3] = 1;
    	lifang[2][0] = 1, lifang[2][1] = 1, lifang[2][2] = 1, lifang[2][3] = 1;
    	lifang[3][0] = 0, lifang[3][1] = 1, lifang[3][2] = 1, lifang[3][3] = 1;
    	lifang[4][0] = 0, lifang[4][1] = 0, lifang[4][2] = 0, lifang[4][3] = 1;
    	lifang[5][0] = 1, lifang[5][1] = 0, lifang[5][2] = 0, lifang[5][3] = 1;
    	lifang[6][0] = 1, lifang[6][1] = 1, lifang[6][2] = 0, lifang[6][3] = 1;
    	lifang[7][0] = 0, lifang[7][1] = 1, lifang[7][2] = 0, lifang[7][3] = 1;
    	lifang[8][0] = 0, lifang[8][1] = 0, lifang[8][2] = 2, lifang[8][3] = 1;
    	lifang[9][0] = 1, lifang[9][1] = 0, lifang[9][2] = 2, lifang[9][3] = 1;
    	lifang[10][0] = 1, lifang[10][1] = 0.5, lifang[10][2] = 2, lifang[10][3] = 1;
    	lifang[11][0] = 0, lifang[11][1] = 0.5, lifang[11][2] = 2, lifang[11][3] = 1;
    
    	return 0;
    }
    

    六、清除窗口内容事件实现

    设置清除屏幕的 I D ID ID I D _ C l e a n ID\_Clean ID_Clean,添加事件相应程序 O n C l e a n ( ) OnClean() OnClean()

    void CParallelProjectionView::OnClean()
    {
    	// TODO: 在此添加命令处理程序代码
    	RedrawWindow();
    }
    

    七、正投影事件实现

    设置正投影的 I D ID ID I D _ Z h e n g t o u y i n g ID\_Zhengtouying ID_Zhengtouying,添加事件处理程序 O n Z h e n g t o u y i n g ( ) OnZhengtouying() OnZhengtouying()

    void CParallelProjectionView::OnZhengtouying()
    {
    	// TODO: 在此添加命令处理程序代码
    	bianhuan2[0][0] = 1, bianhuan2[0][1] = 0, bianhuan2[0][2] = 0, bianhuan2[0][3] = 0;
    	bianhuan2[1][0] = 0, bianhuan2[1][1] = 1, bianhuan2[1][2] = 0, bianhuan2[1][3] = 0;
    	bianhuan2[2][0] = 0, bianhuan2[2][1] = 0, bianhuan2[2][2] = 0, bianhuan2[2][3] = 0;
    	bianhuan2[3][0] = 0, bianhuan2[3][1] = 0, bianhuan2[3][2] = 0, bianhuan2[3][3] = 1;
    	matx_N4(lifang, bianhuan2, jieguo);
    	bianhuan2[0][0] = 0, bianhuan2[0][1] = 0, bianhuan2[0][2] = 0, bianhuan2[0][3] = 0;
    	bianhuan2[1][0] = 0, bianhuan2[1][1] = 1, bianhuan2[1][2] = 0, bianhuan2[1][3] = 0;
    	bianhuan2[2][0] = 1, bianhuan2[2][1] = 0, bianhuan2[2][2] = 0, bianhuan2[2][3] = 0;
    	bianhuan2[3][0] = 2, bianhuan2[3][1] = 0, bianhuan2[3][2] = 0, bianhuan2[3][3] = 1;
    	matx_N4(lifang, bianhuan2, jieguo);
    	mydraw();
    }
    

    八、正等测事件实现

    设置正等测的 I D ID ID I D _ Z h e n g d e n g c e ID\_Zhengdengce ID_Zhengdengce,添加事件处理程序 O n Z h e n g d e n g c e ( ) OnZhengdengce() OnZhengdengce()

    void CParallelProjectionView::OnZhengdengce()
    {
    	// TODO: 在此添加命令处理程序代码
    	zhouce[0][0] = 0.7071, zhouce[0][1] = 0.4082, zhouce[0][2] = 0.0, zhouce[0][3] = 0.0;
    	zhouce[1][0] = 0.0, zhouce[1][1] = 0.8166, zhouce[1][2] = 0.0, zhouce[1][3] = 0.0;
    	zhouce[2][0] = 0.7071, zhouce[2][1] = -0.4082, zhouce[2][2] = 0.0, zhouce[2][3] = 0.0;
    	zhouce[3][0] = 0.0, zhouce[3][1] = 0.0, zhouce[3][2] = 0.0, zhouce[3][3] = 1.0;
    	matx_N4(lifang, zhouce, jieguo);
    	mydraw();
    
    }
    

    九、正二测事件实现

    设置正等测的 I D ID ID I D _ Z h e n g e r c e ID\_Zhengerce ID_Zhengerce,添加事件处理程序 O n Z h e n g e r c e ( ) OnZhengerce() OnZhengerce()

    void CParallelProjectionView::OnZhengerce()
    {
    	// TODO: 在此添加命令处理程序代码
    	zhouce[0][0] = 0.9258, zhouce[0][1] = 0.1336, zhouce[0][2] = 0.0, zhouce[0][3] = 0.0;
    	zhouce[1][0] = 0.0, zhouce[1][1] = 0.9534, zhouce[1][2] = 0.0, zhouce[1][3] = 0.0;
    	zhouce[2][0] = 0.3780, zhouce[2][1] = -0.3273, zhouce[2][2] = 0.0, zhouce[2][3] = 0.0;
    	zhouce[3][0] = 0.0, zhouce[3][1] = 0.0, zhouce[3][2] = 0.0, zhouce[3][3] = 1.0;
    	matx_N4(lifang, zhouce, jieguo);
    	mydraw();
    }
    

    十、实现效果

    在这里插入图片描述

    展开全文
  • (2)平行投影【太阳光线产生的投影为平行投影】 如果把透视【投影的中心】移至【无穷远处】,则各【投影线】成为【相互平行】的直线,这种投影法称为平行投影平行投影可以根据投影方向与投影面的夹角分成两类:...

    (2)平行投影

    【太阳光线产生的投影为平行投影】


    如果把透视【投影的中心】移至【无穷远处】,则各【投影线】成为【相互平行】的直线,这种投影法称为平行投影。

    平行投影可以根据投影方向与投影面的夹角分成两类:正投影和斜投影

    1>正投影
    根据投影面与坐标轴的【夹角】又可分为:三视图和正轴侧图
    当投影面与某一坐标轴【垂直】时,得到的投影为三视图,投影方向和这个坐标轴的方向一致;否则得到的投影为正轴侧图。


    『1』.三视图


    1.主视图——>XOZ面(也称为V面)为投影面

    由投影变换前后三维物体上点到主视图点的关系,变换矩阵为:

    由三维物体到主视图的投影变换矩阵表示为:
    [x' y' z' 1]=[x y z 1]•Tv=[x 0 z 1]

    2.侧视图——>YOZ面(也称为W面)为投影面

    由投影变换前后三维物体上点到侧视图点的关系,变换矩阵为:


    为使侧视图与主视图都画在一个平面内,就要使W面绕Z轴正转90°,即应有一个旋转变换,其变换矩阵为:

    为使主视图和侧视图有一定的间距,还要使W面沿负X方向平移一段距离-Xo,其变换矩阵为:


    ——>俯视图的投影变换矩阵为:


    3.俯视图——>XOY面(也称为H面)为投影面

    由投影变换前后三维物体上点到俯视图点的关系,变换矩阵为:


    由三维物体到主视图的投影变换矩阵表示为:
    [x' y' z' 1]=[x y z 1]•Th=[x y 0 1]

    为使俯视图与主视图都画在一个平面内,就要使H面绕X轴顺时针转90°,即应有一个旋转变换,其变换矩阵为:


    为使主视图和俯视图有一定的间距,还要使H面沿Z方向平移一段距离-Zo,其变换矩阵为:


    ——>俯视图的投影变换矩阵为:


    【三视图的计算】
    a.确定三维物体上【各点】的位置坐标;
    b.引入齐次坐标,求出所做变换相应的【变换矩阵】
    c.将所作变换用矩阵表示,通过【运算】求得三维物体上各点经变换后的点的坐标值;
    d.由变换后得到的二维点【绘出】三维物体投影后的三视图。

    【特点】
    物体的一个坐标面平行于投影面,其投影能反映形体的实际尺寸
    【不足之处】
    一种三视图上只有物体一个面的投影,所以三视图难以形象地表示出形体的三维性质,只有将主、侧、俯三个视图放在一起,才能综合出物体的空间形状。


    『2』.正轴测图

    当投影面与【三个坐标轴】之间的夹角都【相等】时为等轴测
    当投影面与【两个坐标轴】之间的夹角都【相等】时为正二测
    当投影面与【三个坐标轴】之间的夹角都【不相等】时为正三测

    空间物体的正轴测图是以V面(XOZ面)为轴测投影面,先将物体绕Z轴转Y角,

    接着绕X轴转-α角,最后向V面投影,变换矩阵为:T=Tz•Tx•Tv


    【三视图与轴测图比较】

    2>斜投影

    【平行投影特点】
    平行投影保持物体的【有关比例不变】
    物体的各个面的【精确视图】由平行投影而得;
    没有给出三维物体外表的真实性表示。
    【轴测投影图】是用【平行投影法】形成的,【视点在无穷远处】


    【三维图形变换小结】


    根据T3D在变换中所起的具体作用,进一步可将T3D分成四个矩阵,即:


    平面几何投影的分类:

    转载于:https://www.cnblogs.com/Penglimei/p/9750439.html

    展开全文
  • 平行投影和中心投影.doc
  • D3DXMatrixShadow 产生一个矩阵,把几何体投影到平面上,神奇的是这个矩阵不论对平行光还是点光,都具有统一的形式。 随着点光源距离平面越来越远,平面上任意两点接收到的光线趋于平行,若点光源位置无穷远,则就是...
  • CT平行束滤波反投影重建程序

    热门讨论 2014-08-20 11:05:27
    CT平行束滤波反投影重建程序,利用matlab自带pantom进行正向投影,然后通过滤波反投影恢复出图像
  • OpenGL 立方体平行投影的绘制

    千次阅读 2019-03-21 22:07:03
    平行投影就是平行光的投影,类似于太阳光照射人到地面形成影子这样的情形。即光源离被照射物体很远。 透视投影就是灯光照射杯子都桌面这样子的。即光源离被照射物体很近。 而平行投影又分为正投影和斜投影,这个...
  • OpenCV计计算算图图像像的的水水平平和和垂垂直直积积分分投投影影 这篇文章主要为大家详细介绍了OpenCV计算图像的水平和垂直积分投影具有一定的参考价值感兴趣的小 伴 们可以参考一下 本文实例为大家分享了OpenCV...
  • 空间仿射坐标系的平行投影问题在计算机图形识别、跟踪目标及三维实体重建中具有重要意义。通过分析广义投影公式指出了各种投影之间的内在联系,并由广义投影公式推导出以平面图形叻为空间仿射坐标系平行投影的充要...
  • 平行投影法动画视频教程zip,平行投影法动画视频教程
  • 投影平行面动画视频教程rar,投影平行面动画视频教程
  • 九年级数学下册25.1.1平行投影与中心投影学案沪科版
  • 为了减少现有投影法模板中的冗余像素和匹配过程中无效的投影计算,提出了一种基于投影特征的快速图像匹配方法。基于投影法匹配原理和目标物体最小纵横比矩形特性,构造出平行四边形模板,并应用四方向链码实现该模板的...
  • 2平行投影——学生学习课件
  • 中心投影与平行投影122空间几何体的三视图PPT学习教案.pptx
  • openGL 平行投影和透视投影函数分析

    千次阅读 2015-05-26 17:21:51
    首先,视景体定义了一个场景如何映射到屏幕上(即通过透视投影还是正投影);其次,视景体定义了哪此场景(或场景的一部分)被剪裁到最终的图像之外。 透视投影:与我们平时眼睛所见到的物体一样,满足近...
  • 北师大九上数学投影与视图中心投影平行投影合在一起的超好PPT课件.pptx
  • 2015高中数学1.2.1中心投影与平行投影课件1新人教A版必修2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,728
精华内容 7,091
关键字:

平行投影特征