ともさんの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でベジェ曲線

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

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