<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<title>Milo Yip - 博客园</title>
<link type="text/css" rel="stylesheet" href="/bundles/blog-common.css?v=k2uL13BZlYpYjZ7FITMnMaB1mOfAPcMGfJChBRaBpP01"/>
<link id="MainCss" type="text/css" rel="stylesheet" href="/skins/Minyx2_Lite/bundle-Minyx2_Lite.css?v=box8Dmmj5G0VFMZyypCbLIqNJsuu5lz6TpJ4OOK0WkE1"/>
<link type="text/css" rel="stylesheet" href="/blog/customcss/66551.css?v=PcuWA1XkhZR9pNZ2fyyF8Fqv%2f44%3d"/>
<link title="RSS" type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/miloyip/rss"/>
<link title="RSD" type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/miloyip/rsd.xml"/>
<link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/miloyip/wlwmanifest.xml"/>
<script src="https://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>  
<script type="text/javascript">var currentBlogApp = 'miloyip', cb_enable_mathjax=false;</script>
<script src="/bundles/blog-common.js?v=nJDx8UubQZX9VogT9qEbaBjq1TmUREeH09Yin8VSvFo1" type="text/javascript"></script>
<script src="/skins/Minyx2_Lite/bundle-Minyx2_Lite.js?v=dAK2Rw4GyogXqBvhMZEW0IkYD2kjtuL3y_BKRj-vp4g1" language="javascript" type="text/javascript"></script>
</head>
<body>
<a name="top"></a>
<!--PageBeginHtml Block Begin-->
<SCRIPT type="text/javascript">
//<![CDATA[
// Duplicate digg
$(document).ready(function(){
    $("body").prepend($("#div_digg").css({
        "position" : "fixed", "right" : "0px", "bottom" : "0px", "z-index" : "10", "background-color" : "white", "margin" : "10px", "padding" : "10px", "border" : "1px solid #cccccc"}));
});
//]]>
</SCRIPT>
<script src="https://files.cnblogs.com/miloyip/math.js" type="text/javascript"></script>
<!--PageBeginHtml Block End-->


<div id="container">
    <a class="minyx" href="https://www.cnblogs.com/">代码改变世界</a>
    <ul id="topMnu">
        <!-- 统计数据 -->
        <li>
            
                
Posts - 26, 
Articles - 0, 
Comments - 1260
<!---->
            
        </li>
        <!-- 这边可以增加一些链接 -->
        <!-- 博客园 -->
        <li><a href="https://www.cnblogs.com">Cnblogs</a></li>
        <!-- 管理 -->
        <li id="topMnu-dashboard">
            <a id="lnkDashboard" href="https://www.cnblogs.com/miloyip/admin/EditPosts.aspx">Dashboard</a></li>
        <li>
            <a id="lnkLogin" href="https://passport.cnblogs.com/logout.aspx?ReturnUrl=https://www.cnblogs.com/miloyip/default.aspx">Logout</a></li>
    </ul>

    <script type="text/javascript">
        var m = window.__blog.topMenuRendered;
        if (m) { m(__$("topMnu")); }
    </script>

    <div id="header">
        <ul id="menu">
            <!-- 首页，当前section加上current类 -->
            <li id="menu-home" class="current">
                <a id="lnkHome" href="https://www.cnblogs.com/miloyip/">Home</a></li>
            <!-- 联系 -->
            <li id="menu-contact">
                <a id="lnkContact" href="https://space.cnblogs.com/msg/send/Milo+Yip">Contact</a></li>
            <!-- 相册 -->
            <li id="menu-gallary">
                <a id="lnkGallery" href="https://www.cnblogs.com/miloyip/gallery.html">Gallery</a></li>
            <!-- Rss订阅 -->
            <li id="rss">
                <a id="lnkRss" href="https://www.cnblogs.com/miloyip/rss">RSS</a></li>
        </ul>
        <div id="newmsg"></div>
        <h1>
            <!-- 主标题 -->
            <a id="lnkBlogTitle" href="https://www.cnblogs.com/miloyip/">Milo的游戏开发</a>
            <!-- 子标题 -->
            <small>
                </small>
        </h1>
    </div>

    <script type="text/javascript">
        var m = window.__blog.headerRendered;
        if (m) { m(__$("header")); }
    </script>

    <div id="wrapper">
        <div id="content">
            <script type="text/javascript">
                var m = window.__blog.preRenderPosts;
                if (m) { m(); }
            </script>
            

    <div class="post post-list-item" id="post_3527590">
        <h2>
            <a id="homepage1_ctl00_rptEntries_TitleUrl_0" class="PostTitle" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html">[置顶]《游戏引擎架构》信息总汇</a>
        </h2>
        <small>2014-02-18 10:23 by Milo Yip, 8094 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl00_rptEntries_lnkEdit_0" href="https://i.cnblogs.com/EditPosts.aspx?postid=3527590">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 豆瓣当当亚马逊China-pub京东中国图书网淘宝PDF样章试读微盘下载微云下载中英词汇索引表本页内容基本信息作者：Jason Gregory （杰森.格雷戈瑞）译者：Milo Yip（叶劲峰）原书名：Game Engine Architecture出版社：电子工业出版社出版时间：2014-1-1开本：16页数：800字数：1093400ISBN：9787121222887内容简介《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践，并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室，如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术，但是讨论范围远超于某个引擎<a href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl00_rptEntries_lnkCommentCount_0" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html#comments">22 Comment</a></li>
        
        <li id="homepage1_ctl00_rptEntries_liTag_0" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <div class="post post-list-item" id="post_1758390">
        <h2>
            <a id="homepage1_ctl00_rptEntries_TitleUrl_1" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/06/14/BlogPolicy.html">[置顶]本博方针</a>
        </h2>
        <small>2010-06-14 21:34 by Milo Yip, 3625 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl00_rptEntries_lnkEdit_1" href="https://i.cnblogs.com/EditPosts.aspx?postid=1758390">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 为希望本博能保持风格、质量，本文整理一直以來我想到的博客方针。 选题通用、时效长久的知识经验分享(杂谈除外) 以游戏开发为主(如图形、物理、人工智能、游戏编程、引擎架构等)，但也涉猎一般计算机科学知识(如算法) 避免讨论最新热门技术，维持博文的原创性、独特性不转载、不翻译(自己的文章除外) 不撰书评(书评撰在豆瓣)可谈哲学问题，不谈宗教问题(如Windows好还是Linux好)撰文尽量客观，以理论支持观点，提供参考和实验数据(如果纯属猜想会标明) 尽量把题目写得浅白，不需读者懂得大量背景知识尽量使用普及的软件、编程语言等，让读者可以自行尝试、实验希望维持每周一文，繁忙时也至少两周一文(包括转载<a href="https://www.cnblogs.com/miloyip/archive/2010/06/14/BlogPolicy.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl00_rptEntries_lnkCommentCount_1" href="https://www.cnblogs.com/miloyip/archive/2010/06/14/BlogPolicy.html#comments">22 Comment</a></li>
        
        <li id="homepage1_ctl00_rptEntries_liTag_1" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    

    <div class="post post-list-item" id="post_3562129">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_0" class="PostTitle" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitectureIndex.html">《游戏引擎架构》中英词汇索引表</a>
        </h2>
        <small>2014-02-23 17:26 by Milo Yip, 2605 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_0" href="https://i.cnblogs.com/EditPosts.aspx?postid=3562129">编辑</a></small>
        <div class="entry">
            <div class="postlist-postbody_loading" id="postlist_postbody_3562129">正文内容加载中...</div><script type="text/javascript">getBlogPostBody(3562129);</script>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_0" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitectureIndex.html#comments">0 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_0" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_3562129")); } 
    </script>
    
    <div class="post post-list-item" id="post_3527590">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_1" class="PostTitle" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html">《游戏引擎架构》信息总汇</a>
        </h2>
        <small>2014-02-18 10:23 by Milo Yip, 8094 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_1" href="https://i.cnblogs.com/EditPosts.aspx?postid=3527590">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 豆瓣当当亚马逊China-pub京东中国图书网淘宝PDF样章试读微盘下载微云下载中英词汇索引表本页内容基本信息作者：Jason Gregory （杰森.格雷戈瑞）译者：Milo Yip（叶劲峰）原书名：Game Engine Architecture出版社：电子工业出版社出版时间：2014-1-1开本：16页数：800字数：1093400ISBN：9787121222887内容简介《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践，并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室，如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术，但是讨论范围远超于某个引擎<a href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_1" href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html#comments">22 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_1" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_3527590")); } 
    </script>
    
    <div class="post post-list-item" id="post_3029852">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_2" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html">面试题：检测点是否在扇形之内</a>
        </h2>
        <small>2013-04-19 10:22 by Milo Yip, 10540 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_2" href="https://i.cnblogs.com/EditPosts.aspx?postid=3029852">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 前几天，同事在报告中提及检测角色是否在扇形攻击范围的方法。我觉得该方法的性能不是太好，提出另一个颇为直接的方法。此问题在游戏中十分常见，只涉及简单的数学，却又可以看出实现者是否细心，所以我觉得可当作一道简单的面试题。问题在微博发表后得到不少回应，故撰文提供一些解答。问题定义:在二维中，检测点\mathbf{p}是否在扇形(circular sector)内，设扇形的顶点为\mathbf{c}，半径为r，从\mathbf{\hat{u}}方向两边展开\theta角度。当中 \mathbf{p},\mathbf{c},\mathbf{\hat{u}} 以直角坐标(cartesian coordin<a href="https://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_2" href="https://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html#comments">19 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_2" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_3029852")); } 
    </script>
    
    <div class="post post-list-item" id="post_2080562">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_3" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2011/06/14/alice_madness_returns_hair.html">爱丽丝的发丝──《爱丽丝惊魂记：疯狂再临》制作点滴</a>
        </h2>
        <small>2011-06-14 16:27 by Milo Yip, 67115 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_3" href="https://i.cnblogs.com/EditPosts.aspx?postid=2080562">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 今天(2011年6月14日)是《爱丽丝惊魂记：疯狂再临 (Alice: Madness Returns) Xbox360/PlayStation3/PC》(下简称《爱》)正式发售日，身为其开发程序员之一，特撰此文以作纪念。简介《爱》(图1a)是一款由上海独立游戏工作室麻辣马(Spicy Horse)制作、美商电艺(Electronic Arts)发行的惊悚动作冒险游戏。此全乃2000年发行的《爱丽...<a href="https://www.cnblogs.com/miloyip/archive/2011/06/14/alice_madness_returns_hair.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_3" href="https://www.cnblogs.com/miloyip/archive/2011/06/14/alice_madness_returns_hair.html#comments">106 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_3" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_2080562")); } 
    </script>
    
    <div class="post post-list-item" id="post_1828449">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_4" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html">C++强大背后</a>
        </h2>
        <small>2010-09-17 00:56 by Milo Yip, 52391 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_4" href="https://i.cnblogs.com/EditPosts.aspx?postid=1828449">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 在31年前(1979年)，一名刚获得博士学位的研究员，为了开发一个软件项目发明了一门新编程语言，该研究员名为Bjarne Stroustrup，该门语言则命名为——C with classes，四年后改称为C++。C++是一门通用编程语言，支持多种编程范式，包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP)...<a href="https://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_4" href="https://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html#comments">123 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_4" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1828449")); } 
    </script>
    
    <div class="post post-list-item" id="post_1816614">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_5" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/09/03/idalloc_solution.html">手机分配短讯id的面试题目(分析解答篇)</a>
        </h2>
        <small>2010-09-03 01:37 by Milo Yip, 10266 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_5" href="https://i.cnblogs.com/EditPosts.aspx?postid=1816614">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 看过上回《厘清需求篇》，读者想到多少个解呢？本篇首先谈及一些基本分析，之后会按两种API设计(纯函数API和含状态的API)，分别描述多个解。虽然面试时或许不能进行实际测试，但本文还是给出PC上的效能测试结果。最后分析比较各解之优劣作为总结。 问题分析原来的问题是要从一个无序ids数组里分配一个id。我们可以用数学方式去更清楚地说明这个问题。设m = 256 为所有id的个数，集合U = \lef...<a href="https://www.cnblogs.com/miloyip/archive/2010/09/03/idalloc_solution.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_5" href="https://www.cnblogs.com/miloyip/archive/2010/09/03/idalloc_solution.html#comments">18 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_5" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1816614")); } 
    </script>
    
    <div class="post post-list-item" id="post_1813256">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_6" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/08/31/idalloc_clarify.html">手机分配短讯id的面试题目(厘清需求篇)</a>
        </h2>
        <small>2010-08-31 01:42 by Milo Yip, 11695 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_6" href="https://i.cnblogs.com/EditPosts.aspx?postid=1813256">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 前阵子，笔者在TopLanguage论坛里参与讨论了一个不错的面试题目，在此和大家分享，也当作个人的讨论总结。本文列出该问题，并模拟应试者向面试官的对话，以厘清问题需求。题目原文事缘Dbger发起的帖子中，liuxinyu举了一个面试题目，原文如下:有个老的手机短信程序，由于当时的手机CPU，内存都很烂。所以这个短信程序只能记住256条短信，多了就删了。 每个短信有个唯一的ID，在0到255之间。...<a href="https://www.cnblogs.com/miloyip/archive/2010/08/31/idalloc_clarify.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_6" href="https://www.cnblogs.com/miloyip/archive/2010/08/31/idalloc_clarify.html#comments">31 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_6" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1813256")); } 
    </script>
    
    <div class="post post-list-item" id="post_1772514">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_7" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html">C++/C#/F#/Java/JS/Lua/Python/Ruby渲染比试</a>
        </h2>
        <small>2010-07-07 00:20 by Milo Yip, 41718 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_7" href="https://i.cnblogs.com/EditPosts.aspx?postid=1772514">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 前篇博文把一个C++全局光照渲染器移植至C#，比较C++和C#之性能。……本人陆续移植了C++代码至Java、JavaScript、Lua、Python和Ruby，赵姐夫亦尝试了F#。本文提供源代码、测试结果、简单分析、以及个人体会。<a href="https://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_7" href="https://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html#comments">103 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_7" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1772514")); } 
    </script>
    
    <div class="post post-list-item" id="post_1763267">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_8" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html">C# vs C++ 全局照明渲染性能比试</a>
        </h2>
        <small>2010-06-23 09:48 by Milo Yip, 21328 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_8" href="https://i.cnblogs.com/EditPosts.aspx?postid=1763267">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 最近有多篇讨论程序语言趋势的博文，其中谈及到C#的性能问题。本人之前未做过相关测试，自己的回覆流于理论猜测，所以花了点时间做个简单实验，比较C#和C++的性能。<a href="https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_8" href="https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html#comments">102 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_8" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1763267")); } 
    </script>
    
    <div class="post post-list-item" id="post_1758272">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_9" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/06/14/Kinematics_ParticleSystem.html">用JavaScript玩转游戏物理(一)运动学模拟与粒子系统</a>
        </h2>
        <small>2010-06-14 16:19 by Milo Yip, 32319 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_9" href="https://i.cnblogs.com/EditPosts.aspx?postid=1758272">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 系列简介也许，三百年前的艾萨克·牛顿爵士(Sir Issac Newton, 1643-1727)并没幻想过，物理学广泛地应用在今天许多游戏、动画中。为什么在这些应用中要使用物理学？笔者认为，自我们出生以来，一直感受着物理世界的规律，意识到物体在这世界是如何"正常移动"，例如射球时球为抛物线(自旋的球可能会做成弧线球) 、石子系在一根线的末端会以固定频率摆动等等。要让游戏或动画中的物体有真实感，其...<a href="https://www.cnblogs.com/miloyip/archive/2010/06/14/Kinematics_ParticleSystem.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_9" href="https://www.cnblogs.com/miloyip/archive/2010/06/14/Kinematics_ParticleSystem.html#comments">80 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_9" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1758272")); } 
    </script>
    
    <div class="post post-list-item" id="post_1744882">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_10" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/05/27/reply_discrete.html">回应CSDN肖舸《做程序，要“专注”和“客观”》，实验比较各离散采样算法</a>
        </h2>
        <small>2010-05-27 23:57 by Milo Yip, 18623 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_10" href="https://i.cnblogs.com/EditPosts.aspx?postid=1744882">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 自从肖舸在其CSDN博客上说&ldquo;拒绝回答博客园等网站网友的问题&rdquo;，实质上不单是拒绝回答，而且还删去包括一些网友及本人对于纯粹技术探讨的评论。当然每位博主都有自由这么做，但个人认为这对于社区的交流发展有负面影响。为了探讨这个技术问题，本人唯有把回应发表于博客园内。本文会阐述之前的论点，评论肖舸的实现，并进行了兩个实验比较不同算法、实现的优劣之处。 之前的&ldquo;交流&rd...<a href="https://www.cnblogs.com/miloyip/archive/2010/05/27/reply_discrete.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_10" href="https://www.cnblogs.com/miloyip/archive/2010/05/27/reply_discrete.html#comments">72 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_10" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1744882")); } 
    </script>
    
    <div class="post post-list-item" id="post_1733051">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_11" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html">《编程之美：分层遍历二叉树》的另外两个实现</a>
        </h2>
        <small>2010-05-12 00:10 by Milo Yip, 16736 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_11" href="https://i.cnblogs.com/EditPosts.aspx?postid=1733051">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 之前重温本书写书评时，也尝试找寻更好的编程解法。今天把另一个问题的实现和大家分享。问题定义给定一棵二叉树，要求按分层遍历该二叉树，即从上到下按层次访问该二叉树(每一层将单独输出一行)，每一层要求访问的顺序为从左到右，并将节点依次编号。下面是一个例子: 输出:节点的定义:书上的解法书上举出两个解法。第一个解法是用递归方式，搜寻并打印某一层的节点，再打印下一层的节点。这方法简单但时间效率不高(但不需要...<a href="https://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_11" href="https://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html#comments">24 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_11" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1733051")); } 
    </script>
    
    <div class="post post-list-item" id="post_1720877">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_12" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html">在博客里轻松使用LaTeX数学公式</a>
        </h2>
        <small>2010-04-26 01:32 by Milo Yip, 16352 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_12" href="https://i.cnblogs.com/EditPosts.aspx?postid=1720877">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 笔者最近的博文有不少数学相关内容，发现利用一些网上服务、jQuery和CSS，可以更轻松地在博客里使用\LaTeX语法排版方程式。\LaTeX是基于\TeX的排版系统。而\TeX就是美国著明计算机教授高德纳(Donald E. Knuth)，为了编写他的巨著《计算机程序设计艺术(The Art of Computer Programming)》而设计的系统，对于数学公式的排版支援十分强大。线上La...<a href="https://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_12" href="https://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html#comments">25 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_12" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1720877")); } 
    </script>
    
    <div class="post post-list-item" id="post_1717109">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_13" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/04/21/1717109.html">用JavaScript玩转游戏编程(一)掉宝类型概率</a>
        </h2>
        <small>2010-04-21 14:50 by Milo Yip, 12937 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_13" href="https://i.cnblogs.com/EditPosts.aspx?postid=1717109">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 问题定义游戏(和一些模拟程序)经常需要使用随机数，去应付不同的游戏(或商业)逻辑。本文分析一个常见问题：有N类物件，设第i类物件的出现概率为P(X=i)，如何产生这样的随机变量X？例如对概率的要求是P(X=0)=0.12P(X=1)=0.4P(X=2)=0.4P(X=3)=0.07P(X=4)=0.01输入数组&lt;0.12, 0.4, 0.4, 0.07, 0.01&gt;输出符合以上概率的随...<a href="https://www.cnblogs.com/miloyip/archive/2010/04/21/1717109.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_13" href="https://www.cnblogs.com/miloyip/archive/2010/04/21/1717109.html#comments">12 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_13" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1717109")); } 
    </script>
    
    <div class="post post-list-item" id="post_1711002">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_14" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/04/13/1711002.html">从头开始思考游戏的数据管理系统(二)</a>
        </h2>
        <small>2010-04-13 13:10 by Milo Yip, 5698 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_14" href="https://i.cnblogs.com/EditPosts.aspx?postid=1711002">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 上回谈及一些游戏数据管理的初部分析，但有些思绪还没有整理好，写得颇乱。今次就直接谈笔者在几个月前设计的Mil Universe Database(MUD)，从中再阐述当中的一些想法。 基本的数据流程首先，一个项目中，引擎会使用的所有数据，都放进一个完整的数据库里。现时笔者的设计一个数据库会储存成一个.mud文件。 外部文件可以汇入数据库，也可以汇出。但汇出的数据会失去一些资讯(如稍后说的依存关系)...<a href="https://www.cnblogs.com/miloyip/archive/2010/04/13/1711002.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_14" href="https://www.cnblogs.com/miloyip/archive/2010/04/13/1711002.html#comments">8 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_14" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1711002")); } 
    </script>
    
    <div class="post post-list-item" id="post_1710179">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_15" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/04/12/1710179.html">从头开始思考游戏的数据管理系统(一)</a>
        </h2>
        <small>2010-04-12 22:53 by Milo Yip, 6962 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_15" href="https://i.cnblogs.com/EditPosts.aspx?postid=1710179">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 和一般应用软件有点不同，大部份游戏软件都需要使用大量的游戏数据(game data)──或称为资源(resource)、资产(game asset, 但通常asset包括数据的原始格式, 不是最终运行游戏所需的数据)。在制作游戏时，如何管理这些数据是一个非常重要的问题。曾经看过和使用过不同的方案，现在归回原点，分析基本的需求，随笔记录笔者所选的方案思路。游戏数据管理的重要性如果从游戏软件的产出(d...<a href="https://www.cnblogs.com/miloyip/archive/2010/04/12/1710179.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_15" href="https://www.cnblogs.com/miloyip/archive/2010/04/12/1710179.html#comments">10 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_15" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1710179")); } 
    </script>
    
    <div class="post post-list-item" id="post_1702768">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_16" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/04/02/1702768.html">用JavaScript玩转计算机图形学(二)基本光源</a>
        </h2>
        <small>2010-04-02 20:44 by Milo Yip, 14862 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_16" href="https://i.cnblogs.com/EditPosts.aspx?postid=1702768">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 上一篇介绍了简单的光线追踪，凑合了临时用的光源去渲染效果。这次将讲解三种基本光源，及一些背景理论。过分简化的教材和现成API(OpenGL/Direct3D等)可能会做成一些错误理解。在此，希望文章能简单之余，又不失背后理论。读者明白之后，可把概念简化，或按实际情况调整。本文代码可在此下载(10KiB)。读者若喜欢本文，可按推荐按钮以示鼓励。如果写得不够清楚，或有错误之处，可留言相告。光在物理上，...<a href="https://www.cnblogs.com/miloyip/archive/2010/04/02/1702768.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_16" href="https://www.cnblogs.com/miloyip/archive/2010/04/02/1702768.html#comments">45 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_16" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1702768")); } 
    </script>
    
    <div class="post post-list-item" id="post_1698953">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_17" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html">用JavaScript玩转计算机图形学(一)光线追踪入门</a>
        </h2>
        <small>2010-03-29 00:05 by Milo Yip, 35063 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_17" href="https://i.cnblogs.com/EditPosts.aspx?postid=1698953">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 系列简介记得小时候读过一本关于计算机图形学(computer graphics, CG)的入门书，从此就爱上了CG。本系列希望，采用很多人认识的JavaScript语言去分享CG，令更多人有机会接触，并爱上CG。本系列的特点之一，是读者能在浏览器里直接执行代码，也可重覆修改代码测试。透过这种互动，也许能更深刻体会内容。读者只要懂得JavaScript(因为JavaScript很简单，学过Java/...<a href="https://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_17" href="https://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html#comments">100 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_17" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1698953")); } 
    </script>
    
    <div class="post post-list-item" id="post_1687647">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_18" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/03/16/milo_chinese_chess.html">12年前的作品──《美绿中国象棋》制作过程及算法简介</a>
        </h2>
        <small>2010-03-16 21:43 by Milo Yip, 14341 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_18" href="https://i.cnblogs.com/EditPosts.aspx?postid=1687647">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 这个游戏是大学本科二年级时(1998年)修人工智能课程的功课 。这个游戏的「棋力」并不高，主要是因为没有花时间在调整的工作上。比较满意的部分是使用 OpenGL 做的使用者介面。本文将简单介绍制作本游戏的过程及当中用到的算法。你可以先下载(1049KiB)试试，但现时已找不到源码了，将来找到的话再分享。制作过程约在接到这项功课前的一个月，刚开始自学 OpenGL，因此便考虑利用 OpenGL 做使...<a href="https://www.cnblogs.com/miloyip/archive/2010/03/16/milo_chinese_chess.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_18" href="https://www.cnblogs.com/miloyip/archive/2010/03/16/milo_chinese_chess.html#comments">57 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_18" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1687647")); } 
    </script>
    
    <div class="post post-list-item" id="post_1680968">
        <h2>
            <a id="homepage1_ctl01_rptEntries_TitleUrl_19" class="PostTitle" href="https://www.cnblogs.com/miloyip/archive/2010/03/08/1680968.html">史上最强女游戏程序员</a>
        </h2>
        <small>2010-03-08 17:33 by Milo Yip, 34256 阅读, <a href="#" onclick="PutInWz();return false;">收藏</a>, <a id="homepage1_ctl01_rptEntries_lnkEdit_19" href="https://i.cnblogs.com/EditPosts.aspx?postid=1680968">编辑</a></small>
        <div class="entry">
            <div class="c_b_p_desc">摘要: 也许你听说过John Carmack 和Tim Sweeney等大牛的名字，而向来游戏工业都是阳盛阴衰，适逢国际妇女节，今天我为大家介绍游戏业界一位史上最强女游戏程序员：Corrinne Yu。 简历以下是她在游戏业界内的简历 微软Halo团队首席引擎架构师(principal engine architect) 微软游戏工作室的首位女性技术主管 微软的Direct3D顾问委员会及图形顾问委员会的...<a href="https://www.cnblogs.com/miloyip/archive/2010/03/08/1680968.html" class="c_b_p_desc_readmore">阅读全文</a></div>
        </div>
        <ul class="postmetadata">
        <li class="icon_comment icon_r"><a id="homepage1_ctl01_rptEntries_lnkCommentCount_19" href="https://www.cnblogs.com/miloyip/archive/2010/03/08/1680968.html#comments">46 Comment</a></li>
        
        <li id="homepage1_ctl01_rptEntries_liTag_19" class="icon_bullet">&nbsp; </li>
        </ul>
    </div>
    
    <script type="text/javascript"> 
    var m = window.__blog.postRendered; 
    if (m) { m(__$("post_1680968")); } 
    </script>
    

<script type="text/javascript">
    var m = window.__blog.postRenderPosts;
    if (m) { m(); }
</script>

<div>
    <div id="pager"><a href="https://www.cnblogs.com/miloyip/default.aspx?page=2">下一页</a></div>
    
</div>


        </div>

        <script type="text/javascript">
            var m = window.__blog.contentRendered;
            if (m) { m(__$("content")); }
        </script>

        <div id="sidebar">
            
<div id="about">
<div>
<h2 id="about_title">About</h2>
<div id="about_body">
<div id="blog-news"></div>
<script type="text/javascript">loadBlogNews();</script>
</div>
</div>
</div>

            <script type="text/javascript">
                var m = window.__blog.aboutRendered;
                if (m) { m(__$("about")); }
            </script>
            
<div id="mySearchWrapper">
    <div id="mySearch">
        <input type="image" src="/skins/Minyx2_Lite/images/btnsearch.gif" id="btnZzk"  class="submit" onclick="zzk_go();return false;"/>
        <label class="lb_search"><input type="text" id="q" onkeydown="return zzk_go_enter(event);" class="keyword" /></label>
    </div>
</div>

            <script type="text/javascript">
                var m = window.__blog.searchFormRendered;
                if (m) { m(__$("searchform")); }
            </script>
            <div id="sideMain">
            </div>
            <div id="sideRight">
            </div>
            <div id="sideLeft">
            </div>
            
                <div id="sideContainer">
                </div>
                <script type="text/javascript">
                    $.ajax({
                        url: '/' + currentBlogApp + '/mvc/blog/Minyx2_Lite_SideColumn.aspx',
                        data: '{}',
                        type: 'post',
                        dataType: 'text',
                        contentType: 'application/json; charset=utf-8',
                        success: function (data) {
                            if (data) {
                                $("#sideContainer").html(data);
                                loadBlogDefaultCalendar();
                                loadBlogSideBlocks();
                                var m = window.__blog.sideContainerRendered;
                                if (m) { m(__$("sideContainer")); }
                                window.__blog.sidebar.__layout();
                            }
                        }
                    });

                </script>
            
        </div>

        <script type="text/javascript">
            var m = window.__blog.sidebarRendered;
            if (m) { m(__$("sidebar")); }
        </script>

        <div id="footer">
            
<p id="logoFoot">
    <a href="https://www.spiga.com.mx/" title="Agencia Interactiva Spiga">www.spiga.com.mx</a>
</p>
<div class="footText">
<p>
Copyright &copy;2014 Milo Yip
</p>
<p>
<a href="https://www.cnblogs.com">博客园</a>
</p>
</div>
        </div>
    </div>

    <script type="text/javascript">
        var m = window.__blog.wrapperRendered;
        if (m) { m(__$("wrapper")); }
    </script>

</div>
<script type="text/javascript">
    var m = window.__blog.containerRendered;
    if (m) { m(__$("container")); }
</script>
</body>
</html>