ともさんのHP >プロブラミング >JAVAで幾何計算 >JAVAでベジェ曲線


JAVA言語でベジェ曲線を構成する点の配列を求める

JAVA(コンピュータ言語)でベジェ曲線を求めるメソッドの紹介です。

ベジェ曲線の考え方

梯子を使って理解します。
まず、2本の梯子を用意します。それぞれの長さは異なりますが、段数は一緒です。
3本目の梯子を用意します。これを2本の梯子のそれぞれi番目に立てかけます。
3番目の梯子も段数は一緒ですが、長さはぴったり2本の梯子のi番目をつないだ長さにします。

広告

この作業をi=0から段数分だけ行い、3番目の梯子のそれぞれi番目の位置をプロットして滑らかにつなげば...ベジェ曲線の出来上がり。
言葉で書いてもよくわからないけど、 こちら の動画を見れば一目瞭然で理解できる。
私もこの動画を見て理解できました。Ueyamaさんありがとうございます。
2つの梯子に1つの梯子をかけて描く曲線は2次ベジェ曲線。3つの梯子に2つの梯子をかけ、さらに1つの梯子をかけると3次ベジェ曲線。 更に梯子を増やせるけど、個人的には2次で十分だと思う。

ベジェ曲線を求める順序

まずは直線上の任意の割合で分割する点を求めるメソッドを作る。
始点からiだけ移動した位置が分点。i=0なら分点の位置は始点と重なる。i=1なら終点の位置。
分点の計算

2つの直線それぞれ同じ割合の分点を求め、2つの分点を始点、終点として直線を作り、同じ割合で分点を求める。
求めた点はベジェ曲線上の点になる。
ベジェ曲線の計算

ベジェ曲線を求めるJAVAメソッド

N本の直線をつなげてベジェ曲線を表現します。N個の直線を示すためのN+1個の点を返すメソッドが下記

public tomojavalib.p2cad.Point[] beje(Line l1,Line l2,int nos)
{
tomojavalib.p2cad.Point bp[]= new tomojavalib.p2cad.Point[nos+1] ;
for(int i= 0;i<nos+1;i++)
{
 bp[i]= new tomojavalib.p2cad.Point();
 tomojavalib.p2cad.Point p1 = bunTen(l1.sp,l1.ep, (double)(i)/(double)(nos) );
 tomojavalib.p2cad.Point p2 = bunTen(l2.sp,l2.ep, (double)(nos-i)/(double)(nos) );
 bp[i] = bunTen( p1, p2 , (double)(i)/(double)(nos) );
}
return bp;
}

public tomojavalib.p2cad.Point bunTen
(tomojavalib.p2cad.Point sp, tomojavalib.p2cad.Point ep ,double bunritu )
{
tomojavalib.p2cad.Point bp= new tomojavalib.p2cad.Point();
bp.x = sp.x + ( ep.x - sp.x ) * bunritu;
bp.y = sp.y + ( ep.y - sp.y ) * bunritu;
return bp;
}  

最終更新日: 2014-04-01 07:29:09

ともさんのHP >プロブラミング >JAVAで幾何計算 >JAVAでベジェ曲線

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

水中毒の体験談  
電気柵  
ミツバチ写真集  
ラングストロース式養蜂巣箱の図面  
電子工作  
自動揚水ポンプを自作  
整理棚の自作  
五右衛門風呂の風呂釜を修理  
自分でリフォーム  
【初心者用】日本ミツバチ飼育巣箱の作り方その2  
洋裁CAD用部品ファイルの作り方  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます