2. 自己紹介 • Yuichi Takeda / @ginrou799 • 今 • ミクシィでiPhoneアプリの開発 • iOSの社内研修なども • 本になりました http://goo.gl/OaLUDc • オープンな勉強会として研修をやってます (無料、Androidと隔週) • 昔 • 大学、大学院の専攻は画像処理 今日は昔取った杵柄についてお話します
一か月ほど前に New York Times で紹介されていた記事。 The Pi Machine - NYTimes.com ここで紹介されているのは、なんと驚くべきことに、2つのボールをぶつけるだけで円周率(3.1415...)の値がわかる、という内容。 これだけだと、全然ピンとこないと思うので、もう少し詳しく説明すると、次のようなことが書かれている。 ↓2つのボールを、下の図ように壁と床のある空間に置く。 ↓その後、壁から遠い方のボールを、他方に向かって転がす。 後は、ボールが衝突する回数をカウントするだけで、円周率がわかるらしい。 これでも、なんだかよくわからない。 まず2つのボールが同じ質量である場合を考えてみよう。 まず、手前のボールが他方のボールにぶつかる(これが1回め)。 続いて、ぶつかったボールが移動して壁にぶつかる(これが2回め)。 壁にぶつかったボールが跳ね返ってきて
分数の問題で娘が…。 : 妊娠・出産・育児 : 発言小町 : 大手小町 : YOMIURI ONLINE(読売新聞) http://komachi.yomiuri.co.jp/t/2013/0621/600642.htm のすっかり遅くなってしまったアンサー・ソング 分数が普段使いされない理由 少女:……という訳で、分数で大変な騒ぎだったんです。 禁煙:あらあら、大変ね。 少女:どうして帯分数ってあんなにディスられてるんですか? 禁煙:小学校でやるけれど、その後はさっぱり登場しないからかしら? 少女:でも、そんなのことって人生には他にいくらでもありますよね? 禁煙:あとは小学生にとっては分かりにくいし面倒くさいから?「あんなに苦労したのに全然出てこない、なんだったんだ、あれは?」って感じかも。 少女:なんで帯分数は小学校以外じゃ出てこないんですか? 禁煙:それをいうなら分数というのも、日本
Finbourne, founded out of London’s financial center, has built a platform to help financial companies organize and use more of their data in AI and other models. Even as quick commerce startups are retreating, consolidating or shutting down in many parts of the world, the model is showing encouraging signs in India. Consumers in urban cities are embracing the convenience of having groceries delive
平方根である。sqrtである。私の数学知識は非常に乏しく、かろうじて平方根の何たるかを解するばかりであるが、ふと、平方根を計算するアルゴリズムが知りたくなった。理由は、constexprなsqrtを実装してみたくなったからだ。 日本語では、いい情報がWeb上に存在しないので、ここに書いておく次第。この説明は、私のように数学の知識を持たない人間にも理解できるはずである。 ここで使うのは、バビロニア人の方法(Babylonian method)と呼ばれている、歴史あるアルゴリズムである。この方法は、手動でも、プログラミングでも、非常に簡単に計算できる、大変便利で汎用的なアルゴリズムである。しかも、速度もそれほど遅くない。 √Sに対して、 任意の正の整数を初期値X0と定める(できるだけ平方根に近い値が望ましい) Xn+1を、Xnと S / Xnの平均値とする(平均値は相加平均で求める) 必要な精
前回の「逆数平方根の近似」の続きです。 逆数平方根の近似を利用して平方根関数を実装してみました。 今回の実装ではcrtのsqrt関数と同等にするため0以下の実数に対する処理を加え精度を上げています。 その状態でもcrtのsqrt関数よりかなり高速です。 ついでに逆数平方根関数にも同等の処理を追加しました。 sqrt float sqrt( const float& V ) { if( *(long*)&V <= 0 ) { if( ( *(long*)&V & 0x7FFFFFFF ) == 0 ) return V; long r_bits = 0xFFC00000; return *(float*)&r_bits; } long x_bits = *(long*)&V + 0xFF800000; long y_bits = 0x5F3759DF - ( *(long*)&V >> 1
■UBS 今回は B-Spline 曲線についてまとめたいと思います。 目的は NURBS (Non-Uniform Rational B-Spline) を解説することです。 今後(もうやっているところがあるかも)、モデリングは NURBS が用いられ、 LOD (Level of detail : 奥行きなどによって決まる詳細度)に応じてポリゴン分割して表示、 もしくはハードウェア的に曲面を描くようになるでしょうから、 これを勉強するのは有用なことに思われます。 まず、UBS (Uniform B-Spline) です。 前回、Bezier 曲線を、 x(t) = Σ3i=0 3Ci ti(1-t)3-i Pi, の形に書きました。B-Spline 曲線は、この曲線と同様に、 x(t) = Σni=0 Ni,M (t) Pi, によって、定義されます。但し、 t - ti ti+M -
■どうして3次なの? 前回に続いて、パラメトリック曲線です。前回は、一番簡単な直線の運動を扱いました。 直線は真っ直ぐなので、『曲線』を表現するためにはあまり使われません (他の理由で色々つかえるので、取り上げましたが・・・)。 実際に多く使われ、また、使い勝手がよいものは、3次曲線です。 どうして、3次曲線が良いのでしょうか? ちょっと物理学を考えてみましょう。『慣性の法則』を思い出して下さい。 力が加わっていなければ、動いている物は真っ直ぐに進むというやつです。 『慣性の法則』は、物体の位置や速度によりません。つまり、位置だけでなく、 速度も曲線の変数として、自由に設定できるということです。 さて、どうしてそれが3次曲線なのでしょうか?それは、設定できる変数が、 初期位置、最終位置、初期速度および最終速度の4つだからです。 一般に、自由度を n 個持つ曲線は、n - 1 次の多項式で表
はじめに 今回は曲線の作り方を解説します。 「?…なぜ曲線?」 と思われるかもしれませんが、 曲線を作れるようになると、美しい軌道をする敵を簡単に作れるようになります。 実際、市販のシューティングゲームの開発現場では、 曲線を使って、動きのスクリプトを生成しているみたいです。 曲線を使うメリット 例えば、放物線を描いて動く敵を作るとします。 その場合に、 x 0 1 2 3 4 5 6 7 8 y 16 9 4 1 0 1 4 9 16 という座標のパターンを持つとします。 こうすると、その敵のスクリプトは、 move 0,16 move 1,9 move 2,4 move 3,1 move 4,0 move 5,1 move 6,4 move 7,9 move 8,16となります。 これはこれで細かく動きを制御できていいのですが、 この座標のデータを作るのが大変ですよね。 そこで、曲線の
数式が生んだ宇宙:「3次元フラクタル」の画像ギャラリー 2009年12月17日 サイエンス・テクノロジーデザイン コメント: トラックバック (0) 魅惑的なフラクタル図形として表現される『マンデルブロ集合』。数学マニアのグループが、これに近い画像を3次元で生成する試みに挑戦した。 マンデルブロ集合を3次元に 彼らはその成果を「Mandelbulb(マンデルバルブ)」[bulbは球の意]と呼んでいる。3Dレンダリングによるこれらの画像は、球体に反復アルゴリズムを適用することで生成された。 3次元の球上の各点に、同じ計算が何度も繰り返し適用されている。これは、通常の2次元のマンデルブロ集合が無限に自己反復を繰り返すことで複雑な図形を描き出していることと、発想としては似通ったものだ。 [フラクタルは、フランスの数学者ブノワ・マンデルブロ(Beno将ツt Mandelbrot)、ャニウニ靴心審悗
どうも。こんにちは。梅雨明けも宣言されたそうで、いよいよ暑くなりますね。今回は単振動方程式方程式を用いた最適化のお話です。 高校物理でも登場するバネの方程式、単振動方程式 を簡単な四則計算に分解する方法を紹介します。 まず色々な数学的背景を押しやって、イメージだけ説明すると、物体の位置x、速度v、加速度aの関係は となるので、asの式で考えると、 v += a; x += v; という風になります。ここで単振動の微分方程式から、 a = -K * x; であるから、あわせると、 v -= K * x; x += v; という風になります。下がサンプルで、初期値(_v, _y)やKなんかを変えて挙動が変わることが分かります。 ここでのポイントはvに対して最初の式で破壊的な操作を行っていることです。 v_temp = v; v -= K * x; x += v_temp; 等とすると、ずれてし
本プログラム群は、下記2~5のプログラムを個別にコンパイルした後、1個のライブラリ化することを前提に作成されています。 各使用例は、そのライブラリを使用した例です。 但し、各プログラム群は、独立性が高い為、ほとんどのプログラムが若干の変更で独立して使用できます。
The contents of this web site are © Copyright Paul Bourke or a third party contributer where indicated. You may print or save an electronic copy of parts of this web site for your own personal use. Permission must be sought for any other use. POV-Ray: A Tool for Creating Engaging Visualisation of Geometry Various notes on polygons and meshes Includes Surface (polygon) simplification, Clipping a
3Dのオブジェクトを画面に描画するための幾何学的な計算を考えてみましょう。 まず(全ての)基準となる座標系を定めます。これをワールド座標とかグローバル(大域)座標とか 絶対座標とか呼ぶようです。うちではワールド座標と呼ぶことにします。 次にオブジェクトに回転平行移動などを施してワールド座標でのオブジェクトの位置・方向を決定します。 見かたを変えてオブジェクトがオブジェクトに固有の座標系(これをローカル座標と呼びます)を基準として 作られていると考えると、オブジェクトのワールド座標から見た位置・方向というのは ローカル座標のワールド座標から見た位置・方向であり、ワールド座標でのオブジェクトの 位置・方向を決定するというのはローカル座標からワールド座標への変換ということになります。 …わかりづれ〜な。まぁやってることはどっちも同じです。こいつをワールド変換と呼びましょう。 さ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く