タグ

ブックマーク / nutsu.com (14)

  • NUTSU » study OpenGL

    iPhoneのFlash禁止令から暫く、OpenGL(とC言語)の勉強を始めました。ほんまはXcodeでObject-Cやるところですが僕にはMacがありません、、。なのでCの復習から手をつけようと。で、どうせなんでOpenGLきちんとしたことなかったのでこれもやろうと。そんな感じで日々過ごしております。 まずはCの復習。Cに関してはWeb上に情報が豊富なので勉強するには十分なんですが、あんま時間がないので通勤電車でを読む作戦にしました。ただ技術系のはどれも太くて重いし読みやすくない(はよ電子出版きて)。それに入門とか図解系のやつはいらんところ多いし、、ってので書店で物色したところこの「はじめて学ぶCの仕組み」にしました。 このは変数やらポインタやら、ようはバイト数とアドレスを意識的に定着させるような書き方になってるようでAS書きの僕として読んでて楽しい。ASで楽なことはCでは面

  • NUTSU » x = x + (d – x) / 2.0 のこと

    yossyさんが「x = x + (d – x) / 2.0 を時間に基づく関数に変換する」というエントリをアップしていたので、少し違う方面から解いてみる。結論から言えば結果は同じなんですが…、こういった問題はわりと見た目?から考える性格なのでちょっとやってみます。というかこういうこと考えるの好きで…。 とりあえず問題の式です。dは目標値、kは比率(0<k<1)です。 x' = x + ( d - x ) * k (式1) この式について「時間から現在値」と「任意の値までにかかる時間」を算出するということですね。見た目から入るのでとりあえずグラフでイメージを書きます。x0 は x の初期値で、hi 目標値までの距離 ( d – xi ) を表しています。 グラフを見ると現在値である x より、目標値までの距離 h が単純な推移をしているような感じです。試しに式にしてみます。 [xの式] x

  • NUTSU » [jsfl]Tweenerの_bezier用パラメータ書き出し

    Tweenerにはベジェ曲線上をトゥイーンさせるプロパティ「_bezier」があるのだけど、曲線の座標を指定するのが面倒だったりなかったりします。できればガイドのように自分で描いた曲線をトゥイーンさせたい。で、ペンツールなどで描いた曲線からTweenerの_bezier用のスクリプト出力する簡単なJSFLをつくってみた。 とりあえず、できあがりはこんな感じ。グレーの曲線がペンツールで描いた曲線です。 手順としては、まず下のスクリプトを適当なファイルに保存します。例えば「makeBezierTweenOption.jsfl」とかいうファイル名で。 //**************************************************************************** // Script for Tweener _bezier Option // // sa

  • NUTSU » Frocessing on FLARToolKit

    えー、AdobeMAXでちらっとSaqooshaさんのFLARToolkitにものっかります的な話をしたんですが以下がそれです。Saqooshaさんが「FLARToolkitスタートガイド」を用意してくださっていたので、Frocessing版をつくってみました。つくったと言ってもほとんど変えてないですけど。カメラんとことか、計算結果の行列アテぐらいです。 とりあえずビデオはこんな感じ。(というか vimeo 使ってみたかっただけというか…) ダウンロード まとめたものです。マーカーはSaqooshaさんのブログのやつと同じです。 //nutsu.com/spark/FLAR_F5_start.zip ※何気に動かなくなっていたので「FLARToolkit 2.5.3」版で更新しました(2010/5/25) 使い方 とりあえず、遊んでみるには「SimpleCubeF5.as」の以下のところを

  • NUTSU » [as]Tween on Spline Curve

    最近、Tween系のライブラリは群雄割拠の様相を呈しているけど、僕は相変わらずTweenerです。慣れてるし量的な感じになると自前実装だし。 てなわけで、Tweenerの拡張をひとつ。Tweenerにはベジェ曲線上をTweenさせる「_bezier」があるのだけど、それのスプライン曲線版 「SplineModifiers」 です。 できあがりはこんな感じ。ポイントドラッグして曲線を変えてみてください。 使い方はこんな感じ。 import caurina.transitions.Tweener; //初期カー SplineModifiers.init(); //_splineで使えるよ Tweener.addTween( moveObj, { x:targetX, y:targetY, time:2, _spline:[ {x:x1,y:y1}, {x:x2,y:y2}, {x:x3,y:y

    dealforest
    dealforest 2009/02/06
    Tweener の拡張のひとつ スプライン曲線版
  • NUTSU » RADIOHEADのアレ

    RADIOHEADのアレ( RA DIOHEA_D / HOU SE OF_C ARDS – Google Code )を僕もやってみた。データの説明とかあまり見てないので色のデータが??だけど、とりあえず僕のところにもトムヨーク増やしてみました。 BitmapData の setPixel32() です。 それにしても重い…。しばらく回しているとろくろ首にみえてきた…。もっといろいろあそんでみたい。 追記 なんだか、note.xさん、MASDAさん、からリンクを張っていただいて恐縮しております。僕のサンプルは、frocessingのテストでつくってたやつなので、ソースを上げておくことにしました。以下ソースです。 package { import flash.display.MovieClip; import flash.display.StageQuality; import org.l

    dealforest
    dealforest 2008/07/27
    RADIOHEAD
  • NUTSU » Spark project 勉強会 #01 いってきました

    7/22に開催されたSpark project 勉強会 #01に行ってまいりました。拙いながら発表までさせていただいてありがたい限りです。 他の方の発表内容は非常に勉強になる上、プレゼンの仕方自体も勉強になって反省反省です。というか喋る前から反省モードでしたが。 とはいえ、自戒の意味もこめて使用した発表資料をアップしたいと思います。他の方と比べて明かにスライド数が少ないし、スライドだけ見ても意味不明なのはこれからの精進ということで。 //nutsu.com/spark/spark01_slides.html みなさんのあたたかさに救われた今日この頃です。感謝感謝です。

  • NUTSU » [f5]簡単な画像を描画できるようにしてみた

    ぼちぼちとfrocessingをごにょごにょしているわけですが、となりの人が画像ぐらい描けないといまいちピンとこないなぁと。ということで簡単な画像描画のメソッドを追加してみた。 こんな感じです。500個ぐらいです。 なんとなくそれっぽいなぁ、という感じ。 どこかにいる誰かの為のリンク。 SparkProject-Frocessing asdoc(https://www.libspark.org/htdocs/as3/frocessing/) ※asdoc は Spark project に移動しました。

  • NUTSU » [as]色のブレンド(アルファ版)

    色のブレンドにアルファチャンネルを追加してみました。アルファがある場合に、どのようにして色が求められるかいまいちよくわからなかったのですが、Processingの「blendColor()」で出力される値を眺めながら謎解き気分でやってみました。なわけで、少々怪しいところがあると思いますが。 ブレンドする色の背面色をCb、前面色をCfとした場合、アルファチャンネルの値は単純に加算するだけでよいみたい。 alpha = Math.min( Cb.alpha + Cf.alpha, 1.0 ); ブレンドされる色の値についてCbのアルファは関係ないようで、CbのRGB、CfのARGBで求めることになります。 で、基的には下のような式で求められるみたい。 Cb*( 1 - Cf.alpha ) + (blendcolor)*alpha ただ、あくまで基的にであって、そうでないブレンドもあったり

  • NUTSU » [as]3次ベジェ・2次ベジェ変換

    正直忘れてしまいそうなのでエントリしてみようと思いました。説明はぐだぐだやもですが…。で、3次ベジェから2次ベジェの近似変換について簡単に書いてみます。ソースには2次から3次も書いてありますが、使うことあるのかなぁ的でメモ的に書いているだけです。 今回実装している3次から2次の変換は、まず3次ベジェが一つの2次ベジェで表現できるかチェック、その後段階的に2次ベジェの数を増やして複数の曲線で近似する流れになっています。 一つの2次で表現できるかは下図のような考えで行います。 3次ベジェのコントロール点の延長にある交点を、2次ベジェのコントロール点にしてみるわけです。大抵の場合一致はしません…。 次に複数の曲線の組み合わせを試してみます。基的な方法は3次ベジェを二つの2次ベジェで表現してみることです。 この方法を基として、最初に3次ベジェを二つの2次ベジェ、次に3次ベジェを分割し、それぞれ

    dealforest
    dealforest 2008/04/28
    ベジェ変換のソース付き
  • NUTSU » [as]正規乱数

    正規乱数というのは、統計確率の分野では形而上学的存在ではなかろうかと思われる正規分布(ガウス分布)に従う乱数のことで。今回はその乱数を生成するスクリプトです。 乱数の計算は、ボックス=ミューラー法を用いています。 package { public class Random { private static var generate_nrand_flg:Boolean = false; private static var generate_nrand_tmp:Number; /** * 正規乱数 */ public static function normal():Number{ if ( generate_nrand_flg = !generate_nrand_flg ) { var u1:Number = Math.sqrt( -2.0*Math.log( Math.random()

  • NUTSU » [as]3次ベジェ切り出し

    12月第1週でゲーム3購入。なんとも年末気分になっています。前回の流れで3次ベジェ曲線の切り出しを書いてみます。 前回のエントリーのように、3次ベジェをtの関数としたとき、t=t0、t=t1での座標は、fig1のようにtp0、tp1となるとします。この間の曲線を切り出すわけですが、次のfig2のような手順でいけます。 つまり、一度tp0で切り分けて、切り分けられた曲線の一方をtp1で切り分けるんですね。手順としては前回の切り分けを2度行うわけです。 ただ、2度目の切り分け(fig2b)のとき、tp1を示すt値がt1ではなくなります。基準となる曲線が変わるので、t値も変化するわけです。で、t=t1に対応するような、t1’を導きます。 t値を相対的にみると、t1は、長さ 1-t0 の内の t1′ となり、1-t0 を 1 とすると、t1’=(t1-t0)/(1.0-t0) となります。 これ

  • NUTSU » [as]直線と直線の交点

    直線と直線の交点を計算してみようと思います。 2つの直線、「ax+by+c=0」と「gx+hy+i=0」があるとき、それらが交わるかどうかは、平行であるかどうかを調べればわかります。これは外積で判別できます。 ベクトルv1[x,y]とベクトルv2[x,y]の外積 v1.x*v2.y - v1.y*v2.x = v1.length*v2.length*Math.sin(radian) この場合、ベクトル(a,b)とベクトル(g,h)の外積が0の場合、sinが0になるので平行ということになります。 で、交点の位置は、下図のようにベクトルv1、ベクトルv2をおいたとき、ベクトルwは、w=k1*v1+k2*v2 で表現できます。k1,k2は係数で、この係数を求めます。 このとき、Dに注目すると、これは直線「ax+by+c=0」と原点の距離で、-c/v1.length です。一方、v1とv2のなす角

  • NUTSU » [as]円と円の交点

    半径r0 中心(x0,y0) の円と、半径r1 中心(x1,y1) の円との交点を、ActionScript的に求めてみます。ActionScript的と言っても、プログラムをそれで記述するだけのことですが… まずは、中心間の距離Lから入ります。 //円座標 var p0:Point = new Point(x0,y0); var p1:Point = new Point(x1,y1); //中心間ベクトル var dv:Point = p1.subtract(p0); //距離 var L:Number = dv.length; //距離がLの場合 if( L==(r0+r1) ){ //交点1つ(接点) }else if( L<(r0+r1) && L>Math.abs(r0-r1) ){ //交点2つ }else{ //交点なし } 接点の場合は、中心間ベクトルの距離r0の地点なので

  • 1