OpenGL第一节课小作业

计算机图像学OpenGL大作业容易更改 使用vs2019。简单在display中改图像位,就可以变成自己的 阅读详情

小鱼游啊游

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<math.h>
#include<Windows.h>
#include<stdio.h> //86
#include<GL/glut.h>
const int n = 300;                   //小鱼游啊游
const double PI = 3.1415926;
int  x_0=200, y_0=200;
double x_1, x_2, y_1, y_2;// 输入 700 600 780 650
void Init() {            
	glClearColor(0.5f, 0.8f, 1.0f, 0.0f);  //浅蓝
}
void Reshape(int w, int h) {
	glViewport(0, 0, w, h);
	glMatrixMode(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();
	gluOrtho2D(0, (double)w, 0, (double)h);
}

void DDALine(int a1, int b1, int a2, int b2) {     //画线

	float  a, b;
	float	 da, db, k;
	da = a2 - a1;
	db = b2 - b1;
	k = db / da;
	b = b1;
	a = a1;
	if (k <= 1 && k >= -1) {

		for (; abs((int)(a - a2)) > 0; a += (a2 - a1) / abs(a2 - a1)) {
			glVertex2f(a, b);
			b = b + ((a2 - a1) / abs(a2 - a1)) * k;
		}
	}
	else {

		for (; abs((int)(b - b2)) > 0; b += (b2 - b1) / abs(b2 - b1)) {
			glVertex2f(a, b);
			a = a + ((b2 - b1) / abs(b2 - b1)) / k;
		}
	}
}
void myDisplay(void) {
	int direction = 0;
	int change = 1;
	int count = 0;
	double r1 = (x_2 - x_1) / 6;
	double r2 = (x_2 - x_1) / 3;
	for (int i = 100; i >0; i--) {
		glClear(GL_COLOR_BUFFER_BIT);

		glBegin(GL_POLYGON);     //渐变背景
		glColor3f(0.0f, 0.27f, 0.41f);
		glVertex2f(0, 0);
		glColor3f(0.0f, 0.27f, 0.41f);
		glVertex2f(800, 0);
		glColor3f(0.5f, 0.8f, 1.0f);
		glVertex2f(800, 700);
		glColor3f(0.5f, 0.8f, 1.0f);
		glVertex2f(0,700);
		
		glEnd();
		glFlush();

		glColor3f(0.4f, 0.4f, 0.4f);  //石头2  700 600 780 650
		glBegin(GL_POLYGON);
		glVertex2f(720, 70);
		glVertex2f(760, 90);
		glVertex2f(800, 55);
		glVertex2f(800, 0);
		glVertex2f(670, 0);
		glVertex2f(695, 40);
		glEnd();
		glFlush();


		//珊瑚
		glColor3f(1.0f, 0.25f, 0.2f);
		glLineWidth(10);
		glBegin(GL_LINES);
		glVertex2f(740,0 );
		glVertex2f(740, 10);//主根

		glVertex2f(740, 10);
		glVertex2f(770, 30);//一级分支

		glVertex2f(770, 30);
		glVertex2f(800, 40);//
		glVertex2f(770, 30);
		glVertex2f(745, 48);//

		glVertex2f(750, 45);
		glVertex2f(765, 60);//
		glVertex2f(750, 45);
		glVertex2f(735, 65);//

		glVertex2f(765, 60);
		glVertex2f(750, 75);//
		glVertex2f(765, 60);
		glVertex2f(780, 70);
		///700 600 780 650
		glVertex2f(740, 10);
		glVertex2f(710, 20);//一级分支

		glVertex2f(710, 20);
		glVertex2f(740, 40);//8:5
		glVertex2f(710, 20);
		glVertex2f(690, 35);
		//
		glVertex2f(722, 25);
		glVertex2f(730, 50);//

		glVertex2f(690, 35);
		glVertex2f(710, 55);//
		glVertex2f(690, 35);
		glVertex2f(670, 45);//#####

		glVertex2f(707, 51);//}}}}}
		glVertex2f(725, 75);
		glVertex2f(710, 55);
		glVertex2f(685, 70);//######

		glVertex2f(725, 75);
		glVertex2f(740, 80);
		glVertex2f(727, 72);
		glVertex2f(710, 90);//#######

		glVertex2f(710, 90);
		glVertex2f(730, 100);
		glVertex2f(710, 90);
		glVertex2f(700, 105);
	

		glVertex2f(685, 70);
		glVertex2f(700, 80);
		glVertex2f(687, 66);
		glVertex2f(668, 90);

		glVertex2f(670, 45);
		glVertex2f(680, 60);
		glVertex2f(670, 45);
		glVertex2f(640, 40);//

		glEnd();
		glFlush();//700 600 780 650
		

		glColor3f(0.0f, 0.4f, 0.2f);////水草0
		glLineWidth(35);
		glBegin(GL_LINE_STRIP);
		glVertex2f(10, 0);
		for (int i2 = 1; i2 < 13; i2 += 2) {
			glVertex2f(-30, 50 * i2 - 20);
			glVertex2f(50, 50 * (i2 + 1) - 20);
		}
		glEnd();
		glFlush();

		glColor3f(0.0f, 0.8f, 0.0f);////水草1
		glLineWidth(30);
		glBegin(GL_LINE_STRIP);
		for (int i2 = 0; i2 < 13; i2+=2) {
			glVertex2f(20, 50*i2);
			glVertex2f(80, 50*(i2+1));
		}
		glEnd();
		glFlush();

		glColor3f(0.0f, 0.4f, 0.2f);////水草2
		glLineWidth(30);
		glBegin(GL_LINE_STRIP);
			glVertex2f(90,0 );
		for (int i2 = 1; i2 < 12; i2 += 2) {
			glVertex2f(50, 50 * i2-20);
			glVertex2f(130, 50 * (i2 + 1)-20);
		}
		glEnd();
		glFlush();

		glColor3f(0.5f, 0.5f, 0.5f); //石头1  700 600 780 650
		glBegin(GL_POLYGON);
		glVertex2f(-10, 70);
		glVertex2f(80, 90);
		glVertex2f(160, 70);
		glVertex2f(120, 0);
		glVertex2f(-10, 0);
		glEnd();
		glFlush();

		glColor3f(0.0f, 0.9f, 0.2f);////水草3
		glLineWidth(25);
		glBegin(GL_LINE_STRIP);
		glVertex2f(100, 0);
		for (int i2 = 1; i2 < 16; i2 += 2) {
			glVertex2f(90, 40 * i2 - 20);
			glVertex2f(190, 40 * (i2 + 1) - 20);
		}
		glEnd();
		glFlush();

		glColor3f(0.0f, 0.5f, 0.2f);////水草4
		glLineWidth(25);
		glBegin(GL_LINE_STRIP);
		glVertex2f(190, 0);
		for (int i2 = 1; i2 < 16; i2 += 2) {
			glVertex2f(160, 35 * i2 - 20);
			glVertex2f(240, 35 * (i2 + 1) - 20);
		}
		glEnd();
		glFlush();

		change = change * ((int)x_1)/abs((int)x_1);
		//printf("#@ %d\n", change);//test
		if (change < 0) {
			x_1 = -x_1;
			y_1 = -y_1;
			x_2 = -x_2;
			y_2 = -y_2;
			count++;
			//printf("%d\n",change);//test
		}
		else if (x_1 >= 800) {
			x_1 -= 800;
			x_2 -= 800;
			y_1 -= 800;
			y_2 -= 800;
		}
		if (count % 2 != 0) {
			direction = 1;
		}
		if (direction ==1 ) {
			if (i % 2 == 0) {
				x_1 = x_1 + i;
				x_2 = x_2 + i;
			}
			else {
				y_1 = y_1 + i;
				y_2 = y_2 + i;
			}
		}
		else {
			if (i % 2 == 0) {
				x_1 = x_1 - i;
				x_2 = x_2 - i;
			}
			else {
				y_1 = y_1 - i;
				y_2 = y_2 - i;
			}
			
		}
		glPointSize(1);
		glColor3f(1.0, 1.0, 0.8);//光线 700 600 780 650
		glBegin(GL_POINTS);
		for (int j = 700, k = 750; j * k >=0; j -= 30, k -= 30) {
			glBegin(GL_POINTS);
			DDALine(0, 700, j, k);
			glEnd();
			glFlush();
		}
		glEnd();
		glFlush();

		glLineWidth(3);         //鱼 身体
		glBegin(GL_POLYGON);
		glColor3f(1.0f, 1.0f, 0.0f);        //点1 嘴
		glVertex2f(x_1, (y_1 + y_2) / 2); 

		glColor3f(0.0f, 1.0f, 1.0f);
		glVertex2f((x_1 + x_2) / 2, y_2);       //点二 头

		glColor3f(1.0f, 0.0f, 1.0f);             //点三 尾巴开始处
		glVertex2f((3 * x_2) / 2 - x_1 / 2, (y_1 + y_2) / 2);

		glColor3f(1.0f, 0.0f, 0.0f);      //4 尾巴上尖
		//(0.5f, 0.8f, 1.0f, 0.0f);
		//glVertex2f((3 * x_2 - x_1) / 2 + (x_2 - x_1) * 1, y_2);
		glVertex2f(2*x_2-x_1+( x_2 - x_1) * cos( PI /(3* (i/10))) , (y_2+y_1)/2+(y_2-y_1)/2*cos(PI/(3*(i/10))));

		glColor3f(1.0f, 0.0f, 0.0f);              //5 
		//glVertex2f((3 * x_2 - x_1) / 2 + (x_2 - x_1) / 2 * 1, (y_2 + y_1) / 2);
		glVertex2f((3 * x_2 - x_1) / 2 + (x_2 - x_1) / 2 * cos(PI / (6 * (i/10))), (y_2 + y_1) / 2);
		glColor3f(1.0f, 0.0f, 0.0f);              //6 下尖
		//glVertex2f((3 * x_2 - x_1) / 2 + (x_2 - x_1) * 1, y_1);
		glVertex2f(2 * x_2 - x_1 + (x_2 - x_1) * cos(PI / (3 * (i / 10))), (y_2 + y_1) / 2 + (y_1 - y_2) / 2 * cos(PI / (3 * (i / 10))));

		glColor3f(1.0f, 0.0f, 1.0f);               // 7   尾巴开始处
		glVertex2f(1.5 * x_2 - x_1 / 2, (y_1 + y_2) / 2);

		glColor3f(1.0f, 1.0f, 1.0f);      //8 肚子
		glVertex2f((x_1 + x_2) / 2, y_1);

		glEnd();
		glFlush();

		glBegin(GL_POLYGON);////鱼翅上
		glColor3f(0.0f, 1.0f, 1.0f);
		glVertex2f((x_1 + x_2) / 2, y_2);


		glColor3f(1.0f, 0.0f, 0.0f);
		glVertex2f(x_2, (5 * y_2 - y_1) / 4);

		glColor3f(1.0f, 0.0f, 0.0f);
		glVertex2f((x_2 * 3 + x_1) / 4, (7 * y_2 + y_1) / 8);

		glEnd();
		glFlush();

		glBegin(GL_POLYGON);////鱼翅下
		glColor3f(1.0f, 1.0f, 1.0f);
		glVertex2f((x_1 + x_2) / 2, y_1);

		glColor3f(1.0f, 0.0f, 0.0f);
		glVertex2f(x_2, (5 * y_1 - y_2) / 4);

		glColor3f(1.0f, 0.0f, 0.0f);
		glVertex2f((x_2 * 3 + x_1) / 4, (7 * y_1 + y_2) / 8);
		glEnd();
		glFlush();

		glPointSize(6);
		glBegin(GL_POINTS);//眼睛
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(x_1 + (x_2 - x_1) / 4, (y_1 + y_2) / 2);
		glEnd();
		glFlush();

glColor3f(0.6f, 0.6f, 0.6f);  //石头3  700 600 780 650
		glBegin(GL_POLYGON);
		glVertex2f(50, 30);
		glVertex2f(70, 60);
		glVertex2f(160, 75);
		glVertex2f(180, 0);
		glVertex2f(30, 0);
		glEnd();
		glFlush();
		
if (change < 0) {//泡泡位置
			int temp = y_1;
			y_1 = y_2;
			y_2 = temp;
			change = 1;
		}
		glPointSize(3);
		glBegin(GL_POINTS);//泡泡
		glColor3f(0.9f, 0.9f, 1.0f);
		for (int k = 0; k <= r1; k++) { //小泡泡
			for (int j = 0; j < n; j++) {
				glVertex2f(x_1 + k * cos(2 * PI / n * j), (3 * y_2 - y_1) / 2 + k * sin(2 * PI / n * j));
			}
		}
		glEnd();
		glFlush();

		Sleep(500);//////                        700 600 780 650
		
		glPointSize(3);
		glBegin(GL_POINTS);//泡泡
		glColor3f(0.9f, 0.9f, 1.0f);
		for (int k = 0; k <= r2; k++) {     //大泡泡
			for (int j = 0; j < n; j++) {
				glVertex2f((x_1 + x_2) / 2 + k * cos(2 * PI / n * j), (5 * y_2 - 3 * y_1) / 2 + k * sin(2 * PI / n * j));
			}
		}
		glEnd();
		glFlush();

		int casual[36];           //一堆泡泡
		glPointSize(3);
		glBegin(GL_POINTS);//泡泡
		glColor3f(0.9f, 0.9f, 1.0f);
		srand(time(0));//Time(0)是得到当前时时间值==srand((unsigned)time(NULL));
		for (int in = 0; in < 35; in++) {
			casual[in] = 20 + rand() % 651;  //int a=m+rand()%(n-m+1);
			for (int k = 0; k <= 5; k++) {     //大泡泡
				for (int j = 0; j < n; j++) {
					if (in % 2 == 0) {
						glVertex2f(casual[in] + k * cos(2 * PI / n * j), casual[in] - in * in * 5 - 2 * in + k * sin(2 * PI / n * j));
					}
					else if (in % 3 == 0) {
						glVertex2f(casual[in] + k * cos(2 * PI / n * j), casual[in] + 30 * in + k * sin(2 * PI / n * j));
					}
					else if (in % 5 == 0) {
						glVertex2f(casual[in] + 13 + k * cos(2 * PI / n * j), casual[in] + 110 + in * in + k * sin(2 * PI / n * j));
					}
					else {
						glVertex2f(casual[in] + k * cos(2 * PI / n * j), casual[in] + 150 + in * in * 4 - in * 9 + k * sin(2 * PI / n * j));
					}

				}
			}

		}
		glEnd();
		glFlush();
		Sleep(500);

		int casua[36];           //一堆水母
		glPointSize(3);//水母
		glColor3f(1.0f, 0.75f, 0.8f);
		srand(time(0));//Time(0)是得到当前时时间值==srand((unsigned)time(NULL));
		for (int in = 0; in < 35; in++) {
			casua[in] = 20 + rand() % 651;  //int a=m+rand()%(n-m+1);
			glBegin(GL_POINTS);
			for (int k = 0; k <= 35; k++) {     //大泡泡
				for (int j = 0; j < n; j++) {
					if (in % 2 == 0) {
						x_0 = casua[in];
						y_0 = casua[i] - in *in* 0.88 - 7 * in + 25;						
					}
					else if (in % 3 == 0) {
						y_0 = casua[i] + in * in * 0.3 - 5 * in + 2;
					}
					else if (in % 5 == 0) {
						y_0 = casua[i] - in * in*0.1 + 52;
					}
					else {
						y_0 = casua[i] + 0.75 * in * in - 1 * in;
						glVertex2f(x_0 + k * cos(PI / n * j), y_0 + k * sin(PI / n * j));
					}				
				}
			}
			glEnd();
			glFlush();
			//// 700 600 780 650
			glPointSize(10);
			glBegin(GL_LINES);  //须
			glColor3f(1.0f, 0.75f, 0.8f);
			glVertex2f(x_0, y_0 - 5);
			glVertex2f(x_0, y_0 - 35);
			glVertex2f(x_0 + 35, y_0 - 5);
			glVertex2f(x_0 + 35, y_0 - 35);
			glVertex2f(x_0 - 35, y_0 - 5);
			glVertex2f(x_0 - 35, y_0 - 35);
			glEnd();
			glFlush();
		}
		Sleep(500);
		//y_0 +=15;

	}       //for循环

}
int main(int argc, char* argv[]) {  //????????
	glutInit(&argc, argv);        //????
	scanf("%lf %lf %lf %lf", &x_1, &y_1, &x_2, &y_2);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(800, 700);     ///////////////////窗口大小800*700
	glutCreateWindow("First");
	Init();
	glutReshapeFunc(Reshape);
	glutDisplayFunc(myDisplay);
	glutMainLoop();
	return 0;
}

用OpenGL绘制的三维场景的简单机器人 这是慕课上的计算机图形学的作业,作业要求是: 具体要求: (1)构建一个三维场景: 可利用glut提供的各种简单形体来搭建;或者读入别的模型来构成场景。 加入光照效果。 (2)用键盘操纵一个物体(如一艘飞船,或一个机器人)在三维场景中漫游。 视点可以放在物体上,或跟随物体;可利用gluLookAt( )函数来实现对视点的控制。 撰写的作业文档中包括: (1)程序功能的描述,效果请附图; (2)论... 阅读详情

相关推荐

【OpenGL】详解第一个OpenGL程序

OpenGL能做的事情太多了!很多程序也看起来很复杂。但是!所有O

candycat 9万+

计算机动画实验(五)OpenGL实现粒子动画

实验题目来自2021年春季学期山东大学软件学院计算机动画基础课程 给出人群大规模流动和聚集活动的粒子动画,倡议取消群体性集会 可以是图形方式,也可以是图像方式

oaiizno的博客 1105

OpenGL 作业——纹理

一、修改片段着色器,仅让笑脸图案朝另一个方向看 #version 330 core out vec4 FragColor; in vec3 ourColor; in vec2 TexCoord; uniform sampler2D texture1; uniform sampler2D texture2; void main() { FragColor = mix(texture(texture1, TexCoord), texture(texture2, vec2(1-TexCoord.x..

qq_57251314的博客 3170

funcode实验--海底世界(c++实现)

C++语言课程设计一海底世界一、实验内容海底有若干条鱼,其中若干条相同的鱼向一个方向游动,另一条来回随机游动,由玩家用键盘W A S D控制另外一条游动。要求如下:1、 来回游动的鱼,从屏幕左边游进来,均已一个随机速度水平游动。从屏幕右侧游出去,很快又从屏幕右侧游出来,就这样来回游动。2、 玩家用WASD键控制一条鱼向上、左、下、右方向游动。松开按键时,玩家的鱼就停止游动。3、 玩家的鱼游到屏幕边...

mcp3128 1万+

大作业——OpenGL-基于物理的渲染挂线项目说明书

对LearnOpenGL的总结,将各种OPenGL的知识点进行整合,初步实现一个简易的渲染管线。

Le11eL的博客 2438

计算机图形学作业(一):利用OpenGL绘制三角形,并利用ImGUI增加颜色编辑窗口

计算机图形学作业(一):利用OpenGL绘制三角形,并利用ImGUI增加颜色编辑窗口前言绘制三角形颜色编辑窗口ImGUI的配置修改imgui_impl_opengl3.h文件 前言 OpenGL一般被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。由于OpenGL是一个图形API,并不是一个独立的平台...

看门猫的博客 3530

C++/OpenGL应用程序

GLFW 库包含 GLFWwindow 类,我们可以在其上进行 3D 场景绘制。OpenGL 也向我们提供了用于 GLSL 程序载入可编程着色阶段并对其进行编译的命令。最后 OpenGL 使用缓冲将 3D 模型和其他相关图像数据发送到管线中。图像应用程序大部分是 C++ 编写,OpenGL 调用实现与 3D 渲染相关任务将会使用一些扩展库: GLEW、GLM、GLFW、SOLL2 等。

言午日月 768

openGL兔兔大作业-面的鼠标拾取

好久没写过GL了,正好来发发教程 要求 给出兔兔的顶点坐标与三角面索引,需要实现: 绘制模型,冯氏光照 模型及视角移动 鼠标点选高亮某三角面 总体思路 & 坑点 ​ For 可以自己实现OpenGL编写的朋友 导入模型 :给出的数据为顶点坐标,没有法线信息,需要求解法线,在我的实现中对每一三角面根据三点坐标求解了法线,没有进行法线插值,这会使得兔兔表面不够圆润,并且需要 NumFace * 3 大小的VBO,较浪费空间。按道理可以对每一点求解法线,使用该点与邻接点的向量进行加权平均,具体可以

peter_819的博客 1510

OpenGL的3D场景模型大作业

【题目】 opengl 3D环境开发 本文标题:OpenGL的3D场景模型大作业 本文链接:https://blog.xygeng.cn/182.html 作者授权:除特别说明外,本文由庚哥哥原创编译并授权木芽博客刊载发布。 版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。 【内容】 绘制一个简单的三维场景,可以是室内:卧室,办公室,教室,也...

木芽博客 2万+

OpenGL多光源:实现多光源效果的C/C++编程

多光源技术允许我们在场景中使用多个光源,从而增强物体的视觉效果。下面是一个简单的示例,展示了如何使用OpenGL和C/C++实现多光源效果。请注意,上述代码仅为示例,具体的实现可能会根据项目的需求和使用的图形库而有所不同。但是,通过理解光源的属性和在渲染循环中传递这些属性给着色器,您可以根据自己的需求进行相应的修改和调整。通过以上步骤,我们成功地实现了使用OpenGL和C/C++编程语言的多光源效果。在渲染循环中,每个光源的属性将被传递给着色器,然后通过计算漫反射光照来影响场景中的物体。

PixelBlade的博客 180

openGL期末大作业——行走的机器人

实现机器人带光照的绘制和运动变换。通过glPushMatrix() 和glPopMatrix()绘制出机器人层次结构模型和几何变换,要求实现机器人手、脚、头、肩膀的旋转等几何变换,能够实现机器人走路的效果。同时机器人打上光照。内付完整代码以及实验报告!!

OpenGL 期末考试作业

1、OpenGL中能渲染的基本元素是什么?(曲面) 答:OPENGL基本元素: GL_POINTS GL_LINES GL_POLYGON  GL_LINE_STRIP GL_LINE_LOOP GL_TRANGLES GL_TRANGLE_STRIP  GL_TRANGL

Hackbuteer1的专栏 9959

opengl大作业 乡间小屋

f为雾化控制,鼠标右键打开菜单,方向键调整视角。 本程序应用了渲染,回显列表,粒子系统,纹理贴图,定时回调,光照,消隐,伪装反射等技术 本程序可继续加入投影,视点切换,移动,鼠标响应,中文字幕,凹凸纹理,雾化浓度变化等

【傅老師/OpenGL教學】代码作业记录P01-P16课

本系列只用于记录我学习傅老师的OpenGL教学代码作业。

Wenmeijing的博客 328

【模拟电子设计实战】开源!基于Multisim与AD620的心电采集电路仿真与优化

本文详细介绍了基于Multisim与AD620的心电采集电路仿真与优化实战。通过分析心电信号采集的挑战,重点讲解了AD620仪表放大器和OP07运算放大器的选型优势及电路设计技巧,包括对抗50Hz工频干扰和基线漂移的优化方法。文章还分享了Multisim仿真参数设置与实测对比经验,最终实现性能达标的心电采集电路设计。

weixin_30555125的博客 95

将机器人urdf模型转换为Mujoco环境下的mjcf模型

在使用gym环境进行人形模型站立训练的过程中,我想要将之前ros环境下的机器人urdf模型导入到mujoco环境下,这时候就需要将urdf模型转换为mujoco专用的mjcf模型。-AzureLoong.urdf是机器人模型(我这里使用青龙的模型);--custom_robot.xml是转换完成之后的机器人模型的名字和格式;包要求 Python 版本必须是 3.11 或更高),保证自己的其他训练环境和依赖不被干扰。首先将meshes文件迁移到需要输出的目录下,然后再运行转换命令。最后就可以成功输出了。

