<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jp.ferv.blog &#187; BezierSegment</title>
	<atom:link href="http://ferv.jp/blog/tag/beziersegment/feed/" rel="self" type="application/rss+xml" />
	<link>http://ferv.jp/blog</link>
	<description>「ActionScriptは素晴らしい。コンパイルする価値がある。」って偉い人が言ってた。</description>
	<lastBuildDate>Sun, 15 Aug 2010 00:42:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>二次ベジェから三次ベジェへの変換</title>
		<link>http://ferv.jp/blog/2009/10/29/quadraticbeziersegment-tocubic/</link>
		<comments>http://ferv.jp/blog/2009/10/29/quadraticbeziersegment-tocubic/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 10:33:41 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=1033</guid>
		<description><![CDATA[
二次ベジェのアンカーからハンドルまでを2/3した点をハンドルにすると三次ベジェになる。三次ベジェを二次ベジェに変換するのは、解析的には解けなさげ。
QuadraticBezierSegment.toCubic()に [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=600;height=400;" href='http://ferv.jp/blog/wp-content/uploads/2009/10/toCubic.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/toCubic.png" alt="toCubic" title="toCubic" width="465" height="150" class="alignnone size-full wp-image-1034" /></a></p>
<p>二次ベジェのアンカーからハンドルまでを2/3した点をハンドルにすると三次ベジェになる。三次ベジェを二次ベジェに変換するのは、解析的には解けなさげ。<br />
QuadraticBezierSegment.toCubic()に実装した。Sparkにコミット済み。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/29/quadraticbeziersegment-tocubic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PolynomialGenerator</title>
		<link>http://ferv.jp/blog/2009/10/28/polynomialgenerator/</link>
		<comments>http://ferv.jp/blog/2009/10/28/polynomialgenerator/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 09:54:40 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>
		<category><![CDATA[Polynomial]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=1013</guid>
		<description><![CDATA[
QuadraticBezierSegment/CubicBezierSegment の getTimeForX()/getTimeForY()/getTimes() メソッドで使ってる Polynomial.solv [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=800;height=800;" href='http://ferv.jp/blog/wp-content/uploads/2009/10/PolynomialGenerator.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/PolynomialGenerator.png" alt="PolynomialGenerator" title="PolynomialGenerator" width="465" height="150" class="alignnone size-full wp-image-1016" /></a></p>
<p><a href="http://www.libspark.org/wiki/dsk/BezierSegment">QuadraticBezierSegment/CubicBezierSegment</a> の getTimeForX()/getTimeForY()/getTimes() メソッドで使ってる Polynomial.solve() の演算誤差が恐かったのでデバッガ作った。</p>
<h2>Polynomial クラスとは</h2>
<p>「ax^n + bx^(n-1) &#8230; + vx + w で表される実数の体から成る一変数多項式」っていう高校くらいで習うかなり限定された多項式を、高校くらいで習う公式+αな公式でいじるクラスで、グラフ描くとかそういうことが最終目的じゃなくて演算上必要な代数方程式をわりとさくっと扱えたらいいなくらいのクラス。<br />
# 某ブログのコメント欄で見たけど、「flashでただ数学やってどうすんの？」とかいうコメントは自分の日記とかに書いてほしい。数学やるためにAS使ったわけじゃなくて、BezierSegmentを操作する過程で必要だったから数学使ったってだけの話。</p>
<h2>このデバッガでやってること</h2>
<ol>
<li>2つの一変数多項式をそれぞれ assign() メソッドで x = -17 ~ 17 を代入し、グラフを描画。</li>
<li>2つの一変数多項式をそれぞれ solve() メソッドで実数解を求め、 x 軸との交点として点を描画。</li>
<li>2つの一変数多項式を equals() メソッドで比較。</li>
<li>2つの一変数多項式を add() メソッドで加算。</li>
<li>2つの一変数多項式を subtract() メソッドで減算。</li>
<li>2つの一変数多項式を multiplicate() メソッドで乗算。</li>
<li>2つの一変数多項式をそれぞれ differentiate() メソッドで微分。</li>
<li>2つの一変数多項式をそれぞれ integrateIndefinite() メソッドで不定積分。</li>
<li>2つの一変数多項式をそれぞれ integrate() メソッドで体積分。</li>
<li>2~9の結果を toString() メソッドでストリング表現にして textField に表示。</li>
</ol>
<p>要は、 clone() メソッド以外全部。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/28/polynomialgenerator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GraphicsPathでdrawEllipse()する</title>
		<link>http://ferv.jp/blog/2009/10/28/graphicspath-drawellipse/</link>
		<comments>http://ferv.jp/blog/2009/10/28/graphicspath-drawellipse/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 20:17:00 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>
		<category><![CDATA[GraphicsPath]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=1006</guid>
		<description><![CDATA[GraphicsPathでdrawRoundRect()する前に、こっちが先だったかも。GraphicsPathでGraphics.drawEllipse()と同様のことができるとどっかで使えそう。QuadraticBe [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ferv.jp/blog/2009/10/28/graphicspath-drawroundrect/">GraphicsPathでdrawRoundRect()する</a>前に、こっちが先だったかも。GraphicsPathでGraphics.drawEllipse()と同様のことができるとどっかで使えそう。<a href="http://www.libspark.org/wiki/dsk/BezierSegment">QuadraticBezierSegment</a>.createEllipseSegments()をほぼコピペで実装できる。<br />
例によって青い線がGraphics.drawEllipse()で、黒い線がGraphicsPathUtil.createEllipse()で作成したGraphicsPathをGraphics.drawGraphicsData()で描画した線。</p>
<div style="text-align:center;width:465px;"><iframe title="GraphicsPathでdrawEllipse()する - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/51cdd5384b61f07bf58a63e969dcfcef5f38834a" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/51cdd5384b61f07bf58a63e969dcfcef5f38834a" title="GraphicsPathでdrawEllipse()する - wonderfl build flash online">GraphicsPathでdrawEllipse()する &#8211; wonderfl build flash online</a></div>
<p>ポイントは、楕円や円は二次ベジェだと4セグメントじゃ近似しきれないから8セグメントで近似するってことと、π/4の倍数でアンカーをとることにすると計算が簡単ってこと。]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/28/graphicspath-drawellipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GraphicsPathでdrawRoundRect()する</title>
		<link>http://ferv.jp/blog/2009/10/28/graphicspath-drawroundrect/</link>
		<comments>http://ferv.jp/blog/2009/10/28/graphicspath-drawroundrect/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:09:30 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>
		<category><![CDATA[GraphicsPath]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=992</guid>
		<description><![CDATA[前々回のエントリで、楕円をベジェセグメントで描いたのの応用としてGraphicsPathでGraphics.drawRoundRect()みたいなパスを描いてみた。ついでにWonderflのアカウント忘れたから作ってみた [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ferv.jp/blog/2009/10/27/nthbeziersegment_sparkproject/">前々回のエントリ</a>で、楕円をベジェセグメントで描いたのの応用としてGraphicsPathでGraphics.drawRoundRect()みたいなパスを描いてみた。ついでにWonderflのアカウント忘れたから作ってみた。<br />
例によって後ろの青い線がGraphics.drawRoundRect()で描いた線で、黒い線がGraphicsPathで描いた線。</p>
<div style="text-align:center;width:465px;"><iframe title="GraphicsPathでdrawRoundRect()する - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/9d5a6238ffa8c048184e55ab30e2a9c1312cd55d" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/9d5a6238ffa8c048184e55ab30e2a9c1312cd55d" title="GraphicsPathでdrawRoundRect()する - wonderfl build flash online">GraphicsPathでdrawRoundRect()する &#8211; wonderfl build flash online</a></div>
<p>このエントリとは関係ないけど、GraphicsPathの利点はGraphicsインスタンスをもってなくても描画データのみをインスタンスとして作れるってことだと勝手に思ってる。だから、<a href="http://www.libspark.org/wiki/dsk/BezierSegment">QuadraticBezierSegmentやCubicBezierSegment</a>のgetGraphicsPath()メソッドの戻り値はGraphicsPathなの。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/28/graphicspath-drawroundrect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ベジェセグメントを分割</title>
		<link>http://ferv.jp/blog/2009/10/27/nthbeziersegment-split/</link>
		<comments>http://ferv.jp/blog/2009/10/27/nthbeziersegment-split/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 08:59:18 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=989</guid>
		<description><![CDATA[
ベジェ曲線上をクリックして分割する。クリックした座標に対応する媒介変数をISegment.getTime()で取得して、結果の媒介変数からISegment.split()でベジェセグメントを分割する。
Spark  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=600;height=400;" href='http://ferv.jp/blog/wp-content/uploads/2009/10/SplitBezier.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/SplitBezier.png" alt="SplitBezier" title="SplitBezier" width="465" height="150" class="alignnone size-full wp-image-990" /></a></p>
<p>ベジェ曲線上をクリックして分割する。クリックした座標に対応する媒介変数をISegment.getTime()で取得して、結果の媒介変数からISegment.split()でベジェセグメントを分割する。</p>
<p><a href="http://www.libspark.org/">Spark Project</a>にコミット済み。ソースは<a href="http://www.libspark.org/wiki/dsk/BezierSegment">BezierSegment</a>の「リポジトリブラウザで閲覧」から。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/27/nthbeziersegment-split/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NthBezierSegmentクラスをSparkProjectにコミット</title>
		<link>http://ferv.jp/blog/2009/10/27/nthbeziersegment_sparkproject/</link>
		<comments>http://ferv.jp/blog/2009/10/27/nthbeziersegment_sparkproject/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:03:17 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=981</guid>
		<description><![CDATA[
円をベジェ曲線で表すのはあくまでも近似なんだってことを念頭に、三次ベジェの場合は4セグメントで円に見えるけど、二次ベジェの場合は4セグメントじゃきついので8セグメントで近似することにする。後ろの青い線はGraphic [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=800;height=600;" href='http://ferv.jp/blog/wp-content/uploads/2009/10/Ellipse.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/Ellipse.png" alt="Ellipse" title="Ellipse" width="465" height="150" class="alignnone size-full wp-image-982" /></a></p>
<p>円をベジェ曲線で表すのはあくまでも近似なんだってことを念頭に、三次ベジェの場合は4セグメントで円に見えるけど、二次ベジェの場合は4セグメントじゃきついので8セグメントで近似することにする。後ろの青い線はGraphics.drawEllipse()で描いた線。一致してることが分かるでしょうか。</p>
<p>てことでベジェセグメントを分割するsplit()まだ実装してないけど<a href="http://www.libspark.org/">Spark Project</a>に一旦コミットした。<a href="http://www.libspark.org/wiki/dsk/BezierSegment">BezierSegment</a>の「リポジトリブラウザで閲覧」からソース見れますよっと。</p>
]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/27/nthbeziersegment_sparkproject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>三次ベジェで円や楕円</title>
		<link>http://ferv.jp/blog/2009/10/23/bezier_ellipse/</link>
		<comments>http://ferv.jp/blog/2009/10/23/bezier_ellipse/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 13:29:00 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=974</guid>
		<description><![CDATA[
三次ベジェで円や楕円とかも描画できるとよさそう。
前回と同じく、青いのがGraphics.drawCircle()とGraphics.drawEllipse()で描画したライン。
白いのが自作クラスで描画したライ [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=800;height=600;" href='http://ferv.jp/blog/wp-content/uploads/2009/10/BezierEllipse.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/BezierEllipse.png" alt="BezierEllipse" title="BezierEllipse" width="465" height="150" class="alignnone size-full wp-image-975" /></a></p>
<p>三次ベジェで円や楕円とかも描画できるとよさそう。<br />
前回と同じく、青いのがGraphics.drawCircle()とGraphics.drawEllipse()で描画したライン。
白いのが自作クラスで描画したライン。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/23/bezier_ellipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>二次ベジェとか三次ベジェとか</title>
		<link>http://ferv.jp/blog/2009/10/23/beziersegment/</link>
		<comments>http://ferv.jp/blog/2009/10/23/beziersegment/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:51:09 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[BezierSegment]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=953</guid>
		<description><![CDATA[
fl.motion.BezierSegmentを描画に使おうとするとメソッドが色々足りない。例えば「三次ベジェはあるけど二次ベジェはない」とか「getYForX()はあるのにgetXForY()はない」とか「近似でい [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=800;height=600;" href="http://ferv.jp/blog/wp-content/uploads/2009/10/BezierDrawer.swf"><img src="http://ferv.jp/blog/wp-content/uploads/2009/10/bezierdrawer.png" alt="bezierdrawer" title="bezierdrawer" width="465" height="150" class="alignnone size-full wp-image-954" /></a></p>
<p>fl.motion.BezierSegmentを描画に使おうとするとメソッドが色々足りない。例えば「三次ベジェはあるけど二次ベジェはない」とか「getYForX()はあるのにgetXForY()はない」とか「近似でいいから長さも求めたいな」とか「描画にもっていくためにはgetValue()叩きまくらないといけない」とか・・・<br />
パッケージがfl.motionってことでモーションに使うんだろうから文句言えない。で、こんなのつくってみた。</p>
<p>左が二次ベジェで右が三次ベジェ。白いベジェを自作クラスで描画、後ろの青いベジェを二次はcureveToで三次はfl.motion.BezierSegmentで描画。媒介変数が0.5のときの傾きが赤い線。x=400の時のyの値が青い丸、y=300の時のxの値が赤い丸。</p>
<p>もうちょっとまとめてから、<a href="http://www.libspark.org/">SparkProject</a>で公開する予定。需要はまだない。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/10/23/beziersegment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
