计算机图形学第三次上机——物体的移动和旋转(含视窗景深)

 

 

计算机图形学第二次上机实验 课程实验报告

 

 

目录

计算机图形学第二次上机实验 课程实验报告

一、实验目的

二、实验环境

三、实验内容

四,源代码



 

 

一、实验目的

  1. 掌握配置glut库的步骤
  2. 测试运行示例代码
  3. 掌握并编写中点线算法和中点圆算法

二、实验环境

1.codeblocks-17.12

2.Windows10 SDK 10.0.17134.0

三、实验内容

  • 绘制曲线

1. 证明如下的两条三次曲线段具有C1连续性,但没有G1连续性,并画出两条曲线段

 

 

证明:

P11=[2t-2,3t2-4t=1],P21=[2t,3t2]

所以  P11|t=1=[0,0]  ,   P21|t=0=[0,0]

所以P1,P2有C1连续,

因为[0,0]的方向不定,所以没有G1连续

 

实验结果

2. 假定一条三次Hermite曲线的两个端点P1=<0,1>,P4=<3,0>,端点处切向量R1=<0,1>,R4=<-3,0>,请写出Hermite多项式形式,并绘出最后曲线,改变切向量,观察曲线形状变化。

Hermite多项式形式为:

实验结果为

 

 

3. 已知4点P1(0,0,0)、P2(1,1,1)、 P3(2,-1,-1)、P4(3,0,0),用其作为特征多边形分别构造一条Bezier曲线、一条B样条曲线,并绘制出曲线。

Bezier曲线多项式:

结果为

 

 

 

B样条曲线多项式:

 

 

结果为

  • 其它
  1. 编写程序,使一物体沿着一条直线匀速移动。

 

 

为实现显示中的视觉效果

需要添加gluPerspective和gluLookAt函数

具体代码如下:

 

gluPerspective(60,ratio,start,depth);//透视矩阵压入堆栈,进行透视变换,四个参数依次为,眼睛睁开角度、宽高比、前透视面距离、后透视面距离(填正值,但其实该透视体处于z负轴)

 

glEnable(GL_DEPTH_TEST);//开启更新深度缓冲区功能

 

gluLookAt(20,10,40,0,0,0,0,1,0);//相机从(0,10,40)看向(0,0,0,),(0,1,0)为正方向

 

glMatrixMode(GL_MODELVIEW);//投影变换完了进入绘图模式

 

 

 

  1. 编写程序,使一物体围绕屏幕上一点匀速旋转。

 

 

思想与第一问类似,结果如下

 

 

 

四,源代码

1.

#include "windows.h"

#include<glut.h>

typedef struct{

float x,y,z;

}Point;

//Point ctrlpoints[4]= { {-4.0,-4.0,0.0},{-2.0,4.0,0.0},{2.0,-4.0,0.0},{4.0,4.0,0.0}};

void init()

{

glClearColor(1.0,1.0,1.0,1.0);

}

void DrawCurve(int n)

{

Point p;

double t,deltat,t2,t3,et,et2,et3;

int i;

deltat = 1.0/(n-1);

glBegin(GL_LINE_STRIP);

for(i=0;i<100;i++)

{

t = i*deltat;

et = 1-t;

t2 = t*t;

et2 = et*et;

t3 = t*t2;

et3 = et*et2;

p.x=et2;

p.y=t3-2*t2+t;

p.z=0;

glVertex3f(p.x,p.y,p.z);

}

glEnd();

//glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0,1,0);

glBegin(GL_LINE_STRIP);

 

for(i=0;i<100;i++)

    {

        t=i*deltat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值