Tclでベジェ曲線!


tclでもベジェを操作して自由曲面を扱えるようなサンプルを作ってみました。
元のファイルは、Shadeのサンプルtclです。


1.ベジェの基礎

vec3 bezier = b[0] * s3 + b[1] * ( 3 * s2 * t ) + b[2] * ( 3 * s * t2 ) + b[3] * t3;
set v3NewPoint  [ plus_vec 	[ plus_vec \
					[ \
						plus_vec [mul_vec_scal $v3Anchor2 $s3 ]  \
							 [mul_vec_scal $v3Out_hdl2 [ expr $s2 * $t1 * 3 ] ] \
					] \
					[ mul_vec_scal  $v3In_hdl1 [ expr $s1 * $t2 * 3 ] ]\
				] \
				[ mul_vec_scal  $v3Anchor1 $t3 ] ]
と書いてみました。

2.ベジェを助変数 t で分割

3.ベジェを距離で分割

サンプルコード:DivideBezier_l.zip

4.参考文献

「私家版 BEZIER 講座」 著作 加藤俊明 http://www.bekkoame.ne.jp/~t.katoh/
(ベジェのお師匠様です。)
「On-Line Geometric Modeling Notes」Kenneth I. Joy http://graphics.cs.ucdavis.edu/CAGDNotes/CAGD-Notes.html