摘要: 1.判断一个点是否在凸边形内部在游戏开发中,我遇到过这个问题,主要是用来判断玩家鼠标所在点是否在指定的梯形范围内,来响应相关的MOUSEEVENT。一开始的想法十分简单,用初中的数学即可解决。思路如下:判断一个点是否在一个边哪一侧,可以转化为判断(0,0)点在一条边的哪一侧。求出N条边的直线方程,然后用N个不等式做&&判定即可。后来看了《编程之美》ch4.4,发现书中的一个解法更为精妙些。可以发现,沿着凸边形的各个顶点逆时针走一圈,会发现其内部的点永远都在我们的左手边。B和C是顶点,A是内部点,则BA必然在BC的左边。可以根据BA和BC的角度来判断BA是否在BC的左边。若角度& 阅读全文
posted @ 2012-03-03 16:40 孤牧 阅读(355) 评论(0) 推荐(0)
摘要: 信息存储:大多数计算机使用字节来作为最小的可寻址的存储器单位,存储器的每个字节都由唯一的数字来标识,称为地址。C中的指针也是一个变量,它的值是地址,它的类型是它所指向的类型。由于指针的值是地址,所以指针的大小为字长。C中的char表示单独的一个字节,short int表示为两个字节,int为4个字节,long int的大小为机器的字长。float使用4个字节,double使用8个字节。寻址和字节顺序:在几乎所有机器上,多字节对象被存储为连续的字节序列,对象的地址为所使用的字节序列的最小地址。对一个对象的字节排序有两种规则:小端法(little endian):最低有效位在前大端法(big en 阅读全文
posted @ 2012-02-28 22:26 孤牧 阅读(272) 评论(0) 推荐(0)
摘要: 1.信息就是位+上下文8位=1字节 AcsII将字符用7位来编码字符对应的编码格式不同,字符展现的效果也不同,这就是出现乱码的原因Unicode 是一个字符集 UTF-8是一种针对unicode字符集的编码方法跟ASCII是等同的概念文本文件:纯字符文件 二进制文件:非文本文件关于ASCII和UNICODE的详文: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html http://www.joelonsoftware.com/articles/Unicode.html2.C程序的生命周期预处理:预处理器(cpp 阅读全文
posted @ 2012-02-04 16:12 孤牧 阅读(316) 评论(0) 推荐(0)
摘要: 一直以来就觉得随机是一个很神奇的东西。随机在某种程度上代表的是不可预测性。不可预测性又使得我们的世界变得缤纷多彩起来:变幻莫测的天气,不到最后一刻胜负难料的足球,刺激的赌博,博彩等等。 随机可以在很多地方发生。如抓阄(人脑控制手的随机动作),掷骰子(骰子发生碰撞时的力和角度的随机),还有薛定谔的那只猫(在不打开门之前,猫是死是活都是随机的)。然而计算机也可以产生随机数。难道计算机真的能主动的进行随机的操作么?其实不然,计算机生成的随机数大多都是伪随机数。之所以叫“伪”,是因为伪随机数是用种子数和某种算法算出来的,也就是说只要知道种子数和算法,我们就可以反推出这个“随机”的过程。 以下是K&am 阅读全文
posted @ 2011-10-05 00:15 孤牧 阅读(1465) 评论(1) 推荐(1)
摘要: 近日开始学习C++。读的书有《Accelerated c++》(中、英),并且备着一本《c++ primer 4th》备查阅。以下是我的读书笔记。楷体是我的注释,红色标记为我认为的注意点。两个字符串字面值之间不能用操作符 '+' 来进行连接。如:”helo”+ ”world”是不正确的.在有些语言中这样的操作是合法的。如:AS3。输入输出缓冲区的概念。输入到计算机的会被存到输入缓冲区中,cin会读取输入缓冲区的内容,但cin只保存直到遇到第一个空白符的连续的值。然后刷新缓冲区,缓冲区将cin存取的值在缓冲区里删除。当cout时,会读取输出缓冲区的值,当遇到endl时,会刷新输出 阅读全文
posted @ 2011-09-22 23:59 孤牧 阅读(1407) 评论(0) 推荐(1)
摘要: 中秋归来,人疲惫怠倦了不少。效率也随之变低了,其原因大概是因为睡眠不够,生物钟紊乱导致的。 作为一个非科班出身的刚毕业的程序员,一路走来,经历了一些编程语言。 首先接触的是C语言,大一上学的,基本没有上过课,因为整个大一和大二上都压根没有在学习。在大二下的时候学了“计算方法”,一门我在大学里十分感兴趣的课,其实就是讲一些数值算法。然后才买了K&R,开始了很长一段时间的恶补C的时光。 大二下的时候开了一门微机原理的课,再加上大三自选的单片机的课,算是对8086汇编有了一些了解,不过现在也忘记的差不多了。 大三上的时候学习了fortran,但流于表面,现在连fortran能直接进行复数.. 阅读全文
posted @ 2011-09-14 23:05 孤牧 阅读(266) 评论(0) 推荐(0)
摘要: 今晚阅读了《Practices of an Agile Developer》的第六章 Aglie Coding。 以下是我的读书笔记(黑体是笔记,楷体是我的注释): Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ... 阅读全文
posted @ 2011-09-09 00:15 孤牧 阅读(1610) 评论(11) 推荐(3)
摘要: 1.哨兵: 可用于线性查找时减少循环时的每次判断的时间。在线性查找时,把查找值作为哨兵放入线性表的末尾([L]),然后循环从头开始查找(i:[0-L]),查找的过程中不对是否还有后续节点进行判断,只对是否查找到进行判断,若查找到则跳出循环并获得下标i,若为L则证明线性表内未找到,否则,表内找到在下标i处。2.随机排列情况下的二分查找法: 对随机排列的一个范围内的数,可以将其按二进制的位来进行二分,如第一位为0的为一半,为1为一半;第二位的情况又可以进一步进行二分......。此法可迅速的查找在这个范围内缺失的数或重复的数。3.变位词的快速搜索: 对同一个变位词类都生成一个相同的变位词标识... 阅读全文
posted @ 2011-09-06 00:16 孤牧 阅读(1005) 评论(0) 推荐(0)
摘要: 近读《合作的进化》,读完了前两章,做一个总结。 书中简化的囚徒困境如下: B合作 B背叛 A合作 A3B3 A0B5 ... 阅读全文
posted @ 2011-09-04 01:35 孤牧 阅读(385) 评论(0) 推荐(0)
摘要: 这是昨日我在CSDN上碰到的一个问题所引发的思考和所得。 有一个人在CSDN BBS上提问一段程序: 1 #include <stdlib.h> 2 #include <stdio.h> 3 #define LOOP 1000 4 void main() 5 { 6 int rgnC=0; 7 for(int i=0;i<LOOP;i++) 8 { 9 int x=rand();10 int y=rand();11 if(x*x+y*y<RAND_MAX*RAND_MAX)12 rgnC++;13 }14 printf("%d\n",rg 阅读全文
posted @ 2011-09-04 00:15 孤牧 阅读(4592) 评论(9) 推荐(4)
点击右上角即可分享
微信分享提示