爱心方程(理科生的浪漫?)

news2024/11/9 9:48:30

目录

前言

C/C++

 源代码

扩展

Java

 Python

HTML


前言

这个在大一的时候就想找了,然后后面是找到了一个,但是忘记出处了。我决定把可以找到的所有爱心给整理一下,为了实现“理科生的浪漫”!!!

C/C++

首先就是可以调节他输出字体的颜色,默认当然是输出白色的,通过写一个函数来封装实现。如果参数越界了就默认输出白色了。这个我是当成固定写法的,要我记的话我也记不住。

#include<windows.h>
void color(int x){
	if(x>=0&&x<=15)
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
	else
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
}

 相关颜色参考如下:

color(0);printf("0     黑色\n");
color(1);printf("1     蓝色\n");
color(2);printf("2     绿色\n");
color(3);printf("3     湖蓝色\n");
color(4);printf("4     红色\n");
color(5);printf("5     紫色\n");
color(6);printf("6     黄色\n");
color(7);printf("7     白色\n");
color(8);printf("8     灰色\n");
color(9);printf("9     淡蓝色\n");
color(10);printf("10    淡绿色\n");
color(11);printf("11    淡浅绿色\n");
color(12);printf("12    淡红色\n");
color(13);printf("13    淡紫色\n");
color(14);printf("14    淡黄色\n");
color(15);printf("15    亮白色\n");

还要如何变帅一点,他输出的本质还是双重循环+换行输出,和输出三角形、菱形原理差不多。

现在主要就是这个爱心方程的公式,然后我是从网上找的一个,输出方面就是符合要求就输出目标字符(我这里是用星号*来表示),不符合方程的要求就输出空格就行了。

这个输出也有讲究,要直接全部打印出来吗,这显然不帅好吧,当然是逐个打印帅一点,这个的思路就是不让他全部一下子就打印出来了,要实现动态的效果,这就可以用到Sleep函数了。顾名思义就是睡眠的意思,以毫秒为单位,当你Sleep(1000)时就是一秒打印一个,这个速度按大家自己的想法。

这个爱心就大致出来了,然后还可以如何修改呢,我这里是根据我个人的喜好在里面输出一些语句,网抑云啊,什么的,怎么抑郁怎么来。

 源代码

#include<stdio.h>
#include<windows.h>
void color(int x){
	if(x>=0&&x<=15)
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
	else
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
}
void main(){
	printf("“愿我喜欢的人也在喜欢我!”");
	color(1);              //控制输出字体的颜色
	double x,y,a;
	for(y=1.5;y>-1.5;y-=0.1214){   //设置参数
		for(x=-1.5;x<1.5;x+=0.05){
			a=x*x+y*y-1;           //爱心方程
			if(a*a*a-x*x*y*y*y<=0){
				printf("*");//爱心构成的符号
				Sleep(1);
			}
			else
				printf(" ");
		}
		printf("\n");
	}
}

 这个也可以搞的花哨一点,弄一个五颜六色的,不同符号的输出。我这里颜色采用的组个递增的形式,当然也可以采用随机数啦,然后输出的非空白字符是采用随机数的形式,这里要排除不可以输出的字符,所有范围就缩小了,具体ASCII对应如下所示。

ASCII码一览表,ASCII码对照表 (biancheng.net)icon-default.png?t=N5K3http://c.biancheng.net/c/ascii/

扩展

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>

void color(int x){
	if(x>=0&&x<=15)
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
	else
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
}
void main(){
	srand((unsigned)time(NULL));//随机种子
	int countColor=0;  
	double x,y,a;
	for(y=1.5;y>-1.5;y-=0.1214){   //设置参数
		for(x=-1.5;x<1.5;x+=0.05){
			a=x*x+y*y-1;           //爱心方程
			if(a*a*a-x*x*y*y*y<=0){
				countColor++;		//记录当前输出的颜色
				countColor%=16;		//颜色范围取[0,15]
				color(countColor);	//控制输出字体的颜色
				int countChars=33+rand()%94;//排除无法输出的字符[33,126]
				putchar(countChars);	//爱心的构成符号
				Sleep(1);
			}
			else
				printf(" ");
		}
		printf("\n");
	}
}

 既然是知道他爱心方程的公式了,用其他语言来写就比较简单理解了。
(C++)万能头文件#include<bits/stdc++.h>_c语言万能头文件_Think@的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/qq_40728667/article/details/126825702

