计算机图形学-1-小试牛刀

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 这段代码使用 OpenGL 和 GLUT 库创建了一个简单的图形窗口,展示了多个几何形状。首先清屏并设置背景为黑色,然后绘制一个白色矩形和一个彩色大三角形。接着绘制三个不同颜色的点,并计算大三角形的中点,绘制一个小三角形。最后,再次计算小三角形的中点,绘制一个更小的三角形。通过 `glutDisplayFunc` 注册显示回调函数 `myDisplay`,并在 `glutMainLoop` 中进入事件处理循环。

include

void myDisplay(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);// 设置清空屏幕时的颜色为黑色
glClear(GL_COLOR_BUFFER_BIT);// 清除颜色缓冲区,以便重新绘制

glColor3f(1.0f, 1.0f, 1.0f);// 设置绘制颜色为白色
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);//绘制一个填充的矩形,范围从(-0.5, -0.5) 到(0.5, 0.5)

glBegin(GL_TRIANGLES);//大三角
glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f, 1.0f);//x 坐标:0.0f 表示这个点在 x 轴上位于原点(中心线)。y 坐标:1.0f 表示这个点在 y 轴上位于正方向的 1 处。视口范围是从 - 1 到 1
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.8f, -0.5f);
glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.8f, -0.5f);
glEnd();

glPointSize(3);//设置绘制点的大小为 3
glBegin(GL_POINTS);
glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(-0.4f, -0.4f);
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.0f, 0.0f);
glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(0.4f, 0.4f);
glEnd();

// 计算中点
float Ax = 0.0f, Ay = 1.0f;        // A
float Bx = 0.8f, By = -0.5f;       // B
float Cx = -0.8f, Cy = -0.5f;      // C

float ABx = (Ax + Bx) / 2;         // AB 中点
float ABy = (Ay + By) / 2;

float BCx = (Bx + Cx) / 2; 
float BCy = (By + Cy) / 2;

float CAx = (Cx + Ax) / 2;     
float CAy = (Cy + Ay) / 2;

// 绘制小三角形
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 1.0f, 0.0f);   // 选择颜色
glVertex2f(ABx, ABy);         // 中点 AB
glVertex2f(BCx, BCy);       
glVertex2f(CAx, CAy);        
glEnd();

// 计算
float ABx2 = (ABx + BCx) / 2;     // 小三角形 AB 中点
float ABy2 = (ABy + BCy) / 2;

float BCx2 = (BCx + CAx) / 2;     
float BCy2 = (BCy + CAy) / 2;

float CAx2 = (CAx + ABx) / 2;     
float CAy2 = (CAy + ABy) / 2;

// 绘制小小三角形
glBegin(GL_TRIANGLES);
glColor3f(0.0f, 1.0f, 1.0f);   // 选择颜色
glVertex2f(ABx2, ABy2);       // 中点 AB
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(BCx2, BCy2);      
glColor3f(0.0f, 0.0f, 1.0f);
glVertex2f(CAx2, CAy2);      
glEnd();

glFlush();

}

int main(int argc, char* argv[]) // 主函数
{
glutInit(&argc, argv); // 初始化 GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); // 设置显示模式为 RGB 和单缓冲
glutInitWindowPosition(100, 100); // 设置窗口初始位置
glutInitWindowSize(400, 400); // 设置窗口大小为 400x400 像素
glutCreateWindow("Hello World!"); // 创建窗口并设置标题
glutDisplayFunc(&myDisplay); // 注册显示回调函数
glutMainLoop(); // 进入 GLUT 事件处理循环
return 0; // 返回 0,程序结束
}

相关文章
|
6月前
|
算法 数据可视化 vr&ar
【图形学】探秘图形学奥秘:区域填充的解密与实战
【图形学】探秘图形学奥秘:区域填充的解密与实战
54 0
|
6月前
|
算法 数据可视化 vr&ar
【图形学】探秘图形学奥秘:图形变换的解密与实战
【图形学】探秘图形学奥秘:图形变换的解密与实战
83 0
|
6月前
|
算法 数据可视化 vr&ar
【图形学】探秘图形学奥秘:DDA与Bresenham算法的解密与实战
【图形学】探秘图形学奥秘:DDA与Bresenham算法的解密与实战
118 0
|
6月前
|
存储 传感器 算法
【数字图像】数字图像直方图规定化处理的奇妙之旅
【数字图像】数字图像直方图规定化处理的奇妙之旅
90 0
|
6月前
|
存储 机器学习/深度学习 算法
【数字图像】数字图像滤波处理的奇妙之旅
【数字图像】数字图像滤波处理的奇妙之旅
110 0
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
|
数据可视化
好玩的DEM制图:等高线地形图入门与进阶
好玩的DEM制图:等高线地形图入门与进阶
89 0
|
数据可视化 算法 定位技术
地图四色原理的涂色实现:基于遗传算法的Python代码
本文介绍利用Python语言,实现基于遗传算法(GA)的地图四色原理着色操作~
307 1
|
编解码 算法 数据库
你知道数字图像处理的经典Lenna图背后的故事吗
你知道数字图像处理的经典Lenna图背后的故事吗

热门文章

最新文章