weixin_44334573的博客 3754

Opengl纹理作业分享

Opengl纹理作业分享

whyyds11的博客 303

基于YOLOv5与海康工业相机的高分辨率实时检测实践

本文详细介绍了基于YOLOv5与海康工业相机的高分辨率实时检测实践,通过优化相机配置、网络传输和YOLOv5模型适配,实现了每秒15帧以上的实时检测性能,缺陷识别准确率高达99.2%。特别适用于电子元件焊接点检测、精密齿轮齿痕检查等对微小缺陷敏感的场景。

weixin_30872499的博客 474

【亲测免费】 openGL期末大作业——行走的机器人

openGL期末大作业——行走的机器人 【下载地址】openGL期末大作业行走的机器人 本仓库提供了一个基于OpenGL的期末大作业项目——行走的机器人。该项目展示了如何使用OpenGL技术创建一个动态的、行走的机器人模型。通过本项目,您可以学习到OpenGL的基本概念、图形渲染技术以及动画实现方法 ...

gitblog_09701的博客 759

智能车竞赛必备:STC32G144K开源库实战指南(含总钻风摄像头配置)

本文为智能车竞赛参赛者提供了一份基于STC32G144K微控制器与逐飞开源库的实战开发指南。文章详细介绍了从开发环境搭建、总钻风摄像头驱动配置与图像采集优化,到核心控制算法实现与多任务调度等关键步骤,旨在帮助队伍快速构建稳定高效的视觉处理系统,提升竞赛竞争力。