C/C++ 改变控制台输文字颜色:SetConsoleTextAttribute()_c++ setconsoletextattribute_杨 戬的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/weixin_45525272/article/details/121315941c++和c的差不多,直接修改就行了,这个貌似也没用到区别的地方。好像也没有什么区别吧。

这里的话没有cwindows还是要写成windows.h。网上找是没有找到。

 

[Error] cwindows: No such file or directory
//#include <bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<windows.h>
using namespace std;

void color(int x){
	if(x>=0&&x<=15)
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
	else
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
}
int main(){
	srand((unsigned)time(NULL));//随机种子
	int countColor=0;  
	double x,y,a;
	for(y=1.5;y>-1.5;y-=0.1214){   //设置参数
		for(x=-1.5;x<1.5;x+=0.05){
			a=x*x+y*y-1;           //爱心方程
			if(a*a*a-x*x*y*y*y<=0){
				countColor++;		//记录当前输出的颜色
				countColor%=16;		//颜色范围取[0,15]
				color(countColor);	//控制输出字体的颜色
				int countChars=33+rand()%94;//排除无法输出的字符[33,126]
				putchar(countChars);	//爱心的构成符号
				Sleep(1);
			}
			else
				cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}

Java

调了一下循环的界限,变长了一点,这个输出我的是卡顿的输出,没有那个连续的感觉,这个的话如果要那种感觉可以延长一下休眠的时间。输出是用的System.out.print,System.out.println输出会默认换行的。

java中的睡眠操作(sleep)_java 睡眠_豫章君的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/weixin_43929852/article/details/109264525

  • \033 是 ANSI 转义序列的起始字符,用于告诉终端后面跟着的是 ANSI 控制码。
  • [30m 是设置字体颜色的 ANSI 控制码,其中 30 代表字体颜色,后面的 m 表示设置结束。在 ANSI 控制码中,30 - 37 分别表示黑、红、绿、黄、蓝、品红、青、白这 8 种常用的字体颜色,而 m 则表示控制码的结束。
  • + "颜色" 即为需要输出的文本内容。
public class Color {
    public static void main(String[] args) {
        System.out.print("\033[30m"+"黑");
        System.out.print("\033[31m"+"红");
        System.out.print("\033[32m"+"绿");
        System.out.print("\033[33m"+"黄");
        System.out.print("\033[34m"+"蓝");
        System.out.print("\033[35m"+"品红");
        System.out.print("\033[36m"+"青");
        System.out.print("\033[37m"+"白");
    }
}

 

 这个颜色我感觉还是怪怪的,我这里选择的是青色。

public class EquationOfLove {
    public static void main(String[] args) throws InterruptedException {
        double x, y, a;
        for (y = 1.5; y > -1.5; y -= 0.1314) {
            for (x = -1.5; x < 1.5; x += 0.05) {
                a = x * x + y * y - 1;           //爱心方程
                if (a * a * a - x * x * y * y * y <= 0) {
                    System.out.print("\033[36m"+"*");//输出字符
                    Thread.sleep(50);//睡眠
                } else {
                    System.out.print(" ");//输出空格
                }
            }
            //换行
            System.out.println();
        }
    }
}

 Python

本来想用for循环加range的,但是里面的参数只能为整数。然后就是他的print是自带换行效果的。

Python for循环_老程序员的最大爱好的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/weixin_49892805/article/details/128189241python的print输出如何不换行_python print 不换行__房似锦_的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/xiatutut/article/details/125934871

TypeError: 'float' object cannot be interpreted as an integer

本来也想用C和Java的方法来写,发现怎么都输出不了,放弃了-_-,就只能用之前的turtle来写了,网上找了一个,然后自己修改了一下。自己写当然要挑一个粉色的啦!!!


from turtle import *
#笔尖的宽度
pensize(3)
#画笔颜色
color('pink')
#将海龟笔尖提起
penup()
#开始坐标
goto(0,-100)
#将海龟笔尖落下
pendown()
#逆时针150度,默认向右水平
setheading(150)
#爱心填充颜色
fillcolor('pink')
#开始填充
begin_fill()
#向前移动
fd(50)
#左半爱心
circle(50*-3.745,45)
circle(50*-1.431,165)
#向左旋转120
left(120)
#右半爱心
circle(50*-1.431,165)
circle(50*-3.745,45)
fd(50)
#结束填充
end_fill()
# 隐藏turtle图形(箭头)
hideturtle()
#暂停程序,停止画笔绘制,但绘图窗体不关闭,直到用户关闭pythonTurtle图形化窗口为止
done()

 这边就有更加炫酷的了。

爱心代码李峋同款爱心 python html_py画爱心代码tkinter_CL_Young的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/CL_Young/article/details/127808312?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168338430116800188524024%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168338430116800188524024&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-127808312-null-null.142%5Ev86%5Einsert_down38v5,239%5Ev2%5Einsert_chatgpt&utm_term=%E7%88%B1%E5%BF%83%E4%BB%A3%E7%A0%81%E5%A4%A7%E5%85%A8html&spm=1018.2226.3001.4187

HTML

这个还是前面那个博主的爱心,我直接抄袭下来了。

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>爱心方程</title>
 
    <style>
      html,
      body {
        height: 100%;
        padding: 0;
        margin: 0;
        background: #000;
      }
      canvas {
        position: absolute;
        width: 100%;
        height: 100%;
        animation: anim 1.5s ease-in-out infinite;
        -webkit-animation: anim 1.5s ease-in-out infinite;
        -o-animation: anim 1.5s ease-in-out infinite;
        -moz-animation: anim 1.5s ease-in-out infinite;
      }
      #name {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        margin-top: -20px;
        font-size: 46px;
        color: #ea80b0;
      }
      @keyframes anim {
        0% {
          transform: scale(0.8);
        }
        25% {
          transform: scale(0.7);
        }
        50% {
          transform: scale(1);
        }
        75% {
          transform: scale(0.7);
        }
        100% {
          transform: scale(0.8);
        }
      }
      @-webkit-keyframes anim {
        0% {
          -webkit-transform: scale(0.8);
        }
        25% {
          -webkit-transform: scale(0.7);
        }
        50% {
          -webkit-transform: scale(1);
        }
        75% {
          -webkit-transform: scale(0.7);
        }
        100% {
          -webkit-transform: scale(0.8);
        }
      }
      @-o-keyframes anim {
        0% {
          -o-transform: scale(0.8);
        }
        25% {
          -o-transform: scale(0.7);
        }
        50% {
          -o-transform: scale(1);
        }
        75% {
          -o-transform: scale(0.7);
        }
        100% {
          -o-transform: scale(0.8);
        }
      }
      @-moz-keyframes anim {
        0% {
          -moz-transform: scale(0.8);
        }
        25% {
          -moz-transform: scale(0.7);
        }
        50% {
          -moz-transform: scale(1);
        }
        75% {
          -moz-transform: scale(0.7);
        }
        100% {
          -moz-transform: scale(0.8);
        }
      }
    </style>
  </head>
  <body>
    <canvas id="pinkboard"></canvas>
    <!-- 在下面加名字 -->
     <div id="name" style="color: pink;">平安喜乐</div> 
 
    <script>
      var settings = {
        particles: {
          length: 500, 
          duration: 2, 
          velocity: 100, 
          effect: -0.75,
          size: 30, 
        },
      };
      (function () {
        var b = 0;
        var c = ["ms", "moz", "webkit", "o"];
        for (var a = 0; a < c.length && !window.requestAnimationFrame; ++a) {
          window.requestAnimationFrame = window[c[a] + "RequestAnimationFrame"];
          window.cancelAnimationFrame =
            window[c[a] + "CancelAnimationFrame"] ||
            window[c[a] + "CancelRequestAnimationFrame"];
        }
        if (!window.requestAnimationFrame) {
          window.requestAnimationFrame = function (h, e) {
            var d = new Date().getTime();
            var f = Math.max(0, 16 - (d - b));
            var g = window.setTimeout(function () {
              h(d + f);
            }, f);
            b = d + f;
            return g;
          };
        }
        if (!window.cancelAnimationFrame) {
          window.cancelAnimationFrame = function (d) {
            clearTimeout(d);
          };
        }
      })();
      var Point = (function () {
        function Point(x, y) {
          this.x = typeof x !== "undefined" ? x : 0;
          this.y = typeof y !== "undefined" ? y : 0;
        }
        Point.prototype.clone = function () {
          return new Point(this.x, this.y);
        };
        Point.prototype.length = function (length) {
          if (typeof length == "undefined")
            return Math.sqrt(this.x * this.x + this.y * this.y);
          this.normalize();
          this.x *= length;
          this.y *= length;
          return this;
        };
        Point.prototype.normalize = function () {
          var length = this.length();
          this.x /= length;
          this.y /= length;
          return this;
        };
        return Point;
      })();
      var Particle = (function () {
        function Particle() {
          this.position = new Point();
          this.velocity = new Point();
          this.acceleration = new Point();
          this.age = 0;
        }
        Particle.prototype.initialize = function (x, y, dx, dy) {
          this.position.x = x;
          this.position.y = y;
          this.velocity.x = dx;
          this.velocity.y = dy;
          this.acceleration.x = dx * settings.particles.effect;
          this.acceleration.y = dy * settings.particles.effect;
          this.age = 0;
        };
        Particle.prototype.update = function (deltaTime) {
          this.position.x += this.velocity.x * deltaTime;
          this.position.y += this.velocity.y * deltaTime;
          this.velocity.x += this.acceleration.x * deltaTime;
          this.velocity.y += this.acceleration.y * deltaTime;
          this.age += deltaTime;
        };
        Particle.prototype.draw = function (context, image) {
          function ease(t) {
            return --t * t * t + 1;
          }
          var size = image.width * ease(this.age / settings.particles.duration);
          context.globalAlpha = 1 - this.age / settings.particles.duration;
          context.drawImage(
            image,
            this.position.x - size / 2,
            this.position.y - size / 2,
            size,
            size
          );
        };
        return Particle;
      })();
      var ParticlePool = (function () {
        var particles,
          firstActive = 0,
          firstFree = 0,
          duration = settings.particles.duration;
 
        function ParticlePool(length) {
          particles = new Array(length);
          for (var i = 0; i < particles.length; i++)
            particles[i] = new Particle();
        }
        ParticlePool.prototype.add = function (x, y, dx, dy) {
          particles[firstFree].initialize(x, y, dx, dy);
          firstFree++;
          if (firstFree == particles.length) firstFree = 0;
          if (firstActive == firstFree) firstActive++;
          if (firstActive == particles.length) firstActive = 0;
        };
        ParticlePool.prototype.update = function (deltaTime) {
          var i;
          if (firstActive < firstFree) {
            for (i = firstActive; i < firstFree; i++)
              particles[i].update(deltaTime);
          }
          if (firstFree < firstActive) {
            for (i = firstActive; i < particles.length; i++)
              particles[i].update(deltaTime);
            for (i = 0; i < firstFree; i++) particles[i].update(deltaTime);
          }
          while (
            particles[firstActive].age >= duration &&
            firstActive != firstFree
          ) {
            firstActive++;
            if (firstActive == particles.length) firstActive = 0;
          }
        };
        ParticlePool.prototype.draw = function (context, image) {
          if (firstActive < firstFree) {
            for (i = firstActive; i < firstFree; i++)
              particles[i].draw(context, image);
          }
          if (firstFree < firstActive) {
            for (i = firstActive; i < particles.length; i++)
              particles[i].draw(context, image);
            for (i = 0; i < firstFree; i++) particles[i].draw(context, image);
          }
        };
        return ParticlePool;
      })();
      (function (canvas) {
        var context = canvas.getContext("2d"),
          particles = new ParticlePool(settings.particles.length),
          particleRate =
            settings.particles.length / settings.particles.duration, 
          time;
        function pointOnHeart(t) {
          return new Point(
            160 * Math.pow(Math.sin(t), 3),
            130 * Math.cos(t) -
              50 * Math.cos(2 * t) -
              20 * Math.cos(3 * t) -
              10 * Math.cos(4 * t) +
              25
          );
        }
        var image = (function () {
          var canvas = document.createElement("canvas"),
            context = canvas.getContext("2d");
          canvas.width = settings.particles.size;
          canvas.height = settings.particles.size;
          function to(t) {
            var point = pointOnHeart(t);
            point.x =
              settings.particles.size / 2 +
              (point.x * settings.particles.size) / 350;
            point.y =
              settings.particles.size / 2 -
              (point.y * settings.particles.size) / 350;
            return point;
          }
          context.beginPath();
          var t = -Math.PI;
          var point = to(t);
          context.moveTo(point.x, point.y);
          while (t < Math.PI) {
            t += 0.01;
            point = to(t);
            context.lineTo(point.x, point.y);
          }
          context.closePath();
          context.fillStyle = "#ea80b0";
          context.fill();
          var image = new Image();
          image.src = canvas.toDataURL();
          return image;
        })();
        function render() {
          requestAnimationFrame(render);
          var newTime = new Date().getTime() / 1000,
            deltaTime = newTime - (time || newTime);
          time = newTime;
          context.clearRect(0, 0, canvas.width, canvas.height);
          var amount = particleRate * deltaTime;
          for (var i = 0; i < amount; i++) {
            var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());
            var dir = pos.clone().length(settings.particles.velocity);
            particles.add(
              canvas.width / 2 + pos.x,
              canvas.height / 2 - pos.y,
              dir.x,
              -dir.y
            );
          }
          particles.update(deltaTime);
          particles.draw(context, image);
        }
        function onResize() {
          canvas.width = canvas.clientWidth;
          canvas.height = canvas.clientHeight;
        }
        window.onresize = onResize;
        setTimeout(function () {
          onResize();
          render();
        }, 10);
      })(document.getElementById("pinkboard"));
 
    </script>
  </body>
</html>

 那整理就到此为止了,喜欢的小伙伴可以点赞多多支持一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你认为年轻人存款难吗?难啊难,难如上青天!!!

近日&#xff0c;有调查称“大概五分之一的年轻人存款在一万元以内。10万元存款是一个“坎”&#xff0c;存款超过10万就会超过53.7%的人。”“年轻人”“存款”两个词碰撞在一起&#xff0c;引来了广泛的关注和讨论。你认为年轻人存款难吗&#xff1f;可以从以下几个角度发表你…

Linux Nacos 设置systemctl service 并添加为开机启动

为方便在启动服务器时&#xff0c;不需要一个一个手动启动服务&#xff0c;需要把nacos设置为开机启动。方法如下&#xff1a; 在/usr/lib/systemd/system 目录下面添加nacos.service脚本&#xff1a; # 下面这一行必须有&#xff0c;不然会报错 #vim /usr/lib/systemd/system…

libevent(3)IO模型基础知识

一、用户态和内核态 我们知道现在的操作系统是分层的&#xff0c;内核封装了与底层的接口&#xff0c;通过系统调用提供给上层应用使用。 当进程运行在内核空间时&#xff0c;它就处于内核态&#xff1b;当进程运行在用户空间时&#xff0c;它就处于用户态。 当我们需要进行IO操…

【小沐学Python】网络爬虫之requests

文章目录 1、简介2、requests方法2.1 get2.2 post 3、requests响应信息4、requests的get方法4.1 url4.2 headers4.3 params4.4 proxies4.5 verify4.6 timeout4.7 cookies4.8 身份验证 3、测试代码3.1 获取网页HTML&#xff08;get&#xff09;3.2 获取网页HTML&#xff08;带he…

【LeetCode热题100】打卡第26天:最大矩形

文章目录 最大矩形⛅前言&#x1f512;题目&#x1f511;题解 最大矩形 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数…

随着ChatGPT、文言一心的大火,未来可能的生活工作方式

前面的文章笼统的扯了一些ChatGPT、文言一心的差异化&#xff0c;感觉还是不够明白直观。特地找了一份资料&#xff0c;通过基础能力、进阶能力、和一些垂直领域的几百个各种问题&#xff0c;来对比分析两者的回答情况&#xff0c;让大家可以有个更接地气的了解。 由于问题太多…

无限脉动:释放音乐和区块链在音乐领域的力量

音乐是一种永恒的通用语言&#xff0c;它将人们聚集在一起&#xff0c;超越了边界&#xff0c;在我们灵魂深处产生共鸣&#xff0c;创造联系。在当今数字时代&#xff0c;随着区块链技术和去中心化网络的出现&#xff0c;音乐世界正在经历一场深刻的变革。 我们在与艺术家合作&…

动态规划 DP (二)

3.二维动态规划 1) 力扣https://leetcode.cn/problems/minimum-path-sum/第一行的的路径只与左边的元素有关&#xff0c;第一列的路径只与上面的元素有关。 除了第一行和第一列&#xff0c;其他元素的路径取决于左边和上面元素的最小值。 只要每次都选择值最小的路径&#…

