TKYM's profile※ 画面は開発中のものですPhotosBlogListsMore Tools Help

Blog


    August 15

    レーシックの事前検査

    手術が可能かどうか調べにいってきた。(ここまでは無料)
    結論は、可能。 ただ、消耗品であるらしい角膜の厚さが1回分+a しかないため、
    極わずかな確率での失敗時に再手術ができないかもしれないとのこと。
    視力1.0獲得率は98%で、だいたい0.6くらいあればいいと思っているので成功率は 98%+少し。
     
    この確率は、信頼すべきものだと思うが、勇気は要る

    眼鏡屋でフレームを選ぶためにも。(まだかけるつもり)
    高い特殊レンズ代を省略して安く買うためにも。
    成功すればプールサイドで躓かない。
    成功すれば免許も裸眼で取れる。
    視野が広がる(最近のメガネはレンズ小さいから。)
    シャンプーとリンスを間違えない。
    メガネをなくしても匍匐前進は不要。
    悲惨な事故(踏み潰されたり)で大事なメガネを失わずに済む。
    裸眼時の目は3でもεでもない。
     
    夢のような生活に戻れるらしい、18万くらい & 98+a% で。

    今は昔、最初メガネをかけるときは、
    それまでの数週間、寝る前にミドリンとかいう目薬を点眼したりしてメガネにならぬよう粘った。
    結局、周りの人より早くメガネをかけ、「メガネくん」とお決まりの名前をもらいながら、
    「どうしようもないのか」と、しばらくは我慢の日々だった。

    それが今日はなんという技術の進歩だ。このまま行けば不老不死も夢じゃないかと思えるほどだ。

    でもやはり少し怖いとは思う。
     

    検査は結構長かった。
    明るいときと暗いときの見え方の検査、視力検査をして、
    よくわからない目薬を点眼されて、麻酔を点眼されて、目玉をグリグリされる。
    それで最後に結果発表。

    帰りは目薬の効果でまぶしい。夕日がまぶしくてお化けになったかと思った。
    地下通路を駆使して何とか帰宅。それでもまぶしさで普段より疲れた。
    手術のときはタクシーが良いかもしれない。

    さて、残るは最後の決断である。

    August 06

    Nicovolume 0.252

    1. ちょっとした機能追加をしてみた。

    時間が来ると、下のような画面が表示され、スライダーが左右に動きます。
    手動で動かすことによって、自動調整をキャンセルすることが可能です。

    0.252

    2. IE の自動起動が不要な場合のため、インストーラで ブラウザ拡張の有無を選択できるようにしました。
    その結果 Vista 環境で .msi 形式のインストーラがうまくいかなくなってしまったので、 exe 形式も入れておきました。

    3. Vista 環境で、 互換モード を使用する必要がなくなりました。
     Vista では 新しいAPI を使うようにしました。

    * 古いバージョンを消してから新しいバージョンをインストールする必要があります。
    * インストールフォルダ内にある time.conf を一時退避させておくと同じ設定で使えると思います。

    Nicovolume の記事
    http://prog-city.spaces.live.com/Blog/cns!E5379F11D9E8BB3F!918.entry


    Vista でのマスタボリュームコントロール についての 参考文献

    http://msdn.microsoft.com/en-us/library/ms679161(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/bb331828(VS.85).aspx

    August 01

    フーリエ級数

    フーリエ何とかというものがさっぱりわからないので、教科書に書いてある次のような数式をもとに計算させてみた。

    周期Tの周期関数 f(t) が下のように展開される。

    image

    OnPaint に直接適当にコードを書く。
    f(t) は、連続してない関数にした。

        public int n;
        public double func(double d) {
            return ((int)Math.Abs(d) % 50 < 25) ? 0 : 50;
        }
    
        public double func_a(double d) {
            return func(d) * Math.Cos(n * 2 * Math.PI / 50 * d);
        }
    
        public double func_b(double d)
        {
            return func(d) * Math.Sin(n * 2 * Math.PI / 50 * d);
        }
    
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            int x;
            double y = 0;
    
            Point prev = new Point(0, 0);
            for (x = 0; x < 300; x++) {
                double a0 = 1.0 / 50.0 * mymath.simpson(-25, 25, 0.001, func);
                y = a0;
                
                for (n = 0; n < 10; n++) {
                    double an = 2.0 / 50.0 * mymath.simpson(-25, 25, 0.01, func_a);
                    double bn = 2.0 / 50.0 * mymath.simpson(-25, 25, 0.01, func_b);
    
                    y += an * Math.Cos(n * 2 * Math.PI / 50 * x);
                    y += bn * Math.Sin(n * 2 * Math.PI / 50 * x);
                }
                e.Graphics.DrawLine(Pens.Black, new Point(x, 200 - (int)y), prev);
                prev = new Point(x, 200 - (int)y);
            }
        }

    * simpson関数はこちら

    すると、こんな感じに表示された。

    25行目のループ条件: n < 2
    image

    n < 5
    image

    n < 10
    image

    本来のグラフ
    image

    ループすればするほど元の四角いグラフに近づいている。
    しかし、その分時間がかかった。

    シンプソンの公式

    シンプソンの公式のプログラムを汎用的にしておく。

    シンプソンの公式は、関数を二次曲線で近似させて積分する方法。
    台形公式より正確な値を出せる、とのこと。

    関数f の、st~ed の間を、刻み幅h以内で積分する。
    hは、刻み数が奇数になってしまった場合には変化する。

        //シンプソンの公式で積分する
    public delegate double simpsonFunc(double d);
    static public double simpson(double st, double ed, double h, simpsonFunc f){
    //刻み数を決める
    int nh = (int)(Math.Abs((ed - st) / h) + 1.0);
    if (nh % 2 != 0) nh++;
    h = (ed - st) / (nh-1);

    int cnt;
    double total = 0;
    for (cnt = 0; cnt < nh; cnt++ )
    {
    double tmpadd = f(h * cnt);

    if (cnt == nh - 1)
    { //最後:そのまま
    }
    else if (cnt == 0)
    { //最初:そのまま
    }
    else if (cnt % 2 != 0)
    { //奇数
    tmpadd *= 4;
    }
    else
    { //偶数
    tmpadd *= 2;
    }
    total += tmpadd;
    }
    return h / 3.0 * total;
    }

    この前のシンプソンの公式
    http://prog-city.spaces.live.com/blog/cns!E5379F11D9E8BB3F!940.entry


    このシリーズの他記事
    http://prog-city.spaces.live.com/lists/cns!E5379F11D9E8BB3F!1047/