计算机图形学(C/C++语言)

主要记录计算机图形学课上学的一些函数等知识

目录

前提

正文

画布

initgraph

closegraph

获取位置的函数

getx

gety

控制画笔的函数

moveto

moverel

图形绘制的函数

画点

putpixel

画直线

line

lineto

linerel

画圆弧类

arc

circle

pie

画多边形

rectangle

drawpoly

文字输出的函数

outtextxy

一些特殊的函数

getch

总结

前提

本人使用的是Visual Studio2022,需前往EasyX官网下载配合版本并安装。

可以配合EasyX文档使用。

正文

画布

initgraph

1、定义

// initgraph(int hight,int width,int flag) 初始化图形 可以理解成画布
// hight -> 画布的高度
// width -> 画布的宽度
// flag -> 绘画窗口的样式 默认为0 可省略

2 、使用

// 初始化一块 宽640 高480 的画布
initgraph(640, 480);

closegraph

1、定义

// closegraph()
// 无返回值 无参数

2、作用

// 关闭画布

获取位置的函数

getx

返回值为int类型,返回当前光标的x坐标。

gety

返回值为int类型,返回当前光标的y坐标。

控制画笔的函数

moveto

1、定义

// moveto(int x,int y)
// x,y -> 画布的(x,y)位置

2、作用

// 将画笔移动到(x,y)位置处

注:

官网指明该函数已废弃,仅在graphics.h中声明,不推荐使用。

moverel

1、定义

// moverel(int dx,int dy)
// dx,dy -> 当前位置要移动的x,y的值

2、作用

// 基于当前位置移动dx,dy,相对移动函数

注:

官网指明该函数已废弃,仅在graphics.h中声明,不推荐使用。

图形绘制的函数

画点

putpixel

1、定义

// putpixel(int x,int y,int color)
// x,y -> 点的坐标
// color -> 点的颜色

2、作用

// 在点(x,y)处绘制一个color颜色的点

画直线

line

1、定义

// line(int x1,int y1,int x2,int y2)
// x1,y1 -> 起始点坐标
// x2,y2 -> 终止点坐标

2、作用

// 在(x1,y1)到(x2,y2)之间画一条直线
// 此时光标依然在(x1,y1)处
lineto

 1、定义

// lineto(int x,int y)
// x,y -> 终止点坐标(x,y)

2、作用

// 从当前光标位置到(x,y)之间画一条直线
// 调用完,光标处于(x,y)处
linerel

1、定义

// linerel(int dx,int dy)
// dx,dy -> 与当前光标相距的x,y值

2、作用

// 绘制一条距当前光标位置dx,dy的直线
// 函数调用玩,光标位置需更新(x+dx,y+dy)

画圆弧类

arc

1、定义

// arc(int left,int top,int right,int bottom,double stangle,double endangle) 无返回值
// left -> 圆弧所在椭圆的外切矩形的左上角 x 坐标
// top -> 圆弧所在椭圆的外切矩形的左上角 y 坐标
// right -> 圆弧所在椭圆的外切矩形的右下角 x 坐标
// bottom -> 圆弧所在椭圆的外切矩形的右下角 y 坐标
// stangle -> 圆弧起始角的弧度
// endangle -> 圆弧终止角的弧度

2、使用

// 起始为右边 逆时针画弧
// 画半圆

arc(100, 100, 0, 10,0, 3.1415926);
circle

1、定义

// circle(int x,int y,int radius) 无返回值
// x,y -> 圆心坐标
// radius -> 半径

2、作用

// 基于圆心(x,y) 半径radius 画无填充圆
pie

1、定义

// pie(int left,int top,int right,int bottom,double stangle,double endangle)
// 无返回值
// left -> 扇形所在椭圆的外切矩形的左上角 x 坐标
// top -> 扇形所在椭圆的外切矩形的左上角 y 坐标
// right -> 扇形所在椭圆的外切矩形的右下角 x 坐标
// bottom -> 扇形所在椭圆的外切矩形的右下角 y 坐标
//stangle -> 扇形的起始角的弧度
// endangle -> 扇形的终止角的弧度

2、作用

// 画扇形

画多边形

rectangle

1、定义

// rectangle(int left,int top,int right,int bottom)
// 无返回值
// left > 矩形左部 x 坐标
// top -> 矩形顶部 y 坐标
// right -> 矩形右部 x 坐标
// bottom -> 矩形底部 y 坐标

2、作用

// 画无填充的矩形
drawpoly

1、定义

// drawpoly(int numpoints,const int *polypoints)
// 无返回值
// numpoints -> 多边形顶点的个数
// polypoints -> 每个点的坐标,数组元素个数为 numpoints * 2
// 该函数会自动连接多边形首尾。

2、作用

// 画无填充的多边形

3、示例

// 绘制三角形
int a[6] = { 100,100, 50, 200, 150, 200 };
drawpoly(3, a);

文字输出的函数

outtextxy

1、定义

// outtextxy(int x,int y,LPCTSTR str)
// outtextxy(int x,int y,TCHAR c)
// x -> 字符串输出时头字母的 x 轴的坐标值
// y -> 字符串输出时头字母的 y 轴的坐标值
// str -> 待输出的字符串的指针
// c -> 待输出的字符

2、作用

// 用于指定位置输出字符串

注:

// 由于字符串编码问题 为了适应编码
// 1、输出单个字符
char a = 'a';
outtextxy(x,y,a);
// 2、输出字符串
outtextxy(x, y, L"abc");

一些特殊的函数

getch

1、定义

// getch() 
// 返回值为int类型 无参数

2、作用

// 当时用getch()函数时 会等待用户在控制台界面按下任意键
// 返回按键的ASCII码值

总结

--------------------------------------------------- 分割线 -----------------------------------------------------------------

第一次上计算机图形学实验课

第一次更新此模块

第一次更新点基础的东西 有误请指正 

希望下次还会继续更新 

记录一下 2023/10/20

--------------------------------------------------- 分割线 -----------------------------------------------------------------

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

主要学习了DDA直线生成算法Bresenham算法绘制直线,以及利用DDA算法画圆

了解其画直线的原理,即直线可看似为点的集合。

2023/11/3

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程解决的问题: 作为游戏行业或者图形学从业者,你是否面临以下问题: 到底openGL底层如何实现的? 到底矩阵操作变换是怎么做到的? 到底光栅化的算法以及原理是什么? 到底如何才能从3D世界投射到2D屏幕呢? 图形学有这么多的矩阵操作,到底如何推导如何应用呢? 学完这门课程,你应该就可以从底层了解一个初级的openGL图形接口如何实现,图形学最底层的封装到底面临哪些挑战;跟随我们一行一行写完代码,你就会得到一个迷你版本的openGL图形库,你可以深度体会图形从模型变换,观察矩阵变换,投影矩阵变换一直到光栅化纹理操作的全套模拟流程。 课程介绍: 本课程将带领学员不使用任何图形库,实现从0到1的图形学接口封装以及算法讲解,并且带领大家手敲代码,一行一行进行实现。 涵盖了(环境搭建,绘制点,Bresenham算法绘制完美直线,三角形拆分绘制算法,颜色插值算法,图片操作,图片二次插值放缩算法,纹理系统接口搭建及封装,矩阵操作理论以及实践,openGL类似接口封装,3D世界的图形学理论及接口封装等) 最终将带领大家通过C++实现一个3D世界的图形接口,方便所有人入门图形学,进行接下来的openGL接口以及GPU编程的学习   本课程为系列课程的第一步入门,且带领所有人进行实现,更加实用,可以让大家打牢图形学的基础知识及编程技能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值