自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (58)
  • 收藏
  • 关注

原创 GAMES101 作业0 环境配置 PC下简单配置i

GAMES101提供了计算机图形学相关教学知识,闫教授及其团队也为大家准备了相应课程作业。课程作业部署在虚拟机上,以便免去环境部署的麻烦。但对于一些同学来说,还是直接在WIN的VS上编码,本文对此进行简单说明。

2022-11-24 21:13:40 672 1

原创 游戏中的各种简单实现方案

-- 角色移动--[[ 一般过程:1)lua层发起寻路;2)c++层利用AStar计算路线,run每帧执行一步]]--------------- lua ----------------function moveToDes(targetx,targety) local result = self.m_char:requestPath(targetx,targety) --...

2022-11-24 15:54:14 187 1

原创 IGraph笔记-使用VS调用igraph静态库

源码下载及编译目前最新版本iGraph0.8.0,下载路径如下:下载好后解压,运行igraph工程,重新编译,编译完成后在Debug下生成igraph.lib;新建一个空的C++项目配置环境,依次是:附加包含目录(include所在路径)、附加库目录(igraph.lib所在路径)、附加依赖项igraph.lib忽略特定默认库,之所以要忽略,是因为静态lib库中已包含这些函数实现,...

2020-02-21 18:54:00 872

原创 QT 基础功能整理

XML操作 QFile file("my.xml");//建立指向my.xml文件的QFile对象. if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) // 只写方式打开,并清空以前的信息 retutn 0; QDomDocument doc; //新建立一个QDomDocument...

2019-12-18 13:59:33 558

原创 Cocos2d-x基础知识相关

cocos2d-x采用的内存管理机制 1)c++中的智能指针(实则就是将动态分配内存与自动变量关联,借助自动变量的自动释放来释放动态分配内存)在管理数据内存方面的优缺点; 2)如何管理引用计数,如对于node,何时retain,何时release; 3)智能指针实现方式; - ...

2018-10-30 21:00:01 293

原创 Cocos2dx CCLabel

本文对CCLabel的实现进行相关介绍:1 一般性绘制流程绘制流程与之前介绍的Render常规性流程保持一致,其入口为visit:void Label::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags){ //... if (_systemFontDir...

2018-06-04 20:36:19 1667

原创 Cocos2dx Render绘制系统

1 绘制系统概览cocos-2dx 3.0之前,元素的绘制逻辑分布在元素内部的draw()方法内,因此紧密地依赖UI树的遍历,这种捆绑式的架构通常难易优化。为什么呢?因为UI树的遍历顺序直接决定了元素的绘制顺序,我们便无法通过优化绘制序列来提升绘制效率。实际上,绘制序列应当与UI树的遍历序列分离。 3.0之后的版本对此进行了重构。新的绘制系统架构完成了以下优化目标:将绘制系统的具体实现...

2018-05-23 16:10:56 1255 1

原创 日常代码重构笔记

这里存放一些平时看代码时觉得需要重构的地方并记录下来(语言可能不止一种),供大家参考|讨论。1. 数据容器一致性操作|函数单一职能功能需求:对多个节点布局时,如果节点排布超出屏幕则将预定节点调整至一个可滑动容器中(scrollUI); 数据容器:1)originalNodeLst : 存放原始节点;2)showedNodeLst :显示出来的第一层节点,视窗节点布局时使用该数据容器,当节点未被移至

2018-03-21 19:14:24 327

原创 游戏引擎架构-学习笔记

5 游戏支持系统5.1 子系统的启动和终止5.1.1 c++的静态初始化次序5.2 内存管理5.2.1 优化动态内存分布5.2.2 内存碎片5.2.3 缓存一致性7 游戏循环及实时模拟7.1 渲染循环7.2 游戏循环7.2.1 游戏循环的架构风格1. 视窗消息泵2. 回调驱动框架3. 基于事件的更新7.3 抽象时间线7.3.1 真实时间线7....

2018-03-12 16:18:31 3684

原创 现代操作系统-学习笔记

1 引论1.1 计算机硬件介绍1.1.1 处理器1.2 操作系统概念1.2.1 进程(简述)2 进程与线程2.1 进程2.2 线程2.3 进程间通行2.3.1 竞争条件2.3.2 临界区2.3.3 忙等待的互斥2.3.4 睡眠与唤醒2.3.5 信号量2.3.6 互斥量2.3.7 管程2.3.8 消息传递2.3.9 屏障1 引论...

