home processing download documents tutorial python tutorial gallery source about
 チュートリアル (トピック一覧へ戻る)

iGeoで用いる基本的な幾何学オブジェクト

     点の生成

点を生成・設置するにはIPointクラスを用います。IPointクラスのコンストラクタは三次元座標(X, Y, Z)を引数に取ります。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

new IPoint(0,0,0);
new IPoint(20,0,0);
new IPoint(20,20,0);
new IPoint(0,20,0);


     幾何学オブジェクトの色の設定

点などのオブジェクトの色を設定するには、clr()メソッドもしくはhsb()メソッドを用います。clr()はRGB値を引数に取り、hsb()メソッドはHSB値を取ります。 値はfloat型かdouble型で与える場合は(0.0 - 1.0)の範囲であり、int型で与える場合は(0-255)の範囲です。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

new IPoint(0,0,0).clr(255,0,0); // RGB in int
new IPoint(20,0,0).clr(0,0.3,0.9); // RGB in float or double
new IPoint(20,20,0).hsb(0.5,1.0,0.9); // HSB in float or double
new IPoint(0,20,0).clr(255); // grayscale in int, float or double


     線の生成

線を生成するにはICurveクラスを用います。ICurveクラスのコンストラクタは開始点と終了点の三次元座標を引数に取ります。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

new ICurve(0,0,0, 30,30,30);
new ICurve(0,-10,0, 30,10,20).clr(0.5,0,0);
new ICurve(0,-20,0, 30,-10,10).clr(1.0,0,0); // NOTE: float is put in clr()
new ICurve(0,-30,0, 30,-30,0).clr(1,0,0); // NOTE: int is put in clr() and the range of int in color is 0-255


     NURBS曲線の生成

曲線の生成にもICurveクラスを用います。この際、ICurveクラスのコンストラクタは曲線上の各頂点の三次元座標を配列として取ります。 第二引数は曲線の滑らかさに関係するNURBS次数(整数)です。 NURBS次数=1は直線や折れ線を表し、2以上が曲線となります。 NURBS次数が2の曲線には3つ以上の頂点座標、次数が3の曲線には4つ以上の頂点座標が必要です。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

double[][] controlPoints1 =
  {{0,0,0}, {20,20,20}, {-20,20,0}};
new ICurve(controlPoints1, 2); // degree = 2

// to put number inside
new ICurve(new double[][]{{0,15,0}, {20,35,20}, {-20,35,0}}, 2).clr(1.,0,0);

// degree 1 curve (polyline)
double[][] controlPoints2 = 
  {{-60,-30,0}, {-60,-10,0}, {-40,-30,0}, {-40,-10,0}};
new ICurve(controlPoints2, 1).clr(0,1.,1.);

// or you can omit the degree argument for polyline
double[][] controlPoints3 = 
  {{-30,-30,0}, {-30,-10,0}, {-10,-30,0}, {-10,-10,0}};
new ICurve(controlPoints3).clr(0,0.5,1.);

// degree 2 curve
double[][] controlPoints4 = 
  {{0,-30,0}, {0,-10,0}, {20,-30,0}, {20,-10,0}};
new ICurve(controlPoints4,2).clr(.5,0,1.);

// degree 3 curve
double[][] controlPoints5 = 
  {{30,-30,0}, {30,-10,0}, {50,-30,0}, {50,-10,0}};
new ICurve(controlPoints5,3).clr(1.,0,1.);


     単純な平面や曲面の生成

平面を生成するにはISurfaceクラスを用います。 三角形の生成には3点の三次元座標を、四角形の生成には4点の三次元座標をISurfaceクラスのコンストラクタに渡します。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

new ISurface(0,0,0, 40,40,40, 80,0,0, 40,-40,40);

// 3 corner points (triangle)
new ISurface(-50,40,0, -10,40,0, -50,0,0).clr(0,0,1.);

// rectangle
new ISurface(-50,-10,0, -10,-10,0, -10,-40,0, -50,-40,0).clr(0,1.,1.);


     NURBS曲面の生成

NURBS曲面の生成にもISurfaceクラスを用います。 第一引数は三次元座標を表すdouble配列の2次元配列を取ります。 第二引数はU方向のNURBS次数を表す整数、 第三引数はV方向のNURBS次数を表す整数です。 U,Vの各方向で、NURBS次数が2であるときには3つ以上の頂点座標、次数が3のときは4つ以上の頂点座標が必要です。

import processing.opengl.*;
import igeo.*;

size( 480, 360, IG.GL );

// 4 points in u direction, 3 points in v direction
double[][][] controlPoints = 
  {{{-30,-30, 10}, {-30,  0,-20}, {-30, 30,  0}},
   {{  0,-30,-10}, {  0, 20,-50}, {  0, 30,-20}}, 
   {{ 30,-30,-20}, { 30, 20, 60}, { 30, 30, 30}},
   {{ 60,-30,  0}, { 60,  0, 40}, { 60, 30, 30}}};

// u degree = 3, v degree = 2
new ISurface(controlPoints, 3, 2).clr(1,.8,0); 


(トピック一覧へ戻る)

HOME
FOR PROCESSING
DOWNLOAD
DOCUMENTS
TUTORIALS (Java / Python)
GALLERY
SOURCE CODE(GitHub)
PRIVACY POLICY
ABOUT/CONTACT