- 博客(19)
- 收藏
- 关注
原创 E2BAF1CC
E2BAF1CCE2BAF1CCE2BAF1CCE2BAF1CCE2BAF1CCE2BAF1CCE2BAF1CCE2BAF1CC
2015-08-04 20:20:17
622
转载 游戏动画中欧拉角与万向锁的理解
我在2009年5月份左右拜读了《3D数学基础:图形与游戏开发》,当时对欧拉角中万向锁的概念一直是百思不得其解,也从未遇到过这种情况。书上有这样一句话:“如果您从来没有遇到过万向锁情况,你可能会对此感到困惑,而且不幸的是,很难在本书中讲清楚这个问题,你需要亲身经历才能明白。”今天我用3个多小时的时间再次回想了一下这个问题,总算想明白了,现在把思考的结果分享给大家. 下面我想说
2013-12-19 20:52:36
1226
转载 A*算法中启发函数的使用
A*算法使用启发函数h(n)来获得对于从任意结点n走到目标结点的最小代价的估计,因此选用一个好的启发函数是非常重要的.A*算法中启发函数的使用启发函数可以用来控制A*算法的行为.在极端情况下,如果h(n)=0,那么只有g(n)实际上是有用的,这时A*算法也就是迪杰斯特拉算法,它能保证一定可以找到一条最优路径.如果h(n)总是小于(或者等于)从结点n走到目标结点的步数,那么A
2013-11-12 21:19:04
26713
1
原创 DeviceToken
首先说一下app推送的大概流程: 1.app发送一个请求给APNS(ApplePushNotificationServer,即苹果推送通知服务器)2.APNS会根据设备的唯一标示(UDID)返回给app一个token3.app将得到的token发送给app的服务器4.服务器会把当前用户(指的是app的用户)的信息和token存入数据库,每当用户满足推送条件的时候,我们的serv
2013-09-19 15:10:04
843
转载 cocos2d-x中的autorelease pool
引用计数的由来cocos2d-x 的世界是基于 CCObject 类构建的,其中的每个元素:层、场景、精灵等都是一个个 CCObject 的对象。所以 内存管理的本质就是管理一个个 CCObject。作为一个 cocos2d 的 C++ 移植版本,在它之前有很多其它语言的 实现,从架构层次来说,这与语言的实现无关(比如 CCNode 的节点树形关系,其它语言也可以实现,如果是内存方
2013-09-16 17:44:56
1101
转载 A*算法入门
在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法。 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。估价函数:从当前节点移动到目标节点的预估费用;这个估计就是启发式的。在寻路问题和迷宫问
2013-09-04 19:01:48
606
转载 do...while(0) do...while(false)的妙用
do...while(0) do...while(false)的妙用 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码
2013-07-30 10:57:21
584
转载 深入探讨C++中的引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一
2013-05-08 22:49:41
380
转载 用引用返回值
函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本。 例如,下面的程序是有关引用返回的4种形式: //********************* //** ch9_6.cpp ** //********************* #include float temp; float fn1(flo
2013-04-27 22:52:53
400
转载 Strcpy和Strncpy的区别
Strcpy和Strncpy的区别- -第一种情况:char* p="how are you ?";char name[20]="ABCDEFGHIJKLMNOPQRS";strcpy(name,p); //name改变为"how are you ? OPQRS " ====>错误!strncpy(name,p,sizeof(name)) //name
2013-04-27 22:05:11
473
原创 CONST的用法及常见问题
使用Const时候的问题问题1:const变量&常量例:为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? const int n = 5;int a[n];答案与分析:1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区
2013-04-23 23:42:51
717
转载 (转)#ifndef 与 #program once 的区别
为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一 #ifndef __SOMEFILE_H__//为了防止重复的名字,通常采用文件名 #define __SOMEFILE_H__
2013-04-23 00:16:25
634
转载 关于C++中的前置声明
关于C++中的前置声明 2010-04-08 23:37:14| 分类: C/C++|字号 订阅今天一朋友问及C++中的前置声明问题,下面是我给出的回答。 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类
2013-04-23 00:05:40
478
转载 CreateFile函数
CreateFile函数详解CreateFileThe CreateFile function creates or opens the following objects and returns a handle that can be used to accessthe object: files pipes mailslots communications res
2013-04-16 23:35:34
450
转载 Windows管道技术简述
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。 现在就来讨论一下,如何用匿名管道技术实现这个功能。 管道技术由来已久,相信不少人对DOS命令里的管道
2013-04-16 22:55:01
465
转载 使用CreateNamedPipe进行 进程通信的示例
使用CreateNamedPipe进行 进程通信的示例。#include#include#includeusing namespace std;DWORD WINAPI thread1(LPVOID param){char buf[256];DWORD rlen=0;HANDLE hPipe = CreateNamedPipe(TEXT("\\\\.
2013-04-16 22:53:46
6546
转载 C++ map的基本操作和使用
1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000
2012-09-05 13:25:12
292
转载 C++Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vector
2012-09-05 13:23:29
444
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人