Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何给vs2022导入图形库“graphics.h“

如何给vs2022导入图形库“graphics.h“

作者头像
用户10271432
发布于 2022-12-19 06:38:18
发布于 2022-12-19 06:38:18
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

目录

问题:

下面是解决办法:

效果图

代码:


先看看我们用图形库做的一个三维旋转球体💡💡💡

三维球体

切记,切记,在做这一些列操作之前一定要把vs2022关掉。

问题:

找不到其中的文件

原因是:graphics.h头文件在我们的头文件中并不存在。需要官网下载。

下面是解决办法:

esayx的官方网址:

EasyX 2022 版 (2022-9-1 更新) - EasyX

找到vs2022需要下载的版本

找到vs2022的下载地址

crtl+j找到你下载的文件

这里的安装直接点击下一步

点击安装

如果你想看EasyX的在线文档,也可以安装这个

安装完成。

效果图

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 程序名称:三维旋转球
// 编译环境:Visual C++ 6.0 ~ 2022,EasyX_20210730
// 代码发布:2010-9-14
// 最后更新:2021-8-20
//

#include <graphics.h>
#include <time.h>
#include <math.h>
#include <conio.h>

#define MAXPOINT	5000
#define	PI			3.1415926536


// 定义三维点
struct POINT3D
{
	double x;
	double y;
	double z;
};

POINT3D p3d[MAXPOINT];		// 所有的三维点
double viewZ = 3;			// 视点 z 轴坐标


// 初始化三维点
void InitPoint()
{
	// 产生随机种子
	srand((unsigned)time(NULL));

	// 产生球体表面的随机点(根据球体面积与其外切圆柱面积的关系)
	double rxy, a;
	for (int i = 0; i < MAXPOINT; i++)
	{
		p3d[i].z = 2.0 * rand() / RAND_MAX - 1;	// 求随机 z 坐标
		rxy = sqrt(1 - p3d[i].z * p3d[i].z);	// 计算三维矢量在 xoy 平面的投影长度
		a = 2 * PI * rand() / RAND_MAX;			// 产生随机角度
		p3d[i].x = cos(a) * rxy;
		p3d[i].y = sin(a) * rxy;
	}
}


// 使三维点按 x 轴旋转指定角度
void RotateX(POINT3D& p, double angle)
{
	double y = p.y;
	p.y = p.y * cos(angle) + p.z * sin(-angle);
	p.z = y * sin(angle) + p.z * cos(angle);
}


// 使三维点按 y 轴旋转指定角度
void RotateY(POINT3D& p, double angle)
{
	double x = p.x;
	p.x = p.x * cos(angle) + p.z * sin(-angle);
	p.z = x * sin(angle) + p.z * cos(angle);
}


// 使三维点按 z 轴旋转指定角度
void RotateZ(POINT3D& p, double angle)
{
	double x = p.x;
	p.x = p.x * cos(angle) + p.y * sin(-angle);
	p.y = x * sin(angle) + p.y * cos(angle);
}


// 将三维点投影到二维屏幕上(单点透视)
POINT Projection(POINT3D p)
{
	POINT p2d;
	p2d.x = (int)(p.x * (viewZ / (viewZ - p.z)) * 200 + 0.5) + 320;
	p2d.y = (int)(p.y * (viewZ / (viewZ - p.z)) * 200 + 0.5) + 240;
	return p2d;
}


// 精确延时函数(可以精确到 1ms,精度 ±1ms)
// by yangw80<yw80@qq.com>, 2011-5-4
void HpSleep(int ms)
{
	static clock_t oldclock = clock();		// 静态变量,记录上一次 tick

	oldclock += ms * CLOCKS_PER_SEC / 1000;	// 更新 tick

	if (clock() > oldclock)					// 如果已经超时,无需延时
		oldclock = clock();
	else
		while (clock() < oldclock)			// 延时
			Sleep(1);						// 释放 CPU 控制权,降低 CPU 占用率
	//			Sleep(0);						// 更高精度、更高 CPU 占用率
}


// 实现直接操作显示缓冲区的设备对象
class Device
{
private:
	DWORD* m_pbuffer;
	int m_width;
	int m_height;

public:
	Device(int w, int h) : m_width(w), m_height(h)
	{
		initgraph(w, h);
		BeginBatchDraw();
		m_pbuffer = GetImageBuffer();
	}

	~Device()
	{
		EndBatchDraw();
		closegraph();
	}

	// 画点
	void putpixel(int x, int y, COLORREF c)
	{
		if (x >= 0 && x < m_width && y >= 0 && y < m_height)
			m_pbuffer[y * m_width + x] = BGR(c);
	}

	// 更新显示
	void flushdevice()
	{
		FlushBatchDraw();
	}
};


