ちと仕事で複合曲線を動的に描画する必要があったのだけど、ベジェだとあんまきれいにできなくってちとはまり中。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
「curveToの憂鬱」への2件の返信
この前の某案件では、思ったように曲線が引けなくて、ポイント400個ぐらい管理して、全部直線で引きましたよ。
orz
それやるとウチの場合はCPU負荷高くなっちゃって使い物にならなくなるんで、トゥーインでやると思いマフ。