2018-03-06 18:56:49 499

原创 lua 自定义控件及动画控制(3) ---- 实现一系列游戏中的消息公告提示

1 消息上漂提示实现方法 创建一个Layer图层并加载至场景中;从消息队列中选择队头消息,加载至Layer并同时移出队列;利用MoveTo方法将Layer向上移动一定长度(此时Layer中所有子节点消息都随之向上移动),之后将Layer所有子节点位置向上移动同等长度并将Layer位置重置成初始位置,之后递归这一动作,直到消息队列为空;当向消息队列中添加消息时需要判断消息处理的递归动作

2018-01-29 10:14:19 533

原创 Lua 基础知识|特性使用集合

1. table.sort下面是两个错误排序函数:local t = { [1] = {id=1,name="1"}, [2] = {id=2,name="2"}, [3] = {id=4,name="3"}, [4] = {id=4,name=&am

2017-11-22 10:56:44 405

原创 cocos2dx - lua 自定义控件及动画控制(2) ---- 基于Action实现循环滚动效果

1. lua层简化版动画系统cocos2dx中的Action系统能实现一般性的动画控制。但是对于一些特殊的动画需求,如何处理?一种方法是在C++层派生新的Action子类,继承原有机制,使用方法与一般Action无异。但很多时候修改或增加C++层代码并不方便,能否直接在lua层定制属于自己的Action?答案是肯定的,但是lua层的实现不能简单继承c++层的Action,因为它无法修改Acti

2017-11-21 10:28:08 962

原创 Cocos2dx 异步加载纹理

异步加载资源过程  异步加载的执行过程主要在addImageAsync函数中: 判定当前路径对应的纹理是否已经加载,如果未加载,为该纹理创建一个AsyncStruct 数据结构存放该纹理数据,并加入至_requestMutex请求队列中。在创建的用于专门解析纹理的新线程LoadImage中,请求队列中的数据将被逐个解析至AsyncStruct .image中并加入已解析队列_responseQueu

2017-10-19 12:13:57 978

原创 lua 算法题集(1)

此处收集一些简单的算法以及其lua的简单实现。(提供的实现代码并非为最优或最佳,也可能遗漏了某些特殊情形,因此仅供参考。若存在问题,可以留言交流)1 数据结构相关1.1 数组1 将一个递增数组前后部分互换,查找数组的最小数local t = {3,4,5,12,45,1.1,1.5,2} -- 一般情形local t = {1,0,1,1,1} -- 特殊情形 只能走顺序查找function

2017-10-17 16:57:20 2263 1

原创 Cocos2dx Action动画机制

1 动画执行过程cocos中的动画通过节点执行,如: node:runAction( cc.Sequence:create(cc.DelayTime:create(1.4),cc.CallFunc:create(removeThis))) runAction方法将动画添加至动画管理器中。动画管理器将节点的动画信息全部关联至element中,并以节点作为key,element作为value生成ha

2017-10-11 17:53:07 1921

原创 Cocos2dx 事件响应机制(2):事件处理机制

1 事件的工作机制 图1 传统事件系统如上图,模块A为事件触发者,模块B为事件响应者。A的实现依赖于模块B的实现,如果B的实现发生变化,A也可能需要作出相应调整。Cocos用订阅者模式将事件的触发者和响应者分开。触发者向一个公共的事件分发器发送一个事件消息,事件响应者向事件分发器订阅一个特定类型的消息来响应事件。以图1为例,B创建一个订阅者(ListenerB)并将此订阅者注册至事件分发器中,其

2017-09-27 18:59:40 1104

原创 lua 自定义控件及动画控制(1) ---- 实现自定义滑动控件

1 lua控件基类_class = {}local UIBase = class("UIBase",cc.Node)function UIBase:ctor() -- 触摸监听事件 local listener = cc.EventListenerTouchOneByOne:create() listener:registerScriptHandle

2017-09-14 18:26:02 1650

原创 LUA 文本编辑相关

1 文本动画播放实现文本打字机动画播放。function TestNode:createLabel() local label = ccui.Text:create() label:setString("this is a test. \n a animation test") label:setFontSize(30) label:ignoreContentAdaptWithSi

2017-08-29 17:32:54 692

转载 Cocos2dx 事件响应机制(1): GLView

CCGLView.cpp:部分代码注释如下,由于作者是在windows下阅读的代码,因此这里的CCGLView的路径为【 cocos2d\cocos\platform\desktop\CCGLView.cpp 】:// GLFWEventHandler/*定义了一个管理G

2017-05-25 17:13:54 1637

原创 lua 协程 | 协程实现消息机制(事件队列轮询处理机制)

Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。游戏中,有时在处理消息时,希望一条一条消息独立处理(独立堆栈),且希望每条消息在不同场景内等待式逐步进行(如一个场景消息处理完,挂起,经过100ms再进行当前消息下一场景的处理),协程能够完成这一过程。下面提供一种实现方案。local ms

2017-05-10 12:06:32 5086

原创 lua 文件路径 字符串处理 数据结构 正则表达式

1 文件路径相关处理-- 生成父目录下自己的文件路径rootpath = ... --文件当前路径dotindex = string.find(rootpath, "%.%w+$") --返回路径中最后一个点号位置parentpath = string.sub(rootpath, 1, dotindex-1) --提取上一级文件目录mypath = string.format(

2017-03-20 15:26:19 1528

原创 Emgu cv中的SIFT算法实现

SIFT算法大家都比较熟悉,网上的版本很多,刚开始接触时我主要研究的是C++,因为相对于C#,基于OPEN CV C++的SIFT算法资料更多,但是由于想要实现较为理想的界面效果,最终还是放弃了使用C++转而使用C#。C#中SIFT算法主要分为三种:1)脱离Emgu cv平台,完全手动实现所有SIFT算法函数,这样的程序虽然实现有些困难,但是完全可借助已有的C++程序做更改,而

2016-07-27 17:23:20 2947

原创 cocos2d-x俄罗斯方块--基于简单工厂的程序重构

1 前言前些天看了一个Cocos2D写的俄罗斯方块代码(下载网址为:http://www.okbase.net/file/item/27944),代码逻辑很清晰。2 讨论俄罗斯方块游戏逻辑很简单(其实细节也很多),主要包含五个部分:下移、左移、右移、形状变换(上移)以及消行。于是,该代码的结构为:这么写存在什么问题?举个例子,如果此时,玩家需要新增或自定义一些方块的样式,并将其

2015-11-26 21:32:39 3362

原创 大话设计模式学习篇--策略模式

1 以做一个商场收银软件为例引入基于单价和商品数量进行收费。程序写死在主函数体内。2 增加打折、满减活动最简单的做法,是直接在主函数体内增加打折、满减的类型判断,并针对不同的类型进行不同的处理。很明显,这种做法很不合理,首先,这意味着:每增加一次新的打折或满减项目,都需在主函数的switch判断分支下增加新的程序,其次,日后商场可能会新增其他类型的活动,这也将使得程序的维护越来越难

2015-11-23 23:24:46 452

原创 大话设计模式学习篇--简单工厂模式

1 以一个计算器例子引入将数据的输入和计算(加减乘除等)都写入主函数体内,代码难以得到复用。2 业务封装将业务逻辑(计算逻辑)与界面输入分隔开,将业务逻辑独立到类当中。3  业务的继承与多态在第二部分,计算逻辑被独立在一个类当中,实现了封装,但这还远远不够。现实情况下,业务逻辑通常会发生变化,如果整体的业务逻辑均放在一个类下,那么业务的修改将面临很多风险。这个时候,可采用继承和

2015-11-22 22:02:38 415

原创 计算机中的有符号数和无符号数

1.概念 在计算机中,可以区分正负类型的数,成为“有符号数”(signed);无正负类型的数(只有整数类型),成为“无符号数”(unsigned)。简明的说,无符号说就是其所有的位数都用来表示数值的大小,有符号数除最高位来表示数值的正负外(0表示正数;1表示负数),其余各位用来表示数值的大小。举个例子说明一下:十机制数 正数255  二进制表达形式:1111 1111十机制数 负数

2015-09-05 11:46:36 3979

转载 字符串匹配的KMP算法

字符串匹配的KMP算法举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。

2015-08-29 21:51:04 433

转载 程序员笔试面试--基础知识

1.    面向对象的程序设计思想是什么?答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.    什么是类?答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。 3.    对象都具有的两方面特征是什么?分别是什么含义?答:对象都具有的特征是:静态特征和动态特征。静态特征是指能描述对象的一些属性(成员变量),动态特征是指对象表现出来的行为

2015-08-22 14:51:16 842

原创 单链表之删除某一位置节点

单链表删除某一位置节点的程序十分容易,但也容易出错。网上流传的一些程序并不正确。这一程序的关键点在于:删除某一位置节点,那么需首先确定其前驱结点。前驱节点存在一些特例情况:当前节点为空、当前非空但后继为空(尾节点)。同时,还要进行断言以及待删节点为首节点的相关处理。完整程序如下:#include "stdafx.h"#include #include typedef struc

2015-08-13 12:39:15 1638

转载 《编程之美》读书笔记(1)--中国象棋将帅问题

中国象棋将帅问题由于比较简单,该问题的具体描述是:(根据中国象棋的基本原则)在只有将帅棋盘上,找出所有双方可以落子的位置(将帅不能碰面),但只能使用一个变量。直觉上我们想到,只要遍历将帅所有可能的位置,去除将帅冲突的位置即可。可见,剩下的问题就在于如何使用一个变量来做二重循环的遍历。书中解法一给出的方法是将一个Byte变量拆成两个用,前一半代表“帅”可以走的位置,后一个变量代表“将”可以走的位置(

2015-07-29 16:58:40 480

原创 程序员笔试面试--数据库知识

1 数据库概念1 数据管理的发展历程:人工管理、文件系统、数据库系统2  SQL语言的功能:1) 数据查询 SELECT; 2) 数据操作 INSERT UPDATA DELETE 3) 数据定义 CREATE(数据表的建立) DROP(数据表的删除) 4) 数据控制 GRANT(为用户授予系统权限) REVOKE (收回系统权限)3  SQL语句使用方法(重点掌握

2015-07-29 11:52:24 663

原创 程序员笔试面试算法题系列--数组

题目来源于《程序员面试笔试宝典》、各大博客以及历年真题,供大家查漏补缺。(持续更新中)1 递归实现数组求和void Sum(int a[],int n,double& sum)每次递归,在sum上累加,同时n自减,当n2 利用一个for循环打印二维与三维数组 double total=row*col;for(int k=0;k<total;k++){ printf("%d

2015-07-27 20:19:22 650

原创 程序员笔试题--C++程序判读精选集

本文笔试题素材来源于历年真题、各大博客以及相关书籍,方便大家集中式学习(持续更新中)。1 运行下面C++代码,输出是什么?class A{}; class B{public: B() {} ~B() {}}; class C{public: C() {} virtual ~C() {}}; in

2015-07-27 11:47:09 871

转载 计算机操作系统---处理机(进程)管理

在传统的多道程序系统中,处理机的分配和运行,都是以进程为基本单位,因而对处理机的管理,可归结为对进程管理,对进程的管理主要有包括:进程控制、进程同步、进程通信、进程调度。一、进程的基本概念1、程序的执行方式     顺序执行的特征为:顺序性、封闭性(程序运行时独占全机资源,其执行结果不受外界影响)、可再现性(只要运行环境和初始条件相同,程序重复执行都获得相同结果);     并

2015-07-25 15:58:03 2967

原创 程序员笔试面试系列-网络与通信知识点

无论面试什么样的程序语言,计算机网络与通信的相关基础知识是必须储备的。本文即从理论的角度对网络与通信重要知识点进行归纳与整理,希望对大家有所帮助。1 OSI/RM 参考模型(1)  物理层(physical layer)物理层定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。物理层的网络设备有:集线器

2015-07-25 12:34:29 1072

转载 C++ 智能指针详解

C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p

2015-07-24 11:40:56 357

转载 OSI七层模式简单通俗理解

这个模型学了好多次,总是记不住。今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记。本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人。总体来说,OSI模型是从底层往上层发展出来的。 这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求。需求1:科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。于是,科

2015-07-18 11:12:28 905

转载 NET+AE开发中常见几种非托管对象的释放

我们知道.Net中对于内存的管理有两种方式,一种是托管对象管理,另一种是非托管对象管理。而我们通常理解的内存管理就是GC(垃圾收集),虽然GC通过对托管堆的管理,可以使我们有机会从繁锁的诸如内存泄漏之类的问题中解放出来,可以将精力专注于程序的逻辑上。但是将所有的事情都交给GC有时会损及程序的效率,严重的甚至会导致错误。为什么会出现这种情况呢?问题在于对非托管资源(文件句柄)或者需要特别关照

2014-05-29 11:47:51 1029

原创 等高线回放水平偏差计算方法 Python

import arcpyimport osarcpy.env.overwriteOutput=TrueTable=arcpy.env.scratchGDBa=arcpy.GetParameterAsText(0)a1=arcpy.GetParameterAsText(1)b=arcpy.en

2014-03-14 21:11:46 1663

高级排序 数据结构

高级排序 数据结构 归并排序,堆排序,希尔排序,快速排序

2012-11-25

C# .net HashTable

C# .net HashTable

2012-11-23

泛型编程 时间测试

泛型编程 时间测试泛型编程

2012-11-23

C#构建TIN程序

基于C#的构TIN程序,构TIN三角网采用Delaunay三角形,希望对大家有所帮助。

2012-11-21

最短路径-Dijkstra算法

最短路径-Dijkstra算法 从指定起始点向任一点搜索基于一定权重的最短路径。

2012-11-20

TSP AFORGE

TSP

2012-10-29

TimeSerieAFORGE

TimeSerie

2012-10-29

Optimization1D

Optimization1D

2012-10-29

AFORGE Approximation

AFORGE

2012-10-29

FuzzyAGVAForge

FuzzyAGV

2012-10-28

Fuzzy Set Sample

Fuzzy Set Sample

2012-10-28

AForge ParallelTest

AForge ParallelTest

2012-10-28

AForge FiltersDemo

AForge FiltersDemo

2012-10-27

AForge BlobsExplorer.rar

AForge BlobsExplorer.rar 代码文件

2012-10-27

c# GPS卫星坐标计算

GPS卫星坐标计算

2012-10-27

GPS卫星定位-实时位置计算程序-VC++源代码

GPS卫星定位

2012-10-27

ARCENGINE空间数据的可视化表达

-空间数据的可视化表达

2012-10-24

ARCENGINE地图及相关对象

ARCENGINE地图及相关对象

2012-10-24

使用ARCOBJECTS控件编程

使用ARCOBJECTS控件编程

2012-10-24

ArcGIS应用程序框架扩展

ArcGIS应用程序

2012-10-24

计算机图形学-games101-pa0-win-框架.rar

计算机图形学-games101-pa0-windows-vs2010-eigen3.2-框架

2022-11-24

igraph-0.8.0-msvc.zip

在0.7.1之后的五年内,iGraphs C核心的0.8.0版是一个重大的改进,它有几个新特性、性能和健壮性改进,以及许多bug修复。新功能包括额外的图形生成器、处理树的功能、新的社区检测方法、改进的团查找、谱图嵌入以及其他一些特性。请看变化量g更多细节。

2020-02-21

字符串统计

字符统计的小程序。 主要涉及的知识点: 1 typedef的使用 2 字符串的构建及其迭代器的使用 3 map容器及其迭代器的使用 4 map数据的访问(first second) 注意:字符统计可以由更为简洁的方式实现,本程序只是从map角度操作。

2015-07-23

ArcObject DEM流向计算

ArcObject DEM流向计算

2014-09-25

图的最小生成树的生成

图的最小生成树

2014-08-20

图的广度优先遍历

图的广度优先遍历

2014-08-15

图的构建与拓扑排序

图的构建与拓扑排序

2014-08-15

二叉查找树的最大最小以及任意数查找

二叉查找树的最大最小以及任意数查找

2014-08-13

二叉查找树的先序中序后续遍历

二叉查找树的先序中序后续遍历

2014-08-13

二叉 递归二叉查找算法

二叉查找与递归二叉查找算法

2014-07-29

栅格数据读取与操作

对ArcGIS的栅格数据进行读取并修改栅格数据

2014-05-23

SURF特征匹配

SURF 特征匹配

2014-05-07

arcpy 读取表 转成HTML

arcpy 读取表 转成HTML If you want to read the feature class or table by Arcpy, you first need to know Data Access Model. The data access module, arcpy.da, is a Python module for working with data. It allows control of the edit session, edit operation, improved cursor support (including faster performance), functions for converting tables and feature classes to and from NumPy arrays, and support for versioning, replicas, domains, and subtypes workflows.

2014-02-13

水系流向提取 基于D8算法 C#

水系流向提取 基于D8算法 C#

2013-09-11

Floyd-最短路径 C#程序

Floyd-最短路径 C#程序 确定边权重计算任意顶点间的最短路径

2013-07-17

图 拓扑排序 深度搜索 广度搜索 最小生成树

图 拓扑排序 深度搜索 广度搜索 最小生成树

2012-11-28

C# 图 拓扑排序

C# 图 拓扑排序

2012-11-27

基于Emgu cvSIFT图像匹配

基于Emgu cvSIFT图像匹配

2012-11-27

C# 二叉查找树

C# 二叉树

2012-11-24

.net 泛型链表

.net 泛型链表.

2012-11-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除