// 主函数
int main()
{
	Device d(640, 480);
	InitPoint();

	int c;
	POINT p2d;
	while (!_kbhit())
	{
		cleardevice();			// 清除屏幕

		for (int i = 0; i < MAXPOINT; i++)
		{
			// 使该点围绕三个坐标轴做旋转运动
			RotateX(p3d[i], PI / 800);
			RotateY(p3d[i], PI / 600);
			RotateZ(p3d[i], PI / 400);

			// 根据点的深度,产生相应灰度的颜色
			c = (int)(p3d[i].z * 100) + 155;

			// 投影该点到屏幕上
			p2d = Projection(p3d[i]);

			// 画点
			d.putpixel(p2d.x, p2d.y, RGB(c, c, c));
		}

		d.flushdevice();
		HpSleep(10);			// 延时 10 毫秒
	}

	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python encode和decode函数说明
如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。
极简小课
2022/06/21
2.5K0
python encode和decode函数说明
Python的内置函数(三十六)、 isinstance()
Python decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。
狼啸风云
2020/01/14
4530
python decode encode
为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。
py3study
2020/01/10
2.9K0
encoder和decoder的区别_python encode函数
python内部的字符串一般都是 Unicode编码。代码中字符串的默认编码与代码文件本身的编码是一致的。所以要做一些编码转换通常是要以Unicode作为中间编码进行转换的,即先将其他编码的字符串解码(decode)成 Unicode,再从 Unicode编码(encode)成另一种编码。
全栈程序员站长
2022/11/10
5350
python encode和decode函数说明[通俗易懂]
如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。
全栈程序员站长
2022/09/07
1.5K0
decode和encode函数_python lstrip
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
全栈程序员站长
2022/11/08
6220
python中的encode()和decode()函数
对于很多人来说,python的中字符转码是一件很头疼的事情,本来期望结果输出的是中文,结果来一段像这样\xe4\xbd\xa0\xe5\xa5\xbd像是乱码的字符串。
全栈程序员站长
2022/11/08
1.2K0
python中的encode()和decode()函数
encode和decode的区别_encoder和decoder
从英文意思上看,encode和decode分别指编码和解码。在python中,Unicode类型是作为编码的基础类型,即:
全栈程序员站长
2022/11/08
5910
Python中GBK, UTF-8和Unicode的编码问题
编码问题,一直是使用python2时的一块心病。几乎所有的控制台输入输出、IO操作和HTTP操作都会涉及如下的编码问题:
bear_fish
2018/09/20
4.4K0
python中的encode( )和decode( )函数
我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思。这种数据和二进制的转换规则就是编码。计算机的发展中,有ASCII码,GBK,Unicode,utf-8编码。我们先从编码的发展史了解一下编码的进化过程。
狼啸风云
2019/09/25
2.9K0
python中的encode( )和decode( )函数
字符、字符集、编码,以及它们python中会遇到的一些问题(下)
在看了很多的博客文章之后,总结整理得到了以下文章,非常感谢这些无私奉献的博主! 文章末尾有本文引用的文章的链接,如果有漏掉的文章引用,可以发邮件联系我,随后再次附上链接! 侵删!!! 这一部分是下篇,主要讲的是编码部分,以及在python中会遇到的一些编码问题,偏向于实际应用一点。 上篇介绍了字符、字符集的一些概念,以及他们在python中的一些简单的代码示例,偏向于概念。 上篇地址:http://www.cnblogs.com/echo-coding/p/7435118.html 这绝对是个源
Echo_fy
2018/06/20
2.1K0
你还在为Python中文乱码而感到烦恼?今天老司机给你讲讲!
有没有遇到过这样的问题,读取文件被提示“UnicodeDecodeError”、爬取网页得到一堆乱码,其实这些都是编码惹的祸,如果不能真正理解编码的问题所在,就像开车没有带导航,游泳没有带有度数的眼镜。如果你正在为此而 头疼,不妨来看看这篇文章,里面或许有你要的答案。
QQ1622479435
2018/07/21
1.3K0
python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 为了解决问题,我花时间去研究了一下 Python 的字符编码处理。网上也有不少文章讲 Python 的字符编码,但是我看过一遍,觉得自己可以讲得
用户1214487
2018/05/28
16.4K0
详解Python字符串编码格式
最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII采用1个字节来对字符进行编码,最多只能表示256个符号。 随着信息技术的发展和信息交换的需要,各国的文字都需要进行编码,不同的应用领域和场合对字符串编码的要求也略有不同,于是又分别设计了多种不同的编码格式,常见的主要有UTF-8、UTF-16、UTF-32、GB2312、GBK、CP936、base64、CP437等等。UTF-8编码是国际通用的编码,以1个字节表示英语字
Python小屋屋主
2018/04/16
1.9K0
python字符串内建函数详解
字符串方法是从python1.6到2.0慢慢加进来的——它们也被加到了Jython中。
小小工匠
2021/08/16
5800
python中encode和decode的区别_python lstrip
unicode编码方案: unicode只规定了每个字符所对应的码值(码点),即编码,但并没有规定如何在计算机中实现。同一个字符,可通过utf-8、utf-16、utf-32、gb2312(对中文)等多种方式各自实现。encode()方法就是将unicode编码方式转化为对应的实现方式,而decode()相反,将实现方式转化为编码。
全栈程序员站长
2022/11/09
6150
python中encode和decode的区别_python lstrip
python中encode和decode的区别_python rindex
其中的encoding是指在解码编码过程中使用的编码(此处指“编码方案”是名词),errors是指错误的处理方案。
全栈程序员站长
2022/11/08
4190
python的str,unicode对象的encode和decode方法
python的str,unicode对象的encode和decode方法  python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]。  而python中的unicode对象应该才是等同于java中的String对象,或本质上是java的char[]。  对于 
bear_fish
2018/09/20
2.1K0
Python 编码转换与中文处理
python 中的 unicode是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好,utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.
bear_fish
2018/09/19
3.7K0
python字符串编码及乱码解决方案
http://blog.csdn.net/pipisorry/article/details/44136297
全栈程序员站长
2022/09/06
2.3K0
python字符串编码及乱码解决方案
相关推荐
python encode和decode函数说明
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验