Javaを用いた2次元パターンの生成

寄能 昌子 栗林 恵梨 崔 麻美 趙
中川 裕子 村田 佳與子 SHARMA KRISHNA 張 大全
指導 吉田 信夫

1 はじめに

 2次元パターンには、基本パターンを繰り返すものと繰り返さないものとがあり、 繰り返しパターンにはその対称性から17通りのタイプがあることが知られている。 私達は、Javaを用いて繰り返しなしの2次元パターンを生成することを試みた。
Javaを用いた主な理由は、Javaはプラットホームに依存しないということからである。 Javaには、Javaアプリケーション、Javaアプレット、Javaサーブレットなど、 用途によって使い分けることができるが、私たちはJavaアプレットを用いた。 その理由は、Javaアプレットはホームページから利用できることである。 また、パターン生成には大量の計算を要するため、サーブレットでは同時にアクセスがあったとき、 サーバーに負荷がかかり動作が遅くなる可能性があるためである。 さらに、アプレットを利用すると、生成されたパターンを印刷したいときブラウザの印刷機能が使用でき、 作成するシステムに印刷機能を持たせる必要性がないことも理由の一つである。

2 2次元パターン生成システム

 私たちが考えた2次元パターンの生成方法は図1のような周期的に変化する波形スレートを 図2のように回転させて重ね合せる方法である。 波形スレートを重ね合せてできる凹凸を色や明度に変えて2次元に表示するとパターンが生成されるが、 連続的な変化だとパターンにならないので、重ね合せる前に図3に示すシグモイド関数を用いて単純化し、重ね合せた。 以上の手順は図4に示す4層ニューラルネットモデルに対応する。 このニューラルネットに学習機能を持たせ、教師パターンを入力すればその教師パターンに類似した 別のパターンを自動的に生成するシステムができるはずである。


2−1 2次元パターン生成システムを作成する過程

 2次元パターン生成システムを作成するに先立って、 私達は、Javaアプレットによるグラフィックスプログラミングを次の手順によって段階的に学んだ。
 

    @スクリーン座標を理解する
     スクリーン上の座標系は図5に示すようにスクリーンの左上隅を原点とし、 原点より右方向にX軸、下方向にY軸が延びている。
     私達は最初のステップとして横640ピクセル、縦480ピクセルのウィンドウをオープンし、 (320,240)の位置に1点を描画する図7のようなJavaプログラムを作成した。 JavaアプレットではこのJavaプログラムをコンパイルして得られるクラスファイルが図6 に示す書式のHTMLファイルから呼び出される。
    A色を表示する方法を理解する

    B三角関数の利用方法を学ぶ
     2次元パターンを生成するには周期関数を必要とするので 私達、はここでサインカーブとコサインカーブ、及びsinとcosとを媒介変数で結合して円とリサージュ図形を描く4つのプログラムを作成した。

    C対話処理の方法を学ぶ
     2次元パターン生成システムではパターンの形や色のタイプを利用者が選択できるようにするため、対話処理プログラムの作成を学ぶため、 いくつかのプログラムを作成した。そのうちの一つを紹介する。 D2次元パターン生成の手法をテストする
     さらにパターン生成に一歩近づくために、スキャニングのプログラムにz=f(x,y)の周期関数を適用して波形スレートを生成するプログラムを 作成した。 Z軸方向から見た波形スレートのzの値を色に変えて表示すると縦縞や横縞を表示することができる。 次に縦波と横波の2枚の波形スレートを重ね合わせると、このような出力を得ることができる。 そのためのプログラムの流れを図15に示す。さらにzの値を色に変える段階でシグモイド関数で単純化すると、このような出力が得られる。 さらに、周期関数にπ/6 ラジアンの回転のための変換マトリックスを掛けるとこのような出力が得ることができる。

2−2 2次元パターン生成システム

 2次元パターン生成システムは図16に示すように初期化メソッド init、 イベント処理メソッド action、描画メソッド paintの3つのメソッドで構成されている。 初期化メソッドでは図17に示すように、640×480ピクセルの ウィンドウを配置する。重ね合せる波形スレートの枚数に関係する分割数のセレクトスイッチ、 パターンのイメージ色を選択するセレクトスイッチおよびパターンの形を変えるセレクトスイッチなど の準備をする。
 ペイントメソッドでは画面を左上隅より順次走査してパターンを作成する。 各点においてはその点のx、y方向の周期的変化にイベント処理で取得された分割数 i に対し 2Π/i ラジアンずつ回転を加え、さらにシグモイド関数で単純化して累和をとる。
 イベント処理メソッドでは、初期化メソッドで準備した分割数、色、形の3つのセレクトスイッチからの イベントを処理し、その値をそれぞれのグローバル変数に設定して描画メソッドを呼び出す。

3 おわりに

 私達は、ニューラルネットを用いて2次元パターンを 生成するプログラムをJavaアプレットを用い作成した。このプログラムによって、 ホームページ上から2次元パターンを生成させるシステムの基本的な形を作ることができた。
 しかし、今回は放射状に展開していくパターンまでであり、17通り あると言われている繰り返しパターンの生成までには至っていない。また、 ニューラルネットに学習機能を持たせてパターンを自動生成さ せるという段階にも至っていない。
 今後は、まず、17通りすべての2次元繰り返しパターンが生成でき るシステムに改良していくことが必要とされる。