ActionScript: 2008年6月アーカイブ
スプライン補間があんまり混雑な計算になってしまうので
いろいろ探してたら「Catmull-Rom 補間」なるものを知りました。
p0 から p3 間にある点、p1、p2を通過する曲線を求めます。
得られる値は p1 から p2 までです。
Processing の curve() といっしょ。(←不確かですが...)
ただ Graphics.curveTo() で描くのはちょっと難しいっぽいです。
角っこがポコってなる。
3次ベジェをきっちり定義できれば curveTo() も使えるかも。
デモ(開曲線)
デモ(閉曲線)
参考 : http://markun.cs.shinshu-u.ac.jp/learn/cg/cg3/index5.html
いろいろ探してたら「Catmull-Rom 補間」なるものを知りました。
function CatmullRom(p0:Number, p1:Number, p2:Number, p3:Number, t:Number):Number
{
var v0:Number = (p2 - p0) / 2;
var v1:Number = (p3 - p1) / 2;
var t2:Number = t * t;
var t3:Number = t2 * t;
return (2 * p1 - 2 * p2 + v0 + v1) * t3 +
( -3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
}
t には 0.0 から 1.0 の係数が入ります。p0 から p3 間にある点、p1、p2を通過する曲線を求めます。
得られる値は p1 から p2 までです。
Processing の curve() といっしょ。(←不確かですが...)
ただ Graphics.curveTo() で描くのはちょっと難しいっぽいです。
角っこがポコってなる。
3次ベジェをきっちり定義できれば curveTo() も使えるかも。
デモ(開曲線)
デモ(閉曲線)
参考 : http://markun.cs.shinshu-u.ac.jp/learn/cg/cg3/index5.html
