« オレはオマエにとって必要か? | Home | 仮面ライダー響鬼 »

Jan 102005

curveToの憂鬱

thFlash.gifちと仕事で複合曲線を動的に描画する必要があったのだけど、ベジェだとあんまきれいにできなくってちとはまり中。clipをattachしてラグランジェ補間してスプライン描画とかは別にいいんだけど、drawing methodのcurveToっていまいち使いこなせていない。(どーも各頂点から生成した曲線をコントロールポイントとアンカーポイントへ置換するところで鬱になる・・)3次元ベジェにすればきれいになるという話なのだけど頭がついていっておりません。歳だ・・・。
そもそも円を描くのに

function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void {
mc.moveTo(x+r, y);
mc.curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
mc.curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
}

とかかなり面倒臭いです・・。(まぁ、これぐらいならまだいいんだけどさ)
参考:Introduction to Macromedia Flash MX Drawing Methods
Advanced drawing methods in Macromedia Flash MX

2 Comments

この前の某案件では、思ったように曲線が引けなくて、ポイント400個ぐらい管理して、全部直線で引きましたよ。

orz

それやるとウチの場合はCPU負荷高くなっちゃって使い物にならなくなるんで、トゥーインでやると思いマフ。

Leave a comment

Search and Archives