‘as3’ タグのついている投稿

カラーコードについて

2009 年 1 月 3 日 土曜日 by key

BOW cARdでは、ARToolKitで使われるマーカー画像と違い、5×5のカラーコードを使っています。これについて説明します。

ARToolKitでは、ARアプリケーション製作者が用意したマーカー画像をアプリケーションが保持し、実行時に得られたスクエアのそれぞれについて、保持しているマーカーと一致しているか照らし合わせる仕組みになっています。
好きな画像をマーカーとして使える手軽さがありますが、マーカーの種類が多くなると照らし合わせの負荷が大きくなるほか、各マーカーを事前に知っておく必要があるという制約があるため、マーカーを2次元コードにすることでこれらを解決しました。

(more…)

「AS3で半径小さい円を描いて拡大したらつぶれていて~」の原因を検証

2009 年 1 月 2 日 金曜日 by key

先日nitoyonさんの AS3で半径小さい円を描いて拡大したらいびつになってる にコメント書かせてもらったのですが、推測のままだったので検証してみました。

「drawCircle内部で行われている描画の各座標が1twipで丸められている」という仮説なので、drawCircleのコードを見て丸めてやれば良いのでは…と思ったんですがdrawCircleのコードが見れないですね。はいはい書きます書きます。

  1. /**
  2. * flash.display.Graphics#drawCircle再実装
  3. * コードは推測。でも合っているっぽい
  4. */
  5. private function drawCircle(graphics:Graphics, x:Number, y:Number, radius:Number):void {
  6.     var cradius:Number = radius * CONTROLPOINT_RADIUS;
  7.     graphics.moveTo(x + radius, y);
  8.     for (var i:uint=0; i<8; i++) {
  9.         var ca:Number = (i + 0.5) / 8 * Math.PI * 2;
  10.         var aa:Number = (i +   1) / 8 * Math.PI * 2;
  11.         graphics.curveTo(
  12.             x + Math.cos(ca) * cradius, y + Math.sin(ca) * cradius,
  13.             x + Math.cos(aa) * radius, y + Math.sin(aa) * radius
  14.         );
  15.     }
  16. }

この内部で使われているmoveToとcurveToに渡す座標を、拡大後の0.05pixelに相当する大きさで丸めて同じ表示になれば成功。

コード全体と結果はwonderflで。