• 一个简单的物理引擎

    之前物理课的时候看到了PPT上一张分子热运动的图,觉得很有趣,于是那个星期就做了个二维球体完全弹性碰撞的简单物理引擎。非常凑巧的是,刚好这个东西可以拿来做最后的物理大作业,也算是非常开心吧。

    Translational Motion

    先放上这次物理大作业做的三个热学演示吧,其实核心代码是一样的,只不过根据不同演示的需要做了一定的修改:

    写引擎之前我隐约知道,好像大部分的物理引擎都是在每一帧里面,让每个物体往前前进一点,然后当两个物体重叠之后再做碰撞的处理。但是我对这一套理论十分的不了解,而且总是觉得这么做十分的麻烦,又怕当碰撞十分复杂的时候(比如接连有好多个物体碰撞)会出问题,所以我决定按照另外一个十分显然的思路来写引擎。

    Read on →

  • C++ Placement New

    问题的引入

    最近有若干同学和我讨论在实现 C++ vector 容器的时候如何实例化一个没有默认构造函数的类。比如下面的代码:

    #include <cstddef>
    
    template <class T>
    class vector {
        size_t capacity, size;
        T *data;
    public:
        vector() :
            capacity(10), // for example
            size(0),
            data(new T[capacity]) {
        }
    
        ~vector() {
            delete [] data;
        }
    };
    
    struct Point {
        int x, y;
        Point(int a, int b): x(a), y(b) {}
    };
    
    int main() {
        vector<int> a;
        vector<Point> b;
    }
    
    

    在实例化 vector<int> 的时候不会有问题,然而当实例化 vector<Point> 的时候就会出错了

    Read on →

  • matplotlib 小结

    因为物理实验作图的原因,我有幸接触了 matplotlib ,配合 scipy 的其他组件,可以完成我所有需要的任务(我的需求都是非常初级的 :-) )。鉴于接下来可能转战 R ,所以特地把最近 matplotlib 的使用经验总结一下。

    import

    import numpy as np
    from pylab import *
    from scipy.optimize import leastsq
    from matplotlib.font_manager import FontManager
    

    简单的绘图

    # 折线图:
    plot(x, y)
    plot(x, y, '-')
    plot(x, y, '-', linewidth=2)
    
    # 散点图
    plot(x, y, 'o', markersize=2)
    plot(x, y, ',')
    

    Read on →

  • djvu 切边 + 转 pdf

    我打算预习一下下学期的物理,物理老师扔过来一个 djvu 格式的电子书。 djvu 格式是我比较讨厌的一个格式,虽然它相比 pdf 来说,文件大小会小得多,但是毕竟阅读不方便,软件支持并不是很好。如果说,问题只是 djvu 那就算了,毕竟 iPad 上还是有应用可以打开的,最不能忍受的是,这本电子书左右合起来有 1/3 的空白,上下合起来有 1/2 的空白,在阅读器上阅读的体验极差。于是我就打算将其切边,并转换成 pdf 。

    解决方法

    Read on →

  • 记 p2dv.in

    背景

    作为一篇总结&回忆文,还是先跟各位说一下背景吧。

    我们今年的程序设计课大作业是写一个斗兽棋的AI。其实我在去年或者前年的时候就有写一个AI对战的网站的想法,只是没有这个机会。于是我听到大作业的题目之后,我就问助教可不可以这么搞,嗯,萌萌哒助教同意啦。

    于是我就开始写这么个网站了。

    写网站

    这个网站的域名 p2dv.in 实际上跟大作业一点关系都没有。暑假的时候突然想到了这么个域名,意思是 Place to dive in ,有点仿 v2ex.comWay to explore ,然后看好便宜就买了下来。这次发现有这么个闲置的域名,于是就直接拿来用了。我觉得如果你知道它的意思的话,这个域名应该是很好记的。

    Read on →