
计算机图形学
我真的不想敲代码
造福全人类
展开
-
用Sutherland-Hodgman算法实现裁剪任意凸多边形
一、 实验目的。用Sutherland-Hodgman算法实现裁剪任意凸多边形二、 实验工具VC6.0三、 实验步骤思想:每次用窗口的一条边界以及其延长线来裁剪多边形。裁剪得到的多边形的顶点由两部分组成:落在可见一侧的原多边形顶点;多边形的边与裁剪窗口边界的交点根据多边形每一边与窗口边所形成的位置关系,沿着多边形依次处理顶点会遇到四种情况:(1)第一点 S 在不可见侧面,而第二点 P 在可见侧。处理方法:交点 I 和点 P 均被加入到输出顶点表中。(2)S 和 P 都在可见侧。处理方法:原创 2020-07-30 20:28:26 · 1251 阅读 · 0 评论 -
DDA算法、中点Bresenam算法,圆或椭圆的绘制
1、调用画点函数,实现任意斜率直线的绘制(运用DDA算法、中点Bresenam算法实现并比较算法精度与效率)② 基本论述DDA算法又称数值微分法,是计算机图形学中一种基于直线的微分方程来生成直线的方法。 原理就是最直观的根据斜率的偏移程度,决定是以x为步进方向还是以y为步进方向。然后在相应的步进方向上,每次增加一个像素,而另一个相关坐标变量则为Y k+1=Y k + m(以x为步进变量为例,m为斜率)假定直线斜率k在0~1之间,当前象素点为(xp,yp),则下一个象素点有两种可选择点P1(xp+1,原创 2020-07-30 20:25:46 · 6451 阅读 · 2 评论 -
改进的z-buffer算法实现 c
一、 实验目的。改进的z-buffer算法实现。二、 实验工具VC6.0三、 实验步骤算法思想:先将Z缓冲器中各单元的初始值置为最小值,当要改变某个象素的颜色值时,首先检查当前多边形的深度值是否大于该象素原来的深度值(保存在该象素所对应的Z缓冲器的单元中),如果大于原来的Z值,说明当前多边形更靠近观察点,用它的颜色替换原象素的颜色。具体实现:Z-Buffer算法(){帧缓存全置为背景色深度缓存全置为最小z值for(每一个多边形){ 扫描转换该多边形for(该多边形所覆盖的每个象素(x原创 2020-07-30 20:19:35 · 1652 阅读 · 1 评论 -
裁剪任意直线段 liang-barshky算法 c
一、 实验目的。使用liang-barshky算法实现裁剪任意直线段实验工具二、 实验工具VC6.0三、 实验步骤思想:以直线的参数方程为基础:X=x1 + u(x2-x1)Y =y1 + u(y2-y1)裁剪区域是不等式:wxl<= X=x1 + u(x2-x1)<= wxrwyb<= Y =y1 + u(y2-y1)<= wyt代入直线方程经过一系列命名转换得到:p1=-△x, p2=△x, p3=-△y, p4=△y,q1=wx1-wxl, q2=wx原创 2020-07-30 20:16:08 · 672 阅读 · 0 评论 -
二维变换 c语言
一、 实验目的。实现对简单图形的二维变换。二、 实验工具VC6.0三、 实验步骤旋转二维旋转是指将P点绕坐标原点转动角度θ得到新的点的过程.缩放将p点相对于原点沿x方向缩放倍沿y方向缩放倍。3 .平移将p点沿直线从一个位置移到另一个位置的过程。3.对称 关于y=x错切产生弹性物体的变形处理,这就是错切。代码如下:#include “stdio.h”#include <stdlib.h>#include “graphics.h”#include “conio原创 2020-07-30 20:13:49 · 2161 阅读 · 2 评论 -
多边形填充 c语言 Easy-X
一、 实验目的。使用改进的X扫描线算法进行多边形的填充。二、 实验工具VC6.0三、 实验步骤1.首先了解多边形填充:输入:多边形顶点序列输出:最佳逼近这个多边形的像素点集利用X-射线扫描思想:确定多边形所占用的最大扫描线数,得到多边形顶点max, min从Ymax移动到Ymin然后进行一些 求交,排序,配对,着色。在求交排序中采用y向连贯性算法进行改进。2.学习y向连贯性算法的大概思路: 优先X | Ymax | 1/k | next交点递增;交点相同,则增量递增原创 2020-07-30 20:10:19 · 1550 阅读 · 0 评论