![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
数式がつくるかたち プログラムのソースコード |
|
プログラムのダウンロード プログラム1のソースコード
//
// プログラム1のソースコード (学習用)
//
import jp.ac.teu.media.*;
public class ex_1 extends TMLib {
final static int vsize = 256;
public static void main(String [] args) {
begin(new ex_1(), vsize, vsize);
}
public void Main() {
int x, y, R, G, B;
TMLibImage img = new TMLibImage();
img.newImage(vsize, vsize);
for(x = 0; x < vsize; x++){
for(y = 0; y < vsize; y++){
// *** BEGIN YOUR PROGRAM *** //
R = 255;
G = 255;
B = 255;
// *** END YOUR PROGRAM *** //
img.setRGB(x, y, R, G, B);
}
}
drawImage(0, 0, img);
}
}
プログラム2のソースコード
/* ============================================================ //
// 以下のタグの間に,学籍番号と氏名を記してください.
<ID>02p000</ID><NAME> </NAME>
// 以下のタグの間に,タイトルを記してください.
<TITLE> </TITLE>
// 以下のタグの間に,“企画”を200〜400字程度で記してください.
<DESCRIPTION>
</DESCRIPTION>
// ============================================================ */
//
// プログラム2のソースコード (提出用)
//
import jp.ac.teu.media.*;
public class u02p000_2 extends TMLib {
final static int vsize = 480;
public static void main(String [] args) {
begin(new u02p000_2(), vsize, vsize);
}
public void Main() {
int x, y, R, G, B;
double X, sX, wX, dX, Y, sY, wY, dY, Z1, Z2, Z3;
TMLibImage img = new TMLibImage();
img.newImage(vsize, vsize);
// *** BEGIN WINDOW *** //
sX = -100.0;
sY = -100.0;
wX = 200.0;
wY = wX;
// *** END WINDOW *** //
dX = wX/(double)vsize;
dY = wY/(double)vsize;
for(x = 0; x < vsize; x++){
X = sX + dX * (double)x;
for(y = 0; y < vsize; y++){
Y = sY + dY * (double)y;
// *** BEGIN YOUR PROGRAM *** //
Z1 = X*X + Y*Y;
Z2 = 0;
Z3 = 0;
R = (int)Z1 % 256;
G = (int)Z1 % 256;
B = (int)Z1 % 256;
// *** END YOUR PROGRAM *** //
img.setRGB(x, y, R, G, B);
}
}
drawImage(0, 0, img);
img.writeImage("u02p000_2.bmp");
}
}
ヒント
同心円模様・螺旋縞模様を作るには以下の二つのメソッドが必要となります.
// 2点間の長さを求めるメソッド (追加)
public double getLength(int x, int y, int ox, int oy){
return Math.sqrt((double)((x - ox)*(x - ox) + (y - oy)*(y - oy)));
}
// 中心点(ox, oy)に対する角度(ラジアン)を求めるメソッド (追加)
public double getRadian(int x, int y, int ox, int oy){
double r = getLength(x, y, ox, oy);
double s = Math.asin((double)(y - oy)/r);
double c = Math.acos((double)(x - ox)/r);
double p = Math.PI/2.0;
if( 0 <= s && s <= p && 0 <= c && c <= p ) return s;
else if( 0 <= s && s <= p && p <= c && c <= 2.0*p ) return c;
else if( -p <= s && s <= 0 && p <= c && c <= 2.0*p ) return 2.0*p - s;
else if( -p <= s && s <= 0 && 0 <= c && c <= p ) return 4.0*p - c;
else return 0.0;
}
|