2021电工杯数学建模B题解题思路(光伏建筑一体化板块指数发展趋势分析及预测)

目录 一、前言 二、问题背景 三、具体问题 四、解题思路 &#xff08;一&#xff09;整体思路 &#xff08;二&#xff09;问题一 &#xff08;三&#xff09;问题二 &#xff08;四&#xff09;问题三 &#xff08;五&#xff09;问题四 &#xff08;六&#xff09;…

2023最新谷粒商城笔记之秒杀服务篇(全文总共13万字,超详细)

秒杀服务 秒杀具有瞬间高并发的特点&#xff0c;针对这一特点&#xff0c;必须要做限流异步缓存(页面静态化)独立部署 限流方式&#xff1a; 前端限流&#xff0c;一些高并发的网站直接在前端页面开始限流&#xff0c;例如&#xff1a;小米的验证码设计Nginx 限流&#xff0c…

ChatGPT从入门到精通,深入认识Prompt

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定让ChatGPT帮你高效实现职场办公&#xff01;行动起来吧1、ChatGPT从入门到精通&#xff0c;一站式掌握办公…

Unity 中的旋转、targetFrameRate、 vSyncCount、Time

1. 旋转&#xff1a; Unity 中的旋转用eulerAngle 表示&#xff0c;但在内部是以quaternion存储。欧拉角旋转围绕三个轴进行三次独立旋转&#xff0c;依次是z、x、y。To convert from Euler angles to quaternions, you can use the Quaternion.Euler function.To convert a q…

Linux 文件操作

文章目录 一、task_struct 和 file 的关系二、文件操作的系统调用三、进程默认打开的三个文件四、文件重定向五、Linux 下一切皆文件 文件是在磁盘上创建出来的&#xff0c;当我们想进行文件操作时&#xff0c;根据冯诺依曼体系结构&#xff0c;CPU 只和内存交互&#xff0c;为…

【裸机开发】Reset 中断服务函数(汇编实现)

目录 一、Reset 中断服务函数的实现步骤 二、汇编实现 Reset 中断服务函数 1、禁止/打开全局中断 2、设置SP指针 3、清除 .bss 段 4、完整 Reset 中断服务函数 一、Reset 中断服务函数的实现步骤 实现 Reset 中断服务函数的基本步骤如下&#xff1a; 设置各个模式下的S…

关联式容器set和map

文章目录 一.容器二.set的介绍1.insert2.lower_bound&&upper_bound3.find和countfindcount 三. multiset四.map最特别的operator[] 四.multimap&#xff0c;因为允许键值冗余&#xff0c;所以它没有operator[]&#xff0c;它的find返回的是中序遍历第一次遇到的节点五.…

ChatGPT办公自动化实战

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 让ChatGPT帮你高效实现职场办公&#xff01;行动起来吧 1、ChatGPT从入门到精通&#xff0c;一站式掌握办…

对象的销毁

析构函数 C 中的类可以定义一个特殊的清理函数 这个特殊的清理函数叫做析构函数析构函数的功能与构造函数相反 定义&#xff1a;~ClassName() 析构函数没有参数也没有返回值类型声明析构函数在对象销毁时自动被调用 析构函数使用初探 #include <stdio.h>class Test …

Threadlocal 必会的9个知识点

1.什么是ThreadLocal&#xff1f;它在多线程环境下有什么用处&#xff1f; ThreadLocal是在多线程环境下提供的一种简单的机制&#xff0c;使得每个线程都能拥有一个独立的变量副本。它避免了线程安全问题&#xff0c;并提高了程序的并发性能。 2.ThreadLocal是如何工作的&am…

规则引擎--规则逻辑形如“1 (2 | 3)“的抽象设计

目录 规则下逻辑表达和条件的抽象表达逻辑的编码和抽象 规则规则下的条件操作符抽象定义规则类规则执行表达式遍历进行操作符计算添加规则下一个具体条件的执行 规则执行完成后得到最后的结果 规则下逻辑表达和条件的抽象 对于任何一个规则&#xff0c;当然包括多个条件&#…

市面上最强PDF:GcPDF 6.1.4 Grapecity -Crack

适用于 .NET 6 的功能丰富的 PDF API 库 完全控制 PDF - 快速生成文档、提高内存效率且无依赖性。 在代码中生成、加载、编辑和保存 PDF 文档 支持多种语言的全文、段落格式和字体 使用新的编辑工具编辑 PDF 中的内容 支持数百种PDF功能 Windows、macOS 和 Linux 完全支持所有…