weixin_29191081的博客 708

carsim软件教学

第一步打开小锁(红色标注) 新手往往一看界面是灰的,界面内的各种模块打开不了,以为没激活成功 所有模块必须复制之后,进行编辑,不要直接进行修改(很重要) 2.空气动力学模型(红色标注) 这里面主要设定了簧上质量。整车的整备质量在下图模块中进行设定 空气动力学。主要涉及到空气阻力,在下面模块中进行设定,有个问题需要注意,他的空气阻力与汽车理论的空气阻力公式不一致,这一点需要注意 下面这会模块基本上用不到,涉及到一个声音和汽车的外观 下面这个模块主要涉及到发动机功率,传动比还有 tao,档位的传动比,发

weixin_43796045的博客 2550

[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行

本学期的OpenGL大作业做了一个3D二维码生成器: 可以动态更新纹理: 在数据的准备阶段,需要提取二维码关键点的信息,写了一个python脚本用来生成对应的二维数组: import qrcode import numpy as np data = "http://idiospace.com" qr = qrcode.QRCode( version=1, #version二维码的格子矩阵大小,可以是1到40 error_correction=qrcode.cons.

... 3472

RK3588平台开发系列讲解(硬件篇-功能外设2)

RK3588 芯片内置两个USB3.0 OTG控制器(内嵌2个USB2.0 OTG,下图绿色处),1个USB3.0 HOST 控制器,2个USB2.0 HOST控制器。这些控制器与PHY的内部复用图如下:USB3.0 OTG0 控制器支持SS/HS/FS/LS, 内嵌的USB2.0(HS/FS/LS)信号采用USB2.0 OTG PHY, 信号名见下图的红色方框内;RK3588目前仅此接口支持做Fireware的Download,应用中请务必要预留出。

whm128的博客 2508
上一篇: 特殊效果的滤波算子变成黑白纯色图?
下一篇: opengl画八卦图
fqq3
博客等级 码龄4年 114粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值