随笔分类 -  3D数学和图形学

摘要:昨天考图形学有一题:给出方向(a,b,c)缩放因子x,求在这个方向上的缩放矩阵,然后再绕这个方向旋转90°。以前看过,但是昨天怎么也反应不过来,所以现在看看补补。做做笔记。注:是怎么来的呢?推导如下:这里是这道题的缩放部分,下次上绕任意轴旋转部分。 阅读全文
posted @ 2011-12-09 11:13 ☆A希亿 阅读(536) 评论(0) 推荐(0) 编辑
摘要:缩放与视域角有关投影的过程就是xyz分量除以W的过程可知投影在了z=1,的平面上面的z是指乘以投影矩阵(剪裁矩阵)后的z 这里设上面这个DIP矩阵为A;经过计算可知:(在近裁剪面的点) (x,y,n,1)*A=(x*zoomx,y*zoomy,0,n)---->投影后为(x*zoomx/n,y*zoomy/n,0)(在远裁剪面的点) (x,y,f,1)*A=(x*zoomx,y*zoomy,f,f)---->投影后为(x*zoomx/f,y*zoomy/f,1)乘以矩阵后的点满足了0<=z<=w。而且是两个边界。这里的DIP矩阵就是投影矩阵。只不过投影过程要除以w分量来 阅读全文
posted @ 2011-11-19 10:49 ☆A希亿 阅读(2143) 评论(0) 推荐(1) 编辑
摘要:呵呵,完全从书上扒下来的,写得很好,详细说明了视角变换矩阵的计算过程。 阅读全文
posted @ 2011-11-18 17:45 ☆A希亿 阅读(1829) 评论(0) 推荐(0) 编辑
摘要:渲染流水线 对于Direct3D,上述过程通常被认为是一个渲染流水线。 未经转换和照明的顶点从一端进入,在内部这些顶点将完成几个连续操作。然后,经过转换和照明处理的顶点从另一端出来。 渲染流水线的大部分过程都是在进行坐标转换 ,将顶点从一个坐标系转换到别的坐标系。 在使用Direct3D来进行转换时,用户只需要提供描述系统转换的完整转换矩阵,通过IDirect3DDevice->SetTransform方法来实现相应的变换。HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, //变换的类型 CONST D3DMATRIX *pMatrix 阅读全文
posted @ 2011-11-12 22:15 ☆A希亿 阅读(1372) 评论(2) 推荐(0) 编辑
摘要:最近在看阿哲的《3D地形制作全攻略》,写得很好,但是好像网上找不到源码,本来想加QQ请教一下,不过貌似被拒绝了。。。按照书上的方法想做一个光晕效果,看着其实还是不难,但是动手实现的时候还是遇到了麻烦,特别是进行世界坐标->视角转换->投影转换->视口转换的时候,理解起来还是费了一番功夫。就此总结一下。首先说一下光晕实现的思路,就是在世界坐标系中确定太阳的位置,然后通过视角转换->投影转换->视口转换,变换到屏幕坐标,结算其与屏幕中心的连线,在这条直线上面贴上光晕的贴图,光晕的alpha值由太阳(屏幕坐标)到屏幕边界的距离决定,开启alpha融合渲染。基本思想并不难 阅读全文
posted @ 2011-11-12 21:24 ☆A希亿 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:void dda(HDC hdc){ float dx,dy; int k; float x; float y; HPEN pen=NULL; pen = CreatePen(PS_SOLID,5,RGB(255,0,0)); SelectObject(hdc,pen); k=_abs(x2-x1); if(_abs(y2-y1)>k) k=_abs(y2-y1); dx=(x2-x1)/k; dy=(y2-y1)/k; x=x1; y=y1; for(int i=0;i<=k... 阅读全文
posted @ 2011-11-10 17:48 ☆A希亿 阅读(472) 评论(0) 推荐(0) 编辑