タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

AlgorithmとProgrammingとCGに関するagwのブックマーク (62)

  • Pythonで作られた「エボリューショナリ アート」画像

    遺伝学的プログラミングに基づき、生物学的な進化のアルゴリズムによってRGBの各要素を枝分かれさせてできあがったアートです。 動物の体表の模様などのアルゴリズムと理屈的には同じ。再読込する度に違う模様が出てくるので非常に面白い。ソースコードもダウンロードできます。 閲覧は以下から。 Evolve | Vote on organisms http://artdent.homelinux.net/evolve/vote/ 今まで生成された画像の一覧 http://artdent.homelinux.net/evolve/view/ ソースコードのダウンロードは以下から。 http://artdent.homelinux.net/evolve/about/ Python、Django、numarray、Python Imaging Libraryを使っているそうで。 「エボリューショナリ アート」

    Pythonで作られた「エボリューショナリ アート」画像
  • フリーハンドでベジェ曲線を描く

    点列をベジェ曲線に変換する BezierGenerator.js のサンプルです。 このサンプルは Firefox, Opera くらいでしか動きませんが、BezierGenerator.js 自体に環境依存性はありません(たぶん)。

  • ベジェ曲線 - こども(てれび)

    フリーハンドでベジェ曲線を描く 更新 バグとった。重くてイベントを取りこぼすので、リアルタイムにやるのはあんまり現実的じゃないかもなぁ

    ベジェ曲線 - こども(てれび)
  • ベジェ曲線の話続き - こども(てれび)

    写し元の Inkscape のコードはかの有名な、といっても僕は今知ったけど、Graphics Gems に載ってるコードそのままなのね。 http://www.acm.org/pubs/tog/GraphicsGems/gems/FitCurves.c

    ベジェ曲線の話続き - こども(てれび)
  • 2006-06-02

    早朝に大学に。今日のS田研究室における発表資料を作ってみる。っていうか、ほんの1時間やそこらで作れる資料というのに問題があるような気もしなくはないが、実際のところは数日前の日記をそのままスライドにしただけという罠。 数日前の日記(id:succeed:20060526)において、 ということを書いた。書いたのだが、実は間違っているのではないだろうか、と今さっき気づいた。 この背景にあるのは、という式だ。確かに、GrayScaleとの兼ね合いを考えると多少正しいような気がするのだが、やっぱりおかしい。 何がおかしいかといえば、(255, 255, 255)という色のベクトルの大きさが一定にならない。すなわち、最大のベクトル長が一定でないというのは、あまり良くないだろう。 これを修正するためには、というようなa, b, cを求めればよくなる。 そうなると、結局のところ、 というa', b',

    2006-06-02
  • 多次元配列であれこれ 続き - hibomaの日記

    2次元の配列でビットマップをまねて、左右対称に反転/上下対称に反転 を再現する操作 の続きをやります。 今度は2次元の配列(行列?平面?)を「90度回転」する操作をしてみようと思います。画像を90度回転する ってよくやるよね。写真の縦横の向きを変えたりとか。その操作の再現。 っとその前に前日のコードのリファクタリングからやります。 my @A = qw(a1 a2 a3 a4); my @B = qw(b1 b2 b3 b4); my @C = qw(c1 c2 c3 c4); my @D = qw(d1 d2 d3 d4); my $XY = [ \(@A , @B , @C , @D) ]; 配列は全部無名配列にしてリファレンスとしてぶっ込みました。入れ子になったこの配列をこれからごにょごにょします。 配列に対する操作は sub y_reverse { my $ref = shift;

    多次元配列であれこれ 続き - hibomaの日記
  • 多次元配列 ->「ビットマップ」? - hibomaの日記

    唐突ですが my $A = ['a1' , 'a2' , 'a3' , 'a4']; my $B = ['b1' , 'b2' , 'b3' , 'b4']; my $C = ['c1' , 'c2' , 'c3' , 'c4']; my $D = ['d1' , 'd2' , 'd3' , 'd4']; my @XY = ($A , $B , $C , $D ); #もしくはこっちの方が書き方キレイかな? # #my @A = qw(a1 a2 a3 a4); #my @B = qw(b1 b2 b3 b4); #my @C = qw(c1 c2 c3 c4); #my @D = qw(d1 d2 d3 d4); # #my @XY = \(@A , @B , @C , @D); 入れ子になったこんな配列があります。この配列はイメージとして # 1 2 3 4 # #A a1 a2 a3

    多次元配列 ->「ビットマップ」? - hibomaの日記
  • Poisson Matting改良計画 - 飲み物だから太らない

    スタートしました。S田先生もそうなのだけれど、先生方のすごいのはその専門分野というよりもそれ以外の分野における嗅覚だと再認識。 せっかくなので、Poisson Matting自体の話から。そもそも、画像(I)とは前面オブジェクト(F)と背景(B)の組み合わせで表現されている。これを式で表現すると次のようになる。 で、これをx方向y方向に対して偏微分を行うことで、 という式が出来る。ちなみに、 である。 さて、ここでこの式の意味を考えてみると、というのがオブジェクトと背景の境目で1から0に変化する。それに対して、やというのはオブジェクトや背景の変化率である。 今、オブジェクトと背景を切り分けたいという問題を考える。この場合、オブジェクトや背景の変化率はそれほど大きくは無いという仮定をおく。そうでなければ、オブジェクトと背景をきちんと切り分けることは難しいだろう。 すると、とは無視することが出

    Poisson Matting改良計画 - 飲み物だから太らない
  • カラー画像のモノクロ変換公式について。 一般的にカラー画像(RGBカラー)をグレースケールに変換(モノクロ256階調)する時の公式はどのようなものでしょうか…

    カラー画像のモノクロ変換公式について。 一般的にカラー画像(RGBカラー)をグレースケールに変換(モノクロ256階調)する時の公式はどのようなものでしょうか? 赤の値をR、緑の値をG、青の値をBとして、 カラー画像 →      グレースケール (R, G, B) → ( (R+G+B)/3, (R+G+B)/3, (R+G+B)/3 ) ではないような気がするのです。 このあたりのことについてまとめられているサイトがあれば、教えてください。 一般的な変換公式を求めていますが、多少バリエーションのある公式もあれば、そちらもお願いいたします。 ズバリな回答を見つけ次第、その方にポイント全部ドカンと払って質問を終了します。そうでなければ、適当に配分します。 よろしくお願いします。

  • [JavaScript] Animation.Cube - サイコロ回転エフェクト (rotating cube animation)

    Kawa.netxp [JavaScript] Animation.Cube - サイコロ回転エフェクト (rotating cube animation) Animation.Cube クラスは、JavaScript のみでサイコロ回転風の アニメーションエフェクト(rotating cube animation)を実現するライブラリです。 事前に画像ファイルを加工(拡大縮小や分割処理)せず、JavaScript のみで リアルタイムにアニメーション処理を行います。 2画像の切替えエフェクト処理用、または、 サイコロの4面に貼り付けた画像をループで回転させるような処理に利用できます。 画像の拡大縮小処理が入っているため、 ラスタスクロール よりもマシン負荷が高いようです。 Opera だと少しスムーズなようです。 画像サイズを抑えれば、Celeron 2.4GHz 機でも十分に回転してく

  • 問題発生 - 飲み物だから太らない

    Poisson Mattingについて、二つの問題が発生。 一つ目。オーダーに関する問題。 ある点(x,y)から、ある領域への最短距離を求めたい(正確には、その領域内の一番近い点を求めたい)。領域は、円や長方形のような形はしていなくて、メソッドisHoge()を呼ぶことで、O(1)で求められる。 このような場合に、例えば int min = width * width + height * height; for(int i = 0; i < width; i++){ for(int j = 0; j < height; j++){ if(isHoge(i,j)){ int d = (i - x)^2 + (j - y)^2; if(d < min) min = d; } } } return min; という方法を取ることを考えてみると、これは確かに答えを返してくれる。ただし、O(wid

    問題発生 - 飲み物だから太らない
  • 曲線 - ゲームプログラムめも日記

    はじめに 今回は曲線の作り方を解説します。 「?…なぜ曲線?」 と思われるかもしれませんが、 曲線を作れるようになると、美しい軌道をする敵を簡単に作れるようになります。 実際、市販のシューティングゲームの開発現場では、 曲線を使って、動きのスクリプトを生成しているみたいです。 曲線を使うメリット 例えば、放物線を描いて動く敵を作るとします。 その場合に、 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となります。 これはこれで細かく動きを制御できていいのですが、 この座標のデータを作るのが大変ですよね。 そこで、曲線の

    曲線 - ゲームプログラムめも日記
  • Amazon.com: High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting (The Morgan Kaufmann Series in Computer Graphics): Reinhard, Erik, Ward, Greg, Pattanaik, Sumanta, Debevec, Paul: Books

  • 2006-05-01

    今目が覚めました。もうダメ人間の仲間入りです。いや、前からか。 azouno氏からの質問もあったので、塗りつぶしのコードを書きます。 enum MapState{ LINE, Painted, UNKNOWN }; class Map{ MapState map; int width, height; Map(int x, int y){ this.width = x; this.height = y; this.map = new MapState[x][y]; for(int i = 0; i < x; i++) for(int j = 0; j < y; j++) this.map[i][j] = MapState.UNKNOWN; } isValid(int x, int y){ return (0 <= x && x < width && 0 <= y && y < height

    2006-05-01
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 最小二乗法 [物理のかぎしっぽ]

    横軸に時間,縦軸に位置をとり,これをグラフにしてみます (説明のため,グラフ中では横軸を x,縦軸を y と書いています). 厳密な等速直線運動ならば,このデータは直線で結ばれ,その傾きは速度を表します. しかし実験には誤差がつきもので,ものさしの誤差, 測定者のくせによる誤差,測定環境の変化による誤差など,いろいろな誤差が存在します. ですから,測定データは一直線上には並びません.だからといってデータの各点を のように繋げて折れ線グラフにしてもあまり意味がありません. このグラフの傾きは速さを表すはずですが, 折れ線グラフから傾きを求めることはできないですし, そもそも誤差を含んでいる点をそのまま結んでも仕方がありません.そこで のようにどのデータポイントからもあまり外れないように直線を引くのが妥当だといえます. 直線は1次関数ですから y = ax + b とおけ

  • 最小二乗法について

    最小二乗法は計測データの整理に使われる方法である。 n個のデータ(x1,y1),(x2,y2), .......(xn,yn)が得られたとする。 に最もフィットする直線をy=ax+bとすると、 でa,bが求められる。 以下詳しい解説が書いてあります。解説は上から順番に書いてありますが、適当に飛ばし読みしたいときは、以下をクリックしてください 最小二乗法の目的 最小二乗法の考え方 具体的な計算方法 一般的な場合 車が一定速度で動いているとする。それを測定して時間と位置との関係をグラフに表すと となる。 しかし、実際は測定誤差があるので、こんなふうにきれいに並ぶことはない。 こんなふうに並んだものに対して、エイヤっと線を引いてしまうわけである。 そして、この直線の傾きから車の速度を求める。 この、エイヤっと引いた線を、人力ではなく、もうすこしもっともらしく計算で決定しましょうとい

  • osakana.factory - ブレンドモード詳説

    PhotoShop に初めて触れた人は、あまりに多彩なレイヤーや描画の ブレンドモード に戸惑うのではないでしょうか。しかも、PhotoShop のヘルプの記述は抽象的で感覚的な表現が多いので、いまいち用途や意味が不明だったりします。このドキュメントでは、実際に絵を描く上で役に立ちそうな実践的なサンプルを交えて、全ブレンドモードの意味を考えていきたいと思います。 このドキュメントでの変数や用語を定義しておきます。話を厳密にするために書いておくものですので、よく分からなければ読み飛ばしてもかまいません。Pa、Pb、Pn の3つの変数を使います。 Pa : 重ねられるレイヤー(下)の任意のチャンネル( RGB 3つのうちのどれか)の任意のピクセルの明度(PhotoShop のヘルプで「基色」とされているもの)で、 0~255 の整数で表す。Pb : 重ねるレイヤー(上)上の、Pa と同じチャ

  • がくのほめぱげ - 色の結合演算について(その1)

    Adobe Photoshop,Paint Shop Pro,Gimp などのペイントツールにおいて、「レイヤー(Layer)を重ね、 描画モード(Blend Mode)を切り替え、透過率(Opacity)を与える。」のような使い方は、フォトレタッチだけではなく、 お絵描きするときにも頻繁に行われていることと思います。 描画モード(ブレンドモードとも呼ぶらしい)の操作については、画像を用いて具体的に説明しているホームページをよく見かけますが、 色を結合(合成)するための計算方法として、紹介、解説している書籍、ホームページとなると、ほとんど見かけませんね。 #これって大きく取り上げちゃダメな話なのかなぁ・・・?(^^; このページでは、この描画モードを数式として示します。 ソフトウェア開発者向けの非常にマニアックな内容となっていますが、 描画モードをサポートしているペ