<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gdevelopment的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Gdevelopment</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Gdevelopment]]></copyright><item><title><![CDATA[欧拉角(定义解释，使用，优缺点)]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/134708994</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/134708994</guid><author>Gdevelopment</author><pubDate>Thu, 30 Nov 2023 11:57:28 +0800</pubDate><description><![CDATA[例如,滚转角的物理轴总是纵向的体空间轴,但是通常它是在直立空间中任意取向的。但事实证明,固定轴系统和欧拉角系统实际上是等效的,只要以相反的顺序进行旋转。根据欧拉角的约定，首先进行航向轴的旋转并绕垂直轴(y轴)旋转h,然后围绕对象空间的横向轴(x轴)旋转角度p。这种描述旋转的方案是由**指数映射(Exponential Map)**的相当令人生畏和模糊的名称进行的。①旋转角度可以从e的长度推导出来。虽然在计算里,当我们正在将矢量从直立空间旋转到对象空间时,可以可视化欧拉角,但实际上使用的是固定轴系统。]]></description><category></category></item><item><title><![CDATA[向量运算之点乘叉乘]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/134708702</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/134708702</guid><author>Gdevelopment</author><pubDate>Thu, 30 Nov 2023 11:45:47 +0800</pubDate><description><![CDATA[向量运算，简单了解叉乘和点乘]]></description><category></category></item><item><title><![CDATA[cocos creator使用protobufjs的两种方式]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/134239418</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/134239418</guid><author>Gdevelopment</author><pubDate>Mon, 06 Nov 2023 16:18:00 +0800</pubDate><description><![CDATA[cocos creator使用proto后端数据结构的两种方式方法，用于快速开发接口，简单易用，方便前后端统一数据结构]]></description><category></category></item><item><title><![CDATA[node创建本地服务器]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/126850475</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/126850475</guid><author>Gdevelopment</author><pubDate>Wed, 14 Sep 2022 12:53:17 +0800</pubDate><description><![CDATA[nodejs创建本地服务器]]></description><category></category></item><item><title><![CDATA[opengl 环境搭建]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/122642973</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/122642973</guid><author>Gdevelopment</author><pubDate>Sat, 22 Jan 2022 22:06:01 +0800</pubDate><description><![CDATA[opengl 环境搭建
首先尽量使用Visual Studio 如果使用vscode来集成opengl的环境非常的麻烦对于小白来说就是个大坑，可以等到有一定的基础的时候再来做这件事，等以后会了我再来补！
首先就是需要下载两个库分别是glad 和 glfw
地址：库文件
glfw
glad
CMake是一个工程文件生成工具cmake
使用CMake的时候如果配置选择错误可以在填输出的位置填一个不存在的文件，这样就会询问你是否创建文件并可以重新开始设置编译的环境

推荐的方式是建立一个新的目录包含所有的第三方库]]></description><category></category></item><item><title><![CDATA[GAMES101课程环境搭建(Win10+VSCode)]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/121297621</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/121297621</guid><author>Gdevelopment</author><pubDate>Fri, 12 Nov 2021 22:44:35 +0800</pubDate><description><![CDATA[GAMES101课程环境搭建(Win10+VSCode)
抄自：知乎
发现很多人遇到Mingw环境的问题，这里共享一个可用的mingw，自行解压，然后把bin目录加入环境变量即可。
链接: https://pan.baidu.com/s/1zsiUnzbuzglhgxvjFiqaAQ 提取码: 6xfu 复制这段内容后打开百度网盘手机App，操作更方便哦
以下是原文：
最近B站上看到一个不错的图形学教程，复习下图形学知识挺好的。
教程地址：GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩 (゜-゜)]]></description><category></category></item><item><title><![CDATA[Laya发布资源没更新fileconfig]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/118210965</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/118210965</guid><author>Gdevelopment</author><pubDate>Fri, 25 Jun 2021 10:03:12 +0800</pubDate><description><![CDATA[使用ctrl + f12 后fileconfig文件没有更新，或者图集里面没有对应的图片资源
可以进入laya的开发者模式  laya图标按钮 -----------&gt; 帮助 -----------------&gt; 开发人员工具
可以看到对应的log，根据log查看对应的报错位置，能够直接定位到最好，不能的话可以
直接跳转到报错的js 然后再js中对应的位置添加对应的日志输出，再重新发布资源测试下
log打印  一般都是atlas文件出问题了

...]]></description><category></category></item><item><title><![CDATA[二叉树-性质]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/117527862</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/117527862</guid><author>Gdevelopment</author><pubDate>Thu, 03 Jun 2021 17:10:25 +0800</pubDate><description><![CDATA[二叉树
二叉树性质
1）在二叉树的第i层上最多有2i-1 个节点 。（i&gt;=1）
2）二叉树中如果深度为k,那么最多有2k-1个节点。(k&gt;=1）
3）n0=n2+1 n0表示度数为0的节点数，n2表示度数为2的节点数。
4）在完全二叉树中，具有n个节点的完全二叉树的深度为[log2n]+1，其中[log2n]是向下取整。
5）若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号，则对完全二叉树中任意一个编号为 i 的结点有如下特性：
(1) 若 i=1，则该结点是二叉树的根]]></description><category></category></item><item><title><![CDATA[脏标记-游戏开发]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/117455092</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/117455092</guid><author>Gdevelopment</author><pubDate>Tue, 01 Jun 2021 22:17:30 +0800</pubDate><description><![CDATA[原始地址，怕有改动摘抄过来
游戏编程模式-脏标记模式
“将工作推迟到必要时进行以避免不必要的工作。“
动机
许多游戏都有一个场景图的东西。这是一个庞大的数据结构，包含了游戏世界中所有的物体。渲染引擎使用它来决定物体绘制到屏幕上的什么地方。通常来说，游戏中的物体都含有一个形状或者说模型，和一个”变换“。这个变换是一个包含物体位置、旋转角度和物体大小的一个数据结构，我们如果想该变物体的位置或大小，通过改变这个变换就可以了。
而通常在游戏中，场景图是分层的，也就是说场景中的物体会绑定在一个父物体上。在这种情况下，]]></description><category></category></item><item><title><![CDATA[像素点 --------思路]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/117035742</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/117035742</guid><author>Gdevelopment</author><pubDate>Wed, 19 May 2021 16:54:20 +0800</pubDate><description><![CDATA[需求： 产品经理：你能不能用div给我画条龙
链接 掘金出处 记录下怕删除  哈哈
将图片绘制到canvas中
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var image = new Image();
image.src = "dragon.jpg";
image.onload = function(){
        canvas.width = image.width;
  ]]></description><category></category></item><item><title><![CDATA[深度优先算法]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/116948296</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/116948296</guid><author>Gdevelopment</author><pubDate>Mon, 17 May 2021 20:56:14 +0800</pubDate><description><![CDATA[深度优先算法
深度优先百度百科
深度优先遍历图的方法是，从图中某顶点v出发：
（1）访问顶点v；
（2）依次从v的未被访问的邻接点出发，对图进行深度优先遍历；直至图中和v有路径相通的顶点都被访问；
（3）若此时图中尚有顶点未被访问，则从一个未被访问的顶点出发，重新进行深度优先遍历，直到图中所有顶点均被访问过为止。
有点不太好理解
就如图所示 整个节点构成的图 是一个二维数组，当进行深度优先的时候先以黑色箭头为指向的下标节点开始搜索，先搜索 arr[0][index] 开始找到存在通路的第一个节点且该节点没有]]></description><category></category></item><item><title><![CDATA[数据结构- 图]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/116720900</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/116720900</guid><author>Gdevelopment</author><pubDate>Wed, 12 May 2021 20:38:10 +0800</pubDate><description><![CDATA[图 ：包含了多组 从一个顶点到另一个顶点的连接数据
图就需要记录对应的顶点数据，即顶点在实际应用的的数据
图就需要记录每个顶点互相之间的连通数据
图就需要记录总共可以走通的路的条数
code
namespace DataStructure {

    export class MapGrap{

        private edges: number[][]; // 边对应的数据
        private vertexs : string[]; // 顶点数据
        private n]]></description><category></category></item><item><title><![CDATA[八大排序算法（上 包含：冒泡，选择，插入，希尔，希尔插入）]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112682952</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112682952</guid><author>Gdevelopment</author><pubDate>Fri, 15 Jan 2021 18:09:37 +0800</pubDate><description><![CDATA[(() =&gt; {

    // 冒泡排序
    let arr = [];

    /**
     * 从数组的第0个索引开始依次从左到右比较数组中的最小值，如果右边的值比左边小，那么交换值，这样右边的值一直都是最大的值
     * 从而将最大的值冒泡到数组的最后一个索引的位置
     * 然后从第1...n个索引循环 使用依次从左到右比较数组中的最小值，如果右边的值比左边小，那么交换值 冒泡到第n-1...0个索引
     * @param {*} size 
     */
    ]]></description><category></category></item><item><title><![CDATA[八皇后问题]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112654272</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112654272</guid><author>Gdevelopment</author><pubDate>Fri, 15 Jan 2021 11:31:42 +0800</pubDate><description><![CDATA[(() =&gt; { // 8皇后的计算逻辑

    // 之前想的是将棋盘用一个二维数组装入
    // 然后又一个缓存了路径的数组 记录走过的路径
    // 每个格子进行对比
    // 没想过什么情况下一遍将棋盘走完，没想过for循环完成每一列的递归回溯 单行每列的判定
    // 没想过用一个一维数组来记录走过的路径

    var result = [];
    var max = 8;
    var count = 0;
    function queueMain() {
]]></description><category></category></item><item><title><![CDATA[后缀表达式计算规则【逆波兰计算器】]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112606752</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112606752</guid><author>Gdevelopment</author><pubDate>Thu, 14 Jan 2021 14:26:34 +0800</pubDate><description><![CDATA[后缀表达式计算规则

从左到右扫描，将数字压入堆栈；
遇到运算符，依次弹出数字栈中的栈顶元素和次栈顶元素，计算出来的值，再次入栈；
依次循环扫描后缀表达式重复1,2规则，栈中唯一的数字就是后缀表达式的计算结果；

这里主要注意下第二条，计算时  栈顶元素和次栈顶元素 在符号运算时的先后顺序
将
次栈顶元素放在 运算符号的 左边
栈顶元素放在运算符号的右边  计算，才能得到正确的结果
例如： 3 4 + 5 * 6 -
首先将这个字符串解析为一个数组 并且区分 数字的多位数
然后创建一个栈，将数字依次入栈，遇]]></description><category></category></item><item><title><![CDATA[中缀表达式转后缀表达式【转换步骤】]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112605197</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112605197</guid><author>Gdevelopment</author><pubDate>Thu, 14 Jan 2021 14:11:12 +0800</pubDate><description><![CDATA[中缀表达式转后缀表达式思路步骤分析
一、初始化两个栈： 运算符栈symbolStack 和 存储中间结果的栈 resultStack;
二、从左到右扫描中缀表达式；
三、遇到操作数时，将其压入到 resultStack中；
四、遇到运算符时，比较期与symbolStack栈顶运算符的优先级；
1）. 如果symbolStack为空，或栈顶运算符为左括号"("，则直接将此运算符压入symbolStack栈中；
2）. 否则，若优先级比栈顶运算符高，也将运算符压入symbolStack栈中；
3）. 否则，（运]]></description><category></category></item><item><title><![CDATA[环形链表]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112462852</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112462852</guid><author>Gdevelopment</author><pubDate>Mon, 11 Jan 2021 10:41:15 +0800</pubDate><description><![CDATA[定义：环形链表是将 单向链表的首尾相连，可以通过头节点往下再次寻找到头节点。
链表主要作用就是方便删除和增加节点使用的，在查找方面有一定的缺陷。
环形链表主要用于解决约瑟夫问题
约瑟夫问题:
设编号为 1,2,3，…n的n个人围坐一圈，约定编号为k（1&lt;=k&lt;=n）的人从1开始报数，数到m的那个人出列，它的下一位又从1开始报数，数到m的那个人又出列，依次类推，直到所有人出列为止，由此产生一个出列编号的序列。
当然这个问题用数组也能够实现，这里仅考虑使用环形链表，打开算法思路和了解环形链表
exp]]></description><category></category></item><item><title><![CDATA[环形队列]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112323913</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112323913</guid><author>Gdevelopment</author><pubDate>Thu, 07 Jan 2021 18:04:03 +0800</pubDate><description><![CDATA[环形队列
作用
可以将数组重复利用，只要队列中的元素少于 最大长度 -1  ， 那么就可以一直往队列中存放数据，对于一个固定的容量，实现先进先出，并且会频繁的存入和取出，就可以节省很大的性能消耗

队列中  需要
队列起始的位置
队列结束的位置
队列容量限制
队列是否为空
队列是否填充满了
队列的长度结算
往队列添加元素
从队列取出元素

首先我们用的队列会将数组的最后一个元素空出来，不存放任何元素，方便计算
根据图解 得出一个通用的计算容量的公式：通过移动开始索引和结束索引 完成数组的复用
export ]]></description><category></category></item><item><title><![CDATA[数据结构]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112287279</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112287279</guid><author>Gdevelopment</author><pubDate>Wed, 06 Jan 2021 18:02:11 +0800</pubDate><description><![CDATA[稀疏数组
作用: 原始数组其中大部分数据是同一个数值的时候，且数组长度较长， 通过稀疏数据可以降低内存消耗，特别是作为数据存储的时候。  下面的例子是一个二维数组，普通一维数组也是同理。
通用格式
第1行   保存原始数组的行列   和 存在数据的元素个数
var sparseArr = [];
var row = 11,col = 11,count = 2;
sparseArr[0] = [row, col, count];


之后的每行保存对应原始数据的行列 和 元素值
sparsArr[1] = []]></description><category></category></item><item><title><![CDATA[js数组底层实现]]></title><link>https://blog.youkuaiyun.com/Gdevelopment/article/details/112276244</link><guid>https://blog.youkuaiyun.com/Gdevelopment/article/details/112276244</guid><author>Gdevelopment</author><pubDate>Wed, 06 Jan 2021 15:56:42 +0800</pubDate><description><![CDATA[js数组底层实现
传统意义的数组
传统意义上的数组是插入和删除是很耗费性能的，数组的长度是固定的超出数组初始的长度的时候就会抛出异常，但是查询操作非常的优秀，要增加一个超过数组长度的元素时，需要自行将数组扩容，再增加该元素。同一个数组中 所有元素的类型必须是一样的。
快数组

定义：快数组是基于下标就能够快速访问的数据结构即 传统意义上的数组

慢数组

定义：慢数组的实现是基于HasTable实现的 散列表，能够方便的增加，删除，修改，且能够存放不同类型的元素，由于慢数组使用的是不连续的内存，就没有了内存]]></description><category></category></item></channel></rss>