2019年3月 5日 (火)

太平記ゆかりの地 5 足利尊氏は、京都御所に住んでいた?

太平記ゆかりの地 インデックス

以下、下記の文献に記述されている内容を参照しながら、述べる。

 文献1:[観応の擾乱 亀田 俊和 著 中公新書 中央公論新社]

[文献1]51P に、以下のようにある。

 「貞和五年(一三四九)三月十四日、京都土御門(つちみかど)東洞院(ひがしのとういん)にあった将軍足利尊氏邸が火災に遭った。尊氏邸の再建が終了するまで、尊氏は一条今出川(いまでがわ)にあった執事高師直邸に居住することとなった。」

京都の地名の中には、東西方向に伸びる道路の名前と、南北方向に伸びる道路の名前を組み合わせてできているものが多くある。(例えば、[四条烏丸]、[四条河原町]、[河原町三条])。

上記中の[土御門東洞院]も、同様だ。[東洞院]という名前の道路と、[土御門]という名前の道路が交差している場所を指している。ただし、[土御門]という名前は、平安時代のものであり(土御門大路)、現在の[上長者町通]に相当する。

よって、この当時の将軍・足利尊氏(あしかが たかうじ)の住所は、[東洞院通]と[上長者町通]が交差するあたりにあった、ということになる。

ネット地図を使用して、[京都市 上京区 元土御門町]で検索すると、[元土御門町]がどこにあるのか分かると思うが、その町内にある東西方向に伸びている道路が、[上長者町通]である。

ネット地図を使用して、[京都市 中京区 三本木町]で検索すると、[三本木町]がどこにあるのか分かると思うが、その町内にある南北方向に伸びている道路が、[東洞院通]である。

では、[東洞院通]と[上長者町通]が交差する場所とは、いったいどこか?

ネット地図を見てその位置を割り出してみると、なんと、それは、[京都御所]の[紫宸殿]のあたりである。

尊氏は、御所に住んでいた?

いや、そうではない。

[文献1]60P には、以下のようにある。

 「だが翌一三日には、さすがの尊氏も直義に土御門東洞院邸へ避難するように勧めた。直義はこの指示に従い、将軍邸へ移動した。これを見て師直に寝返った武士が続出し、将軍兄弟の軍勢は三〇〇騎にも満たなくなった。」

 (途中略)

 「八月一四日早朝、師直は大軍を率いて法成寺(ほうじょうじ)河原に進出し、将軍御所の東北を厳重に包囲した。師泰も七〇〇〇騎あまりで西南からこれを囲んだ。師直軍が御所を焼き払う風聞も飛び交い、付近の住民は大混乱のうちに避難した。将軍邸の北隣に位置する内裏に住む崇光(すこう)天皇も、光厳上皇の御所(持明院殿)へ避難した。」

これが、足利幕府を分裂・抗争に至らしめた、[観応の擾乱](かんのうのじょうらん)の始まりである。

尊氏は、天皇の住まい(内裏)の南隣に住んでいたのだ。

この時の、崇光天皇の住まいは、[土御門東洞院殿]と呼ばれており、その後、ここに本格的な規模を持つ御所が建設され、それが、現在の京都御所となったのだという。

上記中の、「法成寺河原」とは、[法成寺の付近の鴨川の河原]、という事になるのだろう。

[法成寺]は,[藤原道長]によって建立された寺である。[上京区 荒神口通 寺町 東入 北側]に、「このあたりに法成寺があった」ということを示す石標があるようだ。

よって、[法成寺河原]とは、[荒神口通 寺町]のあたりの、鴨川の河原、すなわち、現在の[荒神橋]のあたりの鴨川の川原、ということになるのだろう。

[高師直](こうのもろなお)は、足利尊氏邸の東側を塞ぐために、荒神橋のあたりに鴨川に沿って南北に軍勢を配置したのだろう。

なお、この当時の鴨川の川原は、現在のそれと一致しないようだ。

ところで、[観応の擾乱]という用語を、誰が最初に用いたのか、ネットで調べてみたが分からなかった。

いったいなぜ、「擾乱」などという、現在の我々にはなじみが無い用語を用いたのだろう?

(気象学や電気工学では、この用語を用いるようだが)。

カンノウノジョウラン・・・うーん、むずかしい用語・・・このような、学生諸君の記憶力に無用の負担をかけるような事はやめて、学生諸君の頭脳に擾乱を引き起こすような事はやめて、[観応の変]あるいは[観応の乱]とでも、呼ぶように、変えてみてはどうだろう?

いや、いっそのこと、年号を使うのを止めてみては?

 [観応の擾乱]は、[足利幕府・第1次・抗争]に

 [応仁の乱]は、[足利幕府・第2次・抗争]に

というようにでも、変えてみては?

これまでの日本史の教育においては、このような、学生諸君の記憶力に負担を強いるような、無駄な事がとても多いのでは、と思う。これによって、多くの学生の日本史への関心を薄れさせているのではないか?

学校(大学・大学院も含む)での日本史関連の授業・講義・試験において、年号を用いた用語を用いない、ということにすれば、学生はどれほど楽になることだろう。

今の日本の学生は、日本史の他にも学ばねばならない事がいっぱいあるのだから・・・IT関係の事とか、国際関係の事とか、地球環境保全の事とか、英語関係の事とか。

もう少し、学生の負担を減らすような方向に、文部科学省、日本史学会は、考えていただいてもよいのではないだろうか。

--------

次に、高師直(こうの もろなお)の住所を見てみよう。

[文献1] 51P には、

 「一条今出川(いまでがわ)にあった執事高師直邸」

とあったが、「一条今出川」とは、いったいどのあたりか?

「今出川」を通りの名前、すなわち、[今出川通]と解釈すると、不可解な地名になってしまう。一条・今出川通? 一条通も今出川通も、東西方向に延びる道路だ、この2本の道路が交差することは、ありえない。

よって、[今出川]は、道路の名前ではなく、川の名前と解釈すべきだろう。

かつて、[今出川]という名前の川があったのだそうである。相国寺の境内や、御所の敷地の内を、南方向に流れていたのだという。

[今出川 川跡]でネット検索すると、それに関する情報を得ることができるだろう。

[一条今出川]とは、[一条]という名前の道路と、[今出川]という名前の河川が交差している場所を指しているのだろう。

ネット地図を使用して、[京都市 上京区 広橋殿町]で検索すると、[広橋殿町]がどこにあるのか分かると思うが、その町内にある東西方向に伸びている道路が、[一条通]である。

上記(尊氏邸について調べた)で見た、[上長者町通]よりも[一条通]の方が北側にある。

よって、師直の住所は、尊氏の住所の北方のあたり、ということになるのだろう。

--------

では、尊氏の弟・足利直義(あしかが ただよし)の住所は?

[文献1] 9P,10P に、以下のようにある。

 「桃崎有一郎(ももさき ゆういちろう)氏の研究成果によれば、この時期の直義は「三条殿(さんじょうどの)」あるいは「三条坊門(ぼうもん)」と呼ばれることがもっとも多かった。(「初期室町幕府の執政と「武家探題(たんだい)」鎌倉殿の成立」)。これは、開幕以来の直義の邸宅所在地で、幕府の執政が行われた下京(しもぎょう)三条坊門高倉(たかくら)にちなんでいる。」

[三条坊門高倉]は、[高倉]という名前の道路と、[三条坊門]という名前の道路が交差している場所を指している。ただし、[三条坊門]という名前は、平安時代のものであり(三条坊門小路)、現在の[御池通]に相当する。よって、この当時の直義の住所は、[高倉通]と[御池通]が交差するあたりにあった、ということになる。

ネット地図を使用して、[京都市 中京区 御所八幡町]で検索すると、[御所八幡町]がどこにあるのか分かると思うが、その西端を南北方向に伸びている道路が、[高倉通]である。[御所八幡町]の南半分ほどは、[御池通]の中にある。

上記にも見たように、尊氏の邸宅は、[東洞院通]の道筋にあった。そして、今見たように、直義の邸宅は、[高倉通]の道筋にあった。

[高倉通]は、[東洞院通]の2筋東である。

よって、直義邸は、尊氏邸の、ほぼま南方向にあった、ということになるだろう。

太平記ゆかりの地 インデックス

2019年2月21日 (木)

新作音楽作品の発表 気分よくやっています・第5番

[クレオフーガ](音楽投稿サイト)に、自らが作曲した曲(ピアノ独奏曲)をアップロードしました。曲の題名は、

 I’m feeling good No.5, Op.51
   (気分よくやっています・第5番)

です。

この曲をお聴きになりたい方は、下記で聴いていただけます。(コンテンツ格納先のサイト運営・クレオフーガのサイトにアクセスして)。

-----------

下記にアクセスしていただくと、私が作曲した他の音楽作品を、聴いていただくことも可能です。

私の自作曲たち(クレオフーガ・サイト中にあり)

2019年1月31日 (木)

新作音楽作品の発表 名前はまだ無い・第4番

[クレオフーガ](音楽投稿サイト)に、自らが作曲した曲(ピアノ独奏曲)をアップロードしました。曲の題名は、

 This is not titled yet, No.4, Op.50
   (名前はまだ無い・第4番, Op.50)

です。

この曲をお聴きになりたい方は、下記で聴いていただけます。(コンテンツ格納先のサイト運営・クレオフーガのサイトにアクセスして)。

-----------

下記にアクセスしていただくと、私が作曲した他の音楽作品を、聴いていただくことも可能です。

私の自作曲たち(クレオフーガ・サイト中にあり)

2019年1月30日 (水)

京都 嵯峨 混雑する嵐山を好まない人は、こちら方面へ行けばいいかも

最近、[嵐山]の[渡月橋]のあたりには、大勢の人々が来られています。海外から来た人々も多いようです。平日でも多いです、桜シーズン、紅葉シーズンではない時期でも、多いです。

人でいっぱいの[嵐山]は、好きではない、という人も、おられるかもしれませんね。そのような方は、[嵐山]から北の方、すなわち、[嵯峨(さが)エリア]の北の方へ行ってみる、というのもありかもしれません、様々な美しい場所がありますから。

--------

[嵯峨エリア](京都市 右京区)の北の方には、大きな池が2個あります。[広沢池]と[大沢池]です。

ネット地図を使って、[渡月橋]で検索すると、[渡月橋]の付近が表示されるでしょう。その後、縮尺を小さくしていくと、[渡月橋]の北方向と北東方向に大きな池が2個、表示されることでしょう。

西側にあるのが[大沢池]、東側にあるのが[広沢池]です。

--------
広沢池

下記が、過去に[広沢池]で私が撮影した写真画像です。

A1
A1

A2
A2

[広沢池]では毎年、冬になると、[鯉揚げ]が行われるのだそうです(私は、それを見たことがありません)。池の水抜きが行われ、それまで水中にいた生物の販売も、行われるのだそうです。

[広沢池 鯉揚げ]でネット検索すると、関連する情報を得ることができると思います。

--------
大沢池

[大沢池]は、[大覚寺]の境内にあります。

下記が、過去に[大沢池]で私が撮影した写真画像です。

B1
B1

B2
B2

B3
B3

桜の開花シーズンにも、ここへ行ったことがあります。[大沢池]の周囲に桜があるのです。とても、華やかな風景でした。

[大覚寺 桜]、[大覚寺 紅葉]等のキーワードでネット検索すると、関連する情報を得ることができると思います。

--------

[広沢池]と[大沢池]があるあたりは、[北嵯峨」と呼ばれるエリアです。竹やぶ、田園があり、京都市内にもこんな、のびやかですばらしい所が、と思う場所です。

2019年1月に、[北嵯峨エリア]を歩きまわって、動画を撮影してきました。ユーチューブにアップしてあります。下記が、それへのリンクです、よろしければ、ご覧ください。下記に掲載されている画像は、その動画の中の1シーンを切り出したものです。

広沢池の付近で撮影した動画

P1
P1

---------------------------------------
観空寺の付近で撮影した動画

P2
P2

---------------------------------------
後宇多天皇・陵、および、その他の場所で撮影した動画

P3
P3

[後宇多天皇]は、[後醍醐天皇]の父です。

--------

下記の写真画像も、それぞれの地で過去に、私が撮影した写真画像です。

祇王寺(ぎおうじ)

C1
C1

厭離庵(えんりあん)

D1
D1

直指庵(じきしあん)

E1
E1

--------

平安時代から現代に至るまで、[嵐山]は、人気のあるリゾート地であり続けてきたようです。平安時代、公家たちはここにやってきて、船に乗ったりして楽しんでいたようです。

[嵐山]を流れている[桂川](当時は、「大堰川」と呼ばれていたようです)において、あの[藤原道長]が、一大イベントを開催した、という事が、[大鏡]に書かれているようです。

どのようなイベントかというと:

川の上には、船が3個。イベント参加者は、それらの船に分乗する。

 漢詩文を作るのを得意とする人は、船Aに、
 楽器演奏を得意とする人は、船Bに、
 和歌を作るのを得意とする人は、船Cに

そのイベントに参加した[藤原公任]は、漢詩文も和歌も作ることができ、楽器の演奏をすることもできた、だから、3個の船のどれにでも、乗り込むことができたようなのですが、彼は船Cを選択、それに乗り込んで、良い和歌を作れた。そして、

 「じぶん(自分)、船Aに乗っといた方が、よかったんかなぁ」

というような趣旨の事を、言ったのだそうです。

これに関する更なる詳細については、[大鏡 三船 公任]等のキーワードで検索して、情報を得ることができると思います。

[藤原道長]と[藤原公任]は、同じ年に生まれているようだけど、政界の中での昇進スピード、最終到達位置については、相当な差異があるようです。

--------

平安京から嵐山まで、道長さんや公任さんたちは、牛車に乗って行ったのでしょうね。いったい、どれくらいの時間がかかったのでしょう?

平安京の内裏があった場所は、現在の[千本丸太町]交差点のあたりです。

ネット地図で見てみるに、ここから、嵐山の[渡月橋]までの直線距離は、およそ

 6 km

次に求めたいのが、[牛車の速度]です。これが分かれば、上記の距離をこれで割って、[所要時間]を算出することができるでしょう。

[牛車 速度]でネット検索してみたが、確たる情報を得ることができませんでした。

なので、あえて、

 牛車の速度 = 3 km / 1 時間

と仮定してみることにしました。すると、

所要時間は、

 6 / 3 = 2 時間。

意外に、短い時間で到達することができる、ということになるのかなぁ。午前9時に[平安京]を出発したら、昼前には、[渡月橋]に着ける、ということになりますね。公任さんは、到着してから船に乗り込み、まず、船の中でお弁当を食べ、それから和歌を作ったんだろうか、それとも、その逆順か?

あ、そうだ、この時代は、朝食と夕食のみ、ランチは無しだったんだ、だから、弁当は無しですか。ランチ無しで、和歌や演奏、みなさん、タフですねぇ。

公任さんの[嵐山]への旅は、日帰りだったんだろうか、それとも、どこかで一泊?

[京都御苑]の近くに、[冷泉家](れいぜいけ)という家がありますが、そこのご先祖・[藤原定家] 氏が選んだ[小倉百人一首]の中の

 滝の音は 絶えて久しく なりぬれど 名こそ流れて なほ聞こえけれ

は、公任さんが作った和歌ですが、この「滝」は、[名古曽(なこそ)の滝]であり、[大覚寺]の境内にかつてあったのだそうです。[大覚寺]の境内に、「名古曽の滝跡」として、復元されています。

2019年1月 9日 (水)

新作音楽作品の発表 言葉にならない想い・第5番

[クレオフーガ](音楽投稿サイト)に、自らが作曲した曲(ピアノ独奏曲)をアップロードしました。曲の題名は、

 I can't put the thought into words well No.5, Op.49
   (言葉にならない想い・第5番)

です。

この曲をお聴きになりたい方は、下記で聴いていただけます。(コンテンツ格納先のサイト運営・クレオフーガのサイトにアクセスして)。

-----------

下記にアクセスしていただくと、私が作曲した他の音楽作品を、聴いていただくことも可能です。

私の自作曲たち(クレオフーガ・サイト中にあり)

2018年12月26日 (水)

新作音楽作品の発表 気分よくやっています・第4番

[クレオフーガ](音楽投稿サイト)に、自らが作曲した曲(ピアノ独奏曲)をアップロードしました。曲の題名は、

 I’m feeling good No.4, Op.48
   (気分よくやっています・第4番)

です。

この曲をお聴きになりたい方は、下記で聴いていただけます。(コンテンツ格納先のサイト運営・クレオフーガのサイトにアクセスして)。

-----------

下記にアクセスしていただくと、私が作曲した他の音楽作品を、聴いていただくことも可能です。

私の自作曲たち(クレオフーガ・サイト中にあり)

2018年12月22日 (土)

京都一周トレイル・東山コース 2018年12月 倒木 台風 強風

2018年12月に、[京都一周トレイル・東山コース] を歩きました。

2018年に襲来した台風の強風により、[京都一周トレイル]の、道沿いの様々な場所で倒木多数、中には通過困難な場所もあり、との情報を得ていたので、どんな状態になっているか、懸念しながら行ってみました。

この日、歩いたのは、下記コースです。[京都一周トレイル]ご関係の方々のご尽力のおかげでしょう、倒木により通行困難、というような場所は無く、歩き通すことができました。

当日、撮影した動画を、ユーチューブにアップしていますので、よろしければご覧ください。

京都一周トレイル・東山コース (10),  [標識 17] - [東山山頂公園] 間
 ([清水寺]の東側の山上を通り、 [東山山頂公園]に至るルートです。)

京都一周トレイル・東山コース (11)  [標識 22] - [尊勝院の付近] 間
 ( [東山山頂公園]の付近から、  [尊勝院]の付近に至るルートです。)

上記の動画を、私のユーチューブチャンネルからも見れます。私のユーチューブチャンネルにアクセスしたい時は、

ここをクリックしてください。

事前に得ていた情報の通りでした、歩いて行く道沿いの様々な場所で、倒木を見ました。

「異常気象」という言葉を毎年のように聞くようになってきた昨今。これから先もまた、台風がやってきて、倒木多数、という状態になってしまうかもしれません。

京都の2018年のカエデ紅葉、赤一色にきれいに染まり、というような映像を見た記憶がありません。これも、今年の気候の影響だったのでしょうか。

このままのペースで、気温上昇が続いていったならば、社寺等の地表面を美しく彩っている、[京都のコケ(苔)]は、この先、だいじょうぶなんだろうか・・・等々、最近、懸念することが多くなってきています。

2018年12月 7日 (金)

プログラム 制作 複数 の 断面図画像 を与えて 3次元 立体 表示 Java OpenCV3 を使って

コンピューター・プログラム 制作 インデックス

[複数 の 断面図画像 を与えて 3次元 立体 表示] という制作テーマにより、コンピューター・プログラムを制作しました。

以下に、その様を記述しますが、その記述内容は、このようなコンピューター・プログラムを制作した、それを動かしたら、このような結果になった、というような事を、ただ、淡々と述べているに過ぎません。

下記の記述をお読みになった方が、それを単に参考にする、というのであれば、問題は無いと思われます。

しかし、記述されている内容に沿って、その方がそこに記されているのと同様の制作や作業を行われた際に、その制作や作業の結果、使用されたコンピューター等、様々な方面において、何らかの問題が発生しない、という保証は、全くありません。

その作業の結果、その方や、その方が使用された様々な器機、インフラ等の身の上にどのような事が起ころうとも、私は一切、責任を負いません。

------------
1 できたもの

制作作業の結果、できたのが、下記のようなコンピューター・プログラムです。

まず、10個の画像を制作し、所定のフォルダー中に格納しておきます。

画像には、L01.png , L02.png , L03.png ・・・ というように、連番でファイル名を与えておくようにします。

Fig1

Fig1_3

これらの画像は、架空の山の各標高での断面図を示していると思ってください。

例えば、

 L01.png は 標高0メートル での断面図
 L02.png は 標高100メートル での断面図
 L03.png は 標高200メートル での断面図
 L04.png は 標高300メートル での断面図
 ・・・

というような、かんじです。

その後、このコンピューター・プログラムを起動すると、上記の断面図をもとにして、山のおおよその形状が、下記のように3次元表示されました。

Fig2

Fig2_2

[For Data Input] 画面は、プログラムに対する操作の指示を行うためのものです。これを使って、
山を眺める角度を変えたら、示される形状が、下記のように変化しました。

Fig3

Fig3_2

L01.png , L02.png 等の画像セットを、下記のように変えてみました、ピラミッドみたいな形を表示してくれるかな、と思い。。

Fig4

Fig4_2

すると、下記のように表示されました。

Fig5

Fig5_2

Fig6

Fig6

------------
2 使用したコンピューターとソフトウェア

この、コンピューター・プログラムを制作・実行するために使用したものは、下記の通りです。

コンピューター

 CPU : Core(TM) i7-7700HQ
 メモリー : 16 GB
 Operating System : Windows 10 Home, 64ビットオペレーティングシステム

OpenCV3

 opencv-3.4.3-vc14_vc15.exe

Java

 jdk-8u181-windows-x64.exe

[opencv3] と [Java] を組み合わせて使用する方法については、過去に発表ずみです。

その内容を読みたい方は、

 [コンピューター・プログラム 制作 インデックス]にアクセスし(このページの先頭と末尾に、それへのリンクがあります)、

 そこから、下記にアクセスしてください。

 [開発費用ゼロ コンピューターグラフィックスによる動画制作 Java OpenCV3 Eclipse を使って]

------------
3 ソースリスト

このコンピューター・プログラムのソースリストを、以下に記します。

複数個のファイルに分割して記述しました。

==============================
Test3.java
--------------------------
    //for using OpenCV3
import org.opencv.core.Core;

public class Test3 {

  private static String mv_this_Class_name = "Test3" ;

  public static void main ( String[] args ) {

    String this_methode_name = "main" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + mv_this_Class_name +
                      " : methode = " + this_methode_name ) ;

                    //prepare for using OpenCV3
    prepare ( ) ;

                  //initialize value
    Bridge.cv_Drawing_Scale_of_Showing_Image = 1.0 ;
    Bridge.cv_angle_around_Z = 30.0 ;
    Bridge.cv_angle_around_Y = -15.0 ;

                  //make instance of  image data processing
    Procc ins_Procc= new Procc ( ) ;
                 //set the instance into Mediater class
    Mediater.set_Procc ( ins_Procc ) ;

                 //make instance for data input
    JFrameDataInput  ins_JFrameDataInput
                                      = new JFrameDataInput (
                                     //width of Frame
                              1000
                                     //height of Frame
                           ,  100
                                    //topLeft Location x of Frame
                           ,  1
                                    //topLeft Location y of Frame
                           ,  1
                                             ) ;
    ins_JFrameDataInput.setVisible ( true ) ;
                //set the instance into Mediater class
    Mediater.set_JFrameDataInput ( ins_JFrameDataInput ) ;

                //make instance for showing image data
    JFrameShowImageData ins_JFrameShowImageData
                = new JFrameShowImageData (
                                   //title of frame
                                     "For Show Image Data"
                                  //width of Frame
                                      ,  1000
                                  //height of Frame
                                     ,  1000
                                  //topLeft Location x of Frame
                                     ,  1
                                  //topLeft Location y of Frame
                                     ,  95
                        ) ;
    ins_JFrameShowImageData.setVisible ( true ) ;
                  //set the instance into Mediater class
    Mediater.set_JFrameShowImageData ( ins_JFrameShowImageData ) ;

    Mediater.do_repaint_process ( ) ;

    System.out.println ( "Exit from Class = " + mv_this_Class_name +
                      " : methode = " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;
  }

//=====================
//prepare
//=====================
  private static void prepare ( ) {

      String this_methode_name = "prepare" ;

      System.out.println ( "    ----------------------------------" ) ;
      System.out.println ( "Enter into Class = " + mv_this_Class_name +
                          " : methode = " + this_methode_name ) ;      

      System.loadLibrary ( Core.NATIVE_LIBRARY_NAME ) ;

      System.out.println ( "Done : System.loadLibrary" ) ;

      System.out.println ( "Exit from Class = " + mv_this_Class_name +
                          " : methode = " + this_methode_name ) ;
      System.out.println ( "    ----------------------------------" ) ;
     }
}

-------------------------
==============================
Bridge.java
--------------------------
public class Bridge {

    public static double cv_Drawing_Scale_of_Showing_Image ;
    public static double  cv_angle_around_Z ;
    public static double  cv_angle_around_Y  ;
  }
-------------------------
==============================
ConstantValues.java
--------------------------
public class ConstantValues {

    public  static final String cv_path_of_dir_LayerImages
            = "F:OpenCvTest\\FilesForThreeDUsingImageData\\Layerimages" ;

    public  static final String cv_path_of_dir_BaseImage
            = "F:OpenCvTest\\FilesForThreeDUsingImageData\\Baseimage" ;

}
-------------------------
==============================
Mediater.java
--------------------------
//-------------------------------------------------
//Mediater
//-------------------------------------------------
class Mediater {

  public static String cv_this_Class_name = "Mediater" ;   

  public static JFrameDataInput cv_ins_JFrameDataInput ;
  public static JFrameShowImageData cv_ins_JFrameShowImageData ;
  public static Procc cv_ins_Procc ;

//----------------------------------------
  public static void set_JFrameDataInput (
                     JFrameDataInput para_ins_JFrameDataInput
                                                                               ) {

     cv_ins_JFrameDataInput = para_ins_JFrameDataInput ;
    }
//----------------------------------------
  public static void set_JFrameShowImageData (
               JFrameShowImageData para_ins_JFrameShowImageData
                                                                                          ) {

    cv_ins_JFrameShowImageData
             = para_ins_JFrameShowImageData ;
   }
//----------------------------------------
  public static void set_Procc (
                        Procc para_ins_Procc
                                                        ) {

     cv_ins_Procc = para_ins_Procc ;
   }

//----------------------------------------   
  public static void  do_repaint_process ( ) {

      cv_ins_Procc.edit_ImageData_for_display   ( ) ;

      cv_ins_JFrameShowImageData
               .set_display_image_BufferedImage
                          (  cv_ins_Procc.get_ins_BufferedImage_for_display () ) ;

      cv_ins_JFrameShowImageData
                   .do_repaint ( ) ;
    }
}

-------------------------
==============================
Procc.java
--------------------------
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc ;

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.WritableRaster;

//==========================
// Procc
//==========================
public class Procc {

  private String cv_this_Class_name = "Procc" ;

  private Mat cv_ins_Mat_contain_BaseImageData ;
  private int cv_width_of_BaseImageData ;
  private int cv_height_of_BaseImageData ;

private BufferedImage cv_ins_BufferedImage_for_display ;

  private ContainImageDatas cv_ins_ContainImageDatas_All_LayerS ;
  private int cv_number_of_layers ;

  private CreateImageForDisplay     cv_ins_CreateImageForDisplay ;

//======================
//Constructer
//======================   
  Procc ( ) {

    String this_methode_name = "constructer" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;

    cv_ins_Mat_contain_BaseImageData
               = load_BaseImageData ( ) ;

     cv_ins_BufferedImage_for_display
             = construct_BufferedImage_instance  (
                        cv_ins_Mat_contain_BaseImageData
                                                                                  ) ;

    cv_number_of_layers = 10 ;   
    cv_ins_ContainImageDatas_All_LayerS
               = new ContainImageDatas ( cv_number_of_layers ) ;

    cv_ins_CreateImageForDisplay
              = new CreateImageForDisplay (
                                cv_ins_Mat_contain_BaseImageData
                      ) ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;
  }          

//=================================
//getter
//=================================
  public BufferedImage get_ins_BufferedImage_for_display () {

     return  cv_ins_BufferedImage_for_display ;
  }

//=================================
//edit_ImageData_for_display
//=================================
  public void edit_ImageData_for_display   ( ) {

        String this_methode_name = "edit_ImageData_for_display " ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;

        cv_ins_Mat_contain_BaseImageData
                     = load_BaseImageData ( ) ;

        Mat ins_Mat_for_display
             = cv_ins_CreateImageForDisplay
                        .modify_BaseImageData_using_LayerImageDataS  (
                                Bridge.cv_angle_around_Z
                              , Bridge.cv_angle_around_Y
                              , cv_ins_Mat_contain_BaseImageData
                              , cv_ins_ContainImageDatas_All_LayerS
                                                             ) ;

        cv_ins_BufferedImage_for_display
           = convert_Mat_Image_to_BufferedImage (
                    ins_Mat_for_display
                 ,  cv_ins_BufferedImage_for_display
                                                                   ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
      }

//=================================
// convert Mat format Image to BufferedImage
//=================================
  private BufferedImage convert_Mat_Image_to_BufferedImage  (
                                                                 Mat para_ins_Mat
                                                              ,  BufferedImage para_ins_BufferedImage                                                            
                                                                                  ) {

    String this_methode_name = "convert_Mat_Image_to_BufferedImage" ;

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

            //get the area of BufferedImage instance
            //     that contains image data values
    WritableRaster ins_WritableRaster
                  = para_ins_BufferedImage.getRaster () ;
    DataBufferByte ins_DataBufferByte
                 = ( DataBufferByte ) ( ins_WritableRaster.getDataBuffer () ) ;
    byte[] array_byte = ins_DataBufferByte.getData ( ) ;
            //set image data into array_byte
            //             ( into para_ins_BufferedImage )
    para_ins_Mat.get ( 0 , 0 , array_byte ) ;

    System.out.println ( "image data have converted to BufferedImage") ;

    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                " : methode = " + this_methode_name ) ;
    System.out.println ( "  ----------------------------------" ) ;

    return para_ins_BufferedImage    ;
   }

//=================================
//load BaseImageData
//=================================
  public Mat load_BaseImageData  ( ) {

    String this_methode_name = "load_BaseImageData" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

                                //read the file directed by para_data_number   
    String w1 =  ConstantValues.cv_path_of_dir_BaseImage
                                    + "\\BaseImage.png" ;
    System.out.println ( "current : w1 = " + w1 ) ;

    cv_ins_Mat_contain_BaseImageData = null ;   
    cv_ins_Mat_contain_BaseImageData
                                   //Using OpenCV3
                    = Imgcodecs.imread ( w1 ) ;
     cv_width_of_BaseImageData
           = cv_ins_Mat_contain_BaseImageData
                                  .width () ;
    cv_height_of_BaseImageData
            = cv_ins_Mat_contain_BaseImageData
                                  .height () ;
    System.out.println ( "cv_width_of_BaseImageData = "
                                + cv_width_of_BaseImageData ) ;   
    System.out.println ( "cv_height_of_BaseImageData = "
                                + cv_height_of_BaseImageData ) ;

    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                          " : methode = " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;

    return cv_ins_Mat_contain_BaseImageData ;
  }

//==========================    
//construct BufferedImage instance
//          related to Mat instance
//==========================    
  private BufferedImage construct_BufferedImage_instance  (
                                     Mat arg_ins_Mat
                                                                                                              ) {

    String this_methode_name = "construct_BufferedImage_instance" ;

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

           //get size of image data    
    Size ins_Size = arg_ins_Mat.size () ;

              //get type of Mat
    int type_of_Mat = 0 ;
    if ( ( arg_ins_Mat.channels () != 1 )
         &&
         ( arg_ins_Mat.channels () != 3 )
       ) {
      return null;
     }    
    if ( arg_ins_Mat.channels () == 1) {
      type_of_Mat = BufferedImage.TYPE_BYTE_GRAY ;
     }
    if ( arg_ins_Mat.channels () == 3 ) {
       type_of_Mat = BufferedImage.TYPE_3BYTE_BGR;
     }
             //construct instance of BufferedImage
    BufferedImage ins_BufferedImage
        = new BufferedImage (
                arg_ins_Mat.width () , arg_ins_Mat.height ()
                      , type_of_Mat ) ;

    System.out.println ( "Exit from Class = " + cv_this_Class_name +
            " : methode = " + this_methode_name ) ;
    System.out.println ( "  ----------------------------------" ) ;

     return ins_BufferedImage  ;
    }

}

-------------------------
==============================
CreateImageForDisplay.java

 下記中の、cv_array_value_Xdash_drawn は、陰線処理を行うためのものです。

--------------------------
import org.opencv.core.Mat;

public class CreateImageForDisplay {

      String cv_this_Class_name = "CreateImageForDisplay" ;

      Mat cv_ins_Mat_BaseImageData ;
      int cv_width_of_Mat_BaseImageData ;
      int cv_height_of_Mat_BaseImageData ;

      int cv_origin_cordinate_X_of_drawing ;
      int cv_origin_cordinate_Y_of_drawing ;
      double cv_scale_of_drawing ;
      int cv_thickness_of_layer ;

      double [ ] [ ]  cv_array_value_Xdash_drawn ;

            //for calculating the cordinate value after 3Dspace rotation      
      Rotation3DZY  cv_ins_Rotation3DZY ;

//======================
//Constructer
//======================   
  CreateImageForDisplay (
                      Mat para_ins_Mat_BaseImageData
                                              ) {

        String this_methode_name = "constructer" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

        cv_scale_of_drawing = 1.0 ;
        cv_thickness_of_layer = 20 ;

        cv_ins_Mat_BaseImageData = para_ins_Mat_BaseImageData ;
        cv_width_of_Mat_BaseImageData
                     = cv_ins_Mat_BaseImageData.width ( ) ;
        cv_height_of_Mat_BaseImageData
                     = cv_ins_Mat_BaseImageData.height ( ) ;
        cv_origin_cordinate_X_of_drawing
                     = cv_width_of_Mat_BaseImageData / 2 ;
        cv_origin_cordinate_Y_of_drawing
                     = cv_height_of_Mat_BaseImageData / 2 ;

        make_Xdash_drawn_table (
                                     cv_width_of_Mat_BaseImageData
                                   , cv_height_of_Mat_BaseImageData
                                                            ) ;

        cv_ins_Rotation3DZY = new Rotation3DZY ( ) ;

         System.out.println ( "Exit from Class : "
                      + cv_this_Class_name
                      +   " , Methode : " + this_methode_name ) ;
         System.out.println ( "----------------------------------" ) ;
        }

//-------------------------------------
// make Xdash_drawn table
//-------------------------------------
   public   void make_Xdash_drawn_table (
            int para_width_of_BaseImageData
          , int para_height_of_BaseImageData
           ) {

        cv_array_value_Xdash_drawn = new double
                                                [ cv_width_of_Mat_BaseImageData ]                        
                                                [ cv_height_of_Mat_BaseImageData ]
                                                                        ;
     }
//-------------------------------------
// initialize Xdash_drawn table
//-------------------------------------
  public   void initialize_Xdash_drawn_table (  ) {

        for ( int i = 0 ; i < cv_width_of_Mat_BaseImageData ; i ++ ) {
            for ( int j = 0 ; j < cv_height_of_Mat_BaseImageData ; j ++ ) {            
                cv_array_value_Xdash_drawn
                        [ i ]     [ j ]  = -10000 ;            
            }            
         }   
      }

//-------------------------------------------------------------------   
//modify BaseImageData using LayerImageDataS
  //-------------------------------------------------------------------
    public  Mat  modify_BaseImageData_using_LayerImageDataS  (
                                        double para_angle_around_Z
                                      , double  para_angle_around_Y
                                      , Mat para_ins_Mat_contain_BaseImageData
                                      , ContainImageDatas
                                            para_ins_ContainImageDatas_All_LayerS
                                                                              ) {

        String  this_methode_name
                 = "modify_BaseImageData_using_LayerImageDataS" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

        cv_ins_Mat_BaseImageData
               = para_ins_Mat_contain_BaseImageData ;

        initialize_Xdash_drawn_table (  ) ;
          prepare_for_rotation (
                      para_angle_around_Z
                    , para_angle_around_Y
                                 ) ;

          int number_of_layers
               = para_ins_ContainImageDatas_All_LayerS
                       .get_number_of_Mat (  ) ;

        for ( int number_of_Layer = 1
                         ; number_of_Layer <= number_of_layers
                         ; number_of_Layer ++ ) {

            System.out.println ( "Class = " + cv_this_Class_name +
                      " : methode = " + this_methode_name ) ;
            System.out.println ( "number_of_Layer  = " + number_of_Layer  ) ;

           draw_one_Layer (
                             number_of_Layer
                          , ( para_ins_ContainImageDatas_All_LayerS
                                      .get_Mat ( number_of_Layer ) )
                                         ) ;
          }

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;

        return cv_ins_Mat_BaseImageData ;
    }
//------------------------------------------
//draw_one_Layer
//------------------------------------------   
    private void draw_one_Layer (
                                    int para_number_of_Layer
                                  , Mat para_ins_Mat_for_draw_layer_image
                                                             )  {

         int width_of_Mat
              = para_ins_Mat_for_draw_layer_image.width () ;
         int height_of_Mat
              = para_ins_Mat_for_draw_layer_image.height () ;
         int half_width_of_Mat = width_of_Mat / 2 ;
         int half_height_of_Mat = height_of_Mat / 2 ;

         int from_x = 0 - half_height_of_Mat + 2 ;
         int to_x =  half_height_of_Mat - 2 ;
         int from_y = 0 - half_width_of_Mat + 2 ;
         int to_y =  half_width_of_Mat - 2 ;       
         int from_z = para_number_of_Layer * cv_thickness_of_layer ;
         int to_z = ( para_number_of_Layer + 1 ) * cv_thickness_of_layer - 1 ;

         for ( int x = from_x ; x <= to_x ; x ++ ) {
             for ( int y = from_y ; y <= to_y ; y ++ ) {
                 for ( int z = from_z ; z <= to_z ; z ++ ) {
                   draw_one_point (
                           x , y , z
                          , para_ins_Mat_for_draw_layer_image
                          , half_width_of_Mat
                          , half_height_of_Mat
                                                     ) ;
                   }
               }
            }   

       }
//--------------------------------------------------
    private   char draw_one_point (
                           int para_x , int para_y , int para_z
                      , Mat para_ins_Mat_for_draw_layer_image
                      , int para_half_width_of_Mat
                      , int para_half_height_of_Mat
                                         ) {

      String this_methode_name = "draw_one_point" ;

      char return_value = 'E' ;

      double  [ ] drawing_color
           =  decide_drawing_color (
                            para_x , para_y
                         ,  para_ins_Mat_for_draw_layer_image
                      ,  para_half_width_of_Mat
                      ,  para_half_height_of_Mat
                        ) ;
      if ( ( drawing_color [ 0 ] > 250 )
              &&
              ( drawing_color [ 1 ] > 250 )
              &&
              ( drawing_color [ 2 ] > 250 )
              ) {
                //if color is near to white, do not draw this point
          return 'N' ;
      }

      double [  ]  after_rotation_cordinate   = new double  [ 3 ] ;
      double [  ]  before_rotation_cordinate   = new double  [ 3 ] ;
      before_rotation_cordinate [ 0 ] = para_x  ;      
      before_rotation_cordinate [ 1 ] = para_y  ;   
      before_rotation_cordinate [ 2 ]  = para_z ;

                     //calculate the cordinate value after 3Dspace rotation
      cv_ins_Rotation3DZY.calculate (
                               before_rotation_cordinate
                            ,  after_rotation_cordinate
                            )     ;
      int [ ] drawing_location_xy
                  = decide_drawing_location (  after_rotation_cordinate ) ;

      if ( ( drawing_location_xy [ 0 ] < 0 )
              ||
              ( drawing_location_xy [ 0 ] >= cv_width_of_Mat_BaseImageData )
              ||
              ( drawing_location_xy [ 1 ] < 0 )
              ||
              ( drawing_location_xy [ 1 ] >= cv_height_of_Mat_BaseImageData )            
          ) {
                      //can not draw this point
            System.out.println ( "***********************************" ) ;      
            System.out.println ( "Class = "
                          + cv_this_Class_name
                          +   " , Methode : " + this_methode_name ) ;
            System.out.println ( "Error" ) ;
            System.out.println ( "drawing_location_xy = "
                          +drawing_location_xy [ 0 ]
                         + " , " + drawing_location_xy [ 1 ] ) ;
            System.out.println ( "cv_width_of_Mat_BaseImageData = "
                         + cv_width_of_Mat_BaseImageData ) ;
            System.out.println ( "cv_height_of_Mat_BaseImageData = "
                           + cv_height_of_Mat_BaseImageData ) ;

            return return_value ;
         }

       double value_Xdash = after_rotation_cordinate [ 0 ] ;
       double w_Xdash_drawn
                  = cv_array_value_Xdash_drawn
                                 [ drawing_location_xy [ 0 ] ] [ drawing_location_xy [ 1 ]  ] ;
       if ( value_Xdash > w_Xdash_drawn ) {
                    //draw this location
           cv_ins_Mat_BaseImageData
                   .put (
                           drawing_location_xy [ 1 ]
                        ,  drawing_location_xy [ 0 ]
                         ,  drawing_color
                         ) ;
            cv_array_value_Xdash_drawn
                              [ drawing_location_xy [ 0 ] ]
                              [ drawing_location_xy [ 1 ]  ]
                   = value_Xdash ;
         }

      return_value = 'Y' ;
      return return_value ;
    } 

//---------------------------------------
//  decide_drawing_location
//---------------------------------------         
    private   int [ ] decide_drawing_location ( double [ ]  para_cordinate ) {

        int [ ] return_value = new int [ 2 ] ;

        return_value [ 0 ]
                        = ( int ) ( cv_origin_cordinate_X_of_drawing  +
                                             para_cordinate [ 1 ]
                                                   * cv_scale_of_drawing ) ;
        return_value [ 1 ]
                        = (int) ( cv_origin_cordinate_Y_of_drawing   -
                                                 para_cordinate [ 2]
                                                     * cv_scale_of_drawing ) ;

        return return_value ;
    }
//--------------------------------------------------   
   private   double [ ]  decide_drawing_color (
                             int para_x , int para_y
                              ,  Mat para_ins_Mat_for_draw_layer_image
                          ,  int para_half_width_of_Mat
                          ,  int para_half_height_of_Mat
                                                                ) {

       String this_methode_name = "decide_drawing_color" ;

       int get_X_on_Mat = para_y + para_half_width_of_Mat ;
       int get_Y_on_Mat =  para_x + para_half_height_of_Mat ;
       double [ ] get_color   
                    =  para_ins_Mat_for_draw_layer_image
                               .get (
                                       get_Y_on_Mat, get_X_on_Mat
                                        ) ;
        return get_color ;
   }

//------------------------------------------------------------------
  public   void prepare_for_rotation  (
              double  para_rotation_angle_around_Z_axis
            , double  para_rotation_angle_around_Y_axis
                                        ) {

      cv_ins_Rotation3DZY
               .prepare_RotationMatrix (
                          para_rotation_angle_around_Z_axis
                        , para_rotation_angle_around_Y_axis ) ;
     }

}


-------------------------
==============================
ContainImageDatas.java
--------------------------
import org.opencv.core.Mat ;
import org.opencv.imgcodecs.Imgcodecs ;

public class ContainImageDatas {

  private String cv_this_Class_name = "ContainImageDatas" ;

  private Mat [ ] cv_array_Mat ;
  private int cv_number_of_Mat ;

//======================
//Constructer
//======================   
  ContainImageDatas (
                    int para_number_of_Mat
                                          ) {

    String this_methode_name = "constructer" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;

    cv_number_of_Mat = para_number_of_Mat ;
    cv_array_Mat = new Mat [ cv_number_of_Mat ] ;

    StringBuffer  w1 = new StringBuffer () ;
    int w2 , w3 ;   

    for ( int i = 1 ; i <= para_number_of_Mat ; i ++ ) {
                         //make file path
        w1.setLength ( 0 ) ;
        w1.append ( ConstantValues.cv_path_of_dir_LayerImages ) ;
        w1.append ( "\\" ) ;
        w2 = i / 10 ;
        w3 = i % 10 ;
        w1.append ( "L" + w2 + w3 + ".png" ) ;   
                       //read the file directed by w1   
       cv_array_Mat [ i - 1 ]
                             //Using OpenCV3
                     = Imgcodecs.imread ( w1.toString () ) ;
       System.out.println ( "i = " + i ) ;
       System.out.println ( "w1 = " + w1 ) ;
       System.out.println ( "Loaded" ) ;
       System.out.println ( "width and height = "
                 + cv_array_Mat [ i - 1 ].width ()  + " , " + cv_array_Mat [ i - 1 ].height () ) ;   
      }

     System.out.println ( "Exit from Class : "
                  + cv_this_Class_name
                  +   " , Methode : " + this_methode_name ) ;
    }

//---------------------------------
  public Mat get_Mat ( int para_index_of_Mat ) {

     return cv_array_Mat [ para_index_of_Mat - 1 ] ;
    }
//---------------------------------
  public int get_number_of_Mat (  ) {

     return cv_number_of_Mat ;
    }
}


-------------------------
==============================
Rotation3DZY.java
--------------------------
public class Rotation3DZY {

  private String cv_Class_name = "Rotation3DZY" ;

             //Matrix for rotation ( 2 phase )
  private double [ ] [ ] [ ] cv_Matrix_for_rotation ;

//======================
//Constructer
//======================   
  Rotation3DZY ( ) {

    String this_methode_name = "Constructer" ;

    System.out.println ( "----------------------------------" ) ;      
    System.out.println ( "Enter into Class : "
                  + cv_Class_name
                  +   " , Methode : " + this_methode_name ) ;

    cv_Matrix_for_rotation
             = new double
                        //ration phase
                       [ 2 ]
                     //row                                     
                          [ 3 ]
                           //column
                          [ 3 ]
                     ;

    System.out.println ( "Exit from Class : "
              + cv_Class_name
              +   " , Methode : " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;      
  }

  //-----------------------------------------------------------------------
  public  void  prepare_RotationMatrix (
               double arg_rotation_angle_around_Z_axis
            ,  double arg_rotation_angle_around_Y_axis
                       ) {

    double cos_around_Z_axis
            = Math.cos ( Math.PI * ( arg_rotation_angle_around_Z_axis / 180.0 ) ) ;
    double sin_around_Z_axis
            = Math.sin ( Math.PI * ( arg_rotation_angle_around_Z_axis / 180.0 ) ) ;
    double cos_around_Y_axis
            = Math.cos ( Math.PI * ( arg_rotation_angle_around_Y_axis / 180.0 ) ) ;   
    double sin_around_Y_axis
            = Math.sin ( Math.PI * ( arg_rotation_angle_around_Y_axis / 180.0 ) ) ;

       //---------------------------------------------
         //phase 1 ( rotate around Z axis )
    cv_Matrix_for_rotation     [ 0 ] [ 0 ] [ 0 ] =
                    //cos ( rotation angle of phase 1 )
            cos_around_Z_axis ; 
    cv_Matrix_for_rotation [ 0 ]   [ 0 ] [ 1 ] =
                 //sin ( rotation angle of phase 1 )
            sin_around_Z_axis  ;   
    cv_Matrix_for_rotation     [ 0 ] [ 0 ] [ 2 ] = 0.0 ;

    cv_Matrix_for_rotation     [ 0 ] [ 1 ] [ 0 ] =
                  //- sin ( rotation angle of phase 1 )
                 ( 0.0 -  sin_around_Z_axis ) ;    
    cv_Matrix_for_rotation     [ 0 ] [ 1 ] [ 1 ]  =
                  //cos ( rotation angle of phase 1 )
            cos_around_Z_axis ; 
    cv_Matrix_for_rotation     [ 0 ] [ 1 ] [ 2 ] = 0.0 ;

    cv_Matrix_for_rotation     [ 0 ] [ 2 ] [ 0 ] = 0.0 ;
    cv_Matrix_for_rotation     [ 0 ] [ 2 ] [ 1 ] = 0.0 ;
    cv_Matrix_for_rotation     [ 0 ] [ 2 ] [ 2 ] = 1.0 ;

       //---------------------------------------------      
               //phase 2 ( rotate around Y axis )
    cv_Matrix_for_rotation     [ 1 ] [ 0 ] [ 0 ] =
                   //cos ( rotation angle of phase 2 )
            cos_around_Y_axis ; 
    cv_Matrix_for_rotation     [ 1 ] [ 0 ] [ 1 ] = 0.0 ; 
    cv_Matrix_for_rotation     [ 1 ] [ 0 ] [ 2 ] =
                   //- sin ( rotation angle of phase 2 )
                     ( 0.0 -  sin_around_Y_axis )  ; 

    cv_Matrix_for_rotation     [ 1 ] [ 1 ] [ 0 ] = 0.0 ; 
    cv_Matrix_for_rotation     [ 1 ] [ 1 ] [ 1 ]  = 1.0 ;
    cv_Matrix_for_rotation     [ 1 ] [ 1 ] [ 2 ] = 0.0 ;

    cv_Matrix_for_rotation [ 1 ] [ 2 ] [ 0 ] =
                   // sin ( rotation angle of phase 2 )
            sin_around_Y_axis   ;   
    cv_Matrix_for_rotation     [ 1 ] [ 2 ] [ 1 ] = 0.0 ;
    cv_Matrix_for_rotation     [ 1 ] [ 2 ] [ 2 ] =
                   //cos ( rotation angle of phase 2 )
            cos_around_Y_axis ; 
       //---------------------------------------------      

    }

  //--------------------------------------------------------------------------
   public  void  calculate (
                    double [ ] arg_vector_before_rotation
                   , double  [ ] arg_vector_after_rotation
                               ) {

                     //apply phase 1 rotation
              double [ ] ins_value_after_phase1 = new double [ 3 ] ;

              Matrix33Calc.calculate (
                               cv_Matrix_for_rotation [ 0 ]
                            ,  arg_vector_before_rotation
                            ,  ins_value_after_phase1
                                                         ) ;

                         //apply phase 2 rotation
              Matrix33Calc.calculate (
                         cv_Matrix_for_rotation [ 1 ]
                      ,  ins_value_after_phase1
                      ,  arg_vector_after_rotation
                                                   ) ;
           }
         }


-------------------------
==============================
Matrix33Calc.java
--------------------------
//----------------------------------------------
// calculate the values using 3 3 Matrix
//----------------------------------------------

public class Matrix33Calc {

  public static void  calculate (
            double [ ] [ ] arg_Matrix
         ,  double [ ] arg_vector_operation_applied
         , double  [ ] arg_vector_operation_result
                                         ) {

      for ( int index_row = 0 ; index_row <= 2 ; index_row ++ ) {

          arg_vector_operation_result [ index_row ] =
                  arg_Matrix [ index_row ] [ 0 ]
                          * arg_vector_operation_applied [ 0 ]      
             +  arg_Matrix [ index_row ] [ 1 ]
                          * arg_vector_operation_applied [ 1 ] 
             + arg_Matrix [ index_row ] [ 2 ]
                         * arg_vector_operation_applied [ 2 ]
                     ;                     
       }   
     }
}

-------------------------
==============================
JFrameShowImageData.java
--------------------------
import java.awt.Graphics ;
import java.awt.image.BufferedImage ;
import java.awt.Color ;

import javax.swing.JFrame ;
import javax.swing.JPanel ;

//-------------------------------------------------
//JFrame for showing image data
//-------------------------------------------------
class JFrameShowImageData extends JFrame {

  private String mv_this_Class_name = " JFrameShowImageData" ;

          //for display image
  private JPanelShowImageData  cv_ins_JPanelShowImageData ;

  private int cv_width_of_Frame ;
  private int cv_height_of_Frame;
  private int cv_topLeftLocation_x_of_Frame ;
  private int cv_topLeftLocation_y_of_Frame ;

//======================
//Constructer
//======================   
    JFrameShowImageData (
            String para_title
          , int para_width_of_Frame      
          , int para_height_of_Frame    
          , int para_topLeftLocation_x_of_Frame      
          , int para_topLeftLocation_y_of_Frame    
                              ) {

      String this_methode_name = "constructer" ;

      System.out.println ( "----------------------------------" ) ;
      System.out.println ( "Enter into Class = " + mv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

      cv_width_of_Frame = para_width_of_Frame ;
      cv_height_of_Frame = para_height_of_Frame ;
      cv_topLeftLocation_x_of_Frame
                  = para_topLeftLocation_x_of_Frame ;
      cv_topLeftLocation_y_of_Frame
                  = para_topLeftLocation_y_of_Frame ;

      setTitle ( para_title ) ;
      setBounds (
           cv_topLeftLocation_x_of_Frame
          , cv_topLeftLocation_y_of_Frame            
          , cv_width_of_Frame
          , cv_height_of_Frame
                ) ;
      setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;

      cv_ins_JPanelShowImageData
             = new JPanelShowImageData ( )  ;
      add ( cv_ins_JPanelShowImageData ) ;
    }

//=================================
//  set_display_image_BufferedImage
//=================================   
  public  void set_display_image_BufferedImage (
                                             BufferedImage para_ins_BufferedImage
                                                                                            ) {

     cv_ins_JPanelShowImageData
               .set_BufferedImage ( para_ins_BufferedImage ) ;
   }

//=================================
//do_repaint
//=================================   
  public  void do_repaint ( ) {

     cv_ins_JPanelShowImageData
                    .do_repaint ( ) ;
   }

}

//-------------------------------------------------------------------------------------
class JPanelShowImageData extends JPanel {

   private String cv_this_Class_name = "JPanelShowImageData" ;

   private BufferedImage cv_ins_BufferedImage ;
   private int  cv_width_of_Drawing ;
   private int  cv_height_of_Drawing ;
   private int cv_width_of_BufferedImage ;
   private int cv_height_of_BufferedImage ;

//=================================    
//set_BufferedImage 
//=================================      
   public void set_BufferedImage (
                                  BufferedImage para_BufferedImage             
                                                                 ) {

      String this_methode_name = "set_BufferedImage" ;

      System.out.println ( "  ----------------------------------" ) ;
      System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                        " : methode = " + this_methode_name ) ;

      cv_ins_BufferedImage = para_BufferedImage ;
      cv_width_of_BufferedImage
            = cv_ins_BufferedImage.getWidth ( ) ;
      cv_height_of_BufferedImage
            = cv_ins_BufferedImage.getHeight ( ) ;

        System.out.println ( "cv_width_of_BufferedImage = "  +
             cv_width_of_BufferedImage ) ;
      System.out.println ( "cv_height_of_BufferedImage = "  +
            cv_height_of_BufferedImage ) ;

      System.out.println ( "  ----------------------------------" ) ;
      System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
     }

//=================================   
//do_repaint
//=================================    
  public void do_repaint ( ) {

     compute_Size_of_Drawing ( ) ;
     repaint ( ) ;
    }

//======================
//paint image
//======================
  public void paint ( Graphics para_ins_Graphics ) {

                            //clear Panel      
      Color ins_Color_for_clear = new Color ( 0 , 0 , 100 ) ;
      para_ins_Graphics
               .setColor ( ins_Color_for_clear ) ;
      para_ins_Graphics
               .fillRect (
                      0, 0,
                      cv_width_of_BufferedImage
                    , cv_height_of_BufferedImage
                              ) ;
                            //draw image      
      para_ins_Graphics.drawImage (
                       cv_ins_BufferedImage
                     , 0 , 0
                     , cv_width_of_Drawing
                     , cv_height_of_Drawing
                     , this
                                                               ) ;
    }

//=================================    
//compute_Size_of_Drawing   
//=================================   
    public  void compute_Size_of_Drawing ( ) {

      String this_methode_name = "compute_Size_of_Drawing" ;

        System.out.println ( "  ----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                    " : methode = " + this_methode_name ) ;

        cv_width_of_Drawing = ( int )
                (  cv_width_of_BufferedImage
                         * Bridge.cv_Drawing_Scale_of_Showing_Image ) ;
        cv_height_of_Drawing = ( int )
                (  cv_height_of_BufferedImage
                         * Bridge.cv_Drawing_Scale_of_Showing_Image ) ;

        System.out.println ( "cv_width_of_BufferedImage = "
                     + cv_width_of_BufferedImage ) ;
        System.out.println ( " cv_height_of_BufferedImage = "
                     +  cv_height_of_BufferedImage ) ;
        System.out.println ( "Bridge.cv_Drawing_Scale_of_Showing_Image = "
             + Bridge.cv_Drawing_Scale_of_Showing_Image ) ;
        System.out.println ( "cv_width_of_Drawing = " + cv_width_of_Drawing ) ;
        System.out.println ( "cv_height_of_Drawing = " + cv_height_of_Drawing ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                    " : methode = " + this_methode_name ) ;
        System.out.println ( "  ----------------------------------" ) ;
     }

}

-------------------------
==============================
JFrameDataInput.java
--------------------------
import java.awt.BorderLayout ;
import java.awt.Dimension ;
import java.awt.Font ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;

import javax.swing.JFrame ;
import javax.swing.JPanel ;
import javax.swing.JLabel ;
import javax.swing.JTextField ;

//-------------------------------------------------
//JFrame for intput data
//-------------------------------------------------
class JFrameDataInput extends JFrame {

    private String mv_this_Class_name = "JFrameDataInput" ;

    private final String cv_title_of_JFrame = "For Data Input" ;   

    private int cv_width_of_Frame ;
    private int cv_height_of_Frame;
    private int cv_topLeftLocation_x_of_Frame ;
    private int cv_topLeftLocation_y_of_Frame ;

    //======================
    //Constructer
    //======================   
  JFrameDataInput (
                       int para_width_of_Frame      
                     , int para_height_of_Frame    
                     , int para_topLeftLocation_x_of_Frame      
                     , int para_topLeftLocation_y_of_Frame    
          ) {

    String this_methode_name = "constructer" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + mv_this_Class_name +
                              " : methode = " + this_methode_name ) ;

    cv_width_of_Frame = para_width_of_Frame ;
    cv_height_of_Frame = para_height_of_Frame ;
    cv_topLeftLocation_x_of_Frame
                  = para_topLeftLocation_x_of_Frame ;
    cv_topLeftLocation_y_of_Frame
                  = para_topLeftLocation_y_of_Frame ;

    setTitle ( cv_title_of_JFrame ) ;
    setBounds (
               cv_topLeftLocation_x_of_Frame
              , cv_topLeftLocation_y_of_Frame            
              , cv_width_of_Frame
               , cv_height_of_Frame
                  ) ;
    setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;

    JPanel ins_JPanel = new JPanel () ;

         //---------------------------      
      JLabel ins_1_JLabel = new JLabel ( "Angle around Z axis = " ) ;
      ins_1_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
      JTextField ins_1_JTextField = new JTextField ( "30.0" ) ;
      ins_1_JTextField.setPreferredSize ( new Dimension ( 80, 40 ) ) ;
      ins_1_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
      ActionListenerText1 ins_ActionListenerText1
                      = new ActionListenerText1 ( ) ;
      ins_1_JTextField.addActionListener ( ins_ActionListenerText1 ) ;
      ins_JPanel.add ( ins_1_JLabel ) ;
      ins_JPanel.add ( ins_1_JTextField ) ;
         //---------------------------      
      JLabel ins_2_JLabel = new JLabel ( "Angle around Y axis  = " ) ;
      ins_2_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
       JTextField ins_2_JTextField = new JTextField ( "-15.0" ) ;
      ins_2_JTextField.setPreferredSize ( new Dimension ( 80, 40 ) ) ;
      ins_2_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
      ActionListenerText2 ins_ActionListenerText2
                    = new ActionListenerText2 ( ) ;
      ins_2_JTextField.addActionListener ( ins_ActionListenerText2 ) ;
      ins_JPanel.add ( ins_2_JLabel ) ;
      ins_JPanel.add ( ins_2_JTextField ) ;
         //---------------------------      
      JLabel ins_3_JLabel = new JLabel ( "Drawing Scale  = " ) ;
      ins_3_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
      JTextField ins_3_JTextField = new JTextField ( "1.0" ) ;
      ins_3_JTextField.setPreferredSize ( new Dimension ( 80, 40 ) ) ;
      ins_3_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 25 ) ) ;
      ActionListenerText3 ins_ActionListenerText3
                    = new ActionListenerText3 ( ) ;
      ins_3_JTextField.addActionListener ( ins_ActionListenerText3 ) ;
      ins_JPanel.add ( ins_3_JLabel ) ;
      ins_JPanel.add ( ins_3_JTextField ) ;
//---------------------------      
      add ( ins_JPanel , BorderLayout.CENTER ) ;
    }
}

//-------------------------------------------------------
class ActionListenerText1 implements ActionListener {

  private String mv_this_Class_name = "ActionListenerText1" ;

  public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

    String this_methode_name = "actionPerformed" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + mv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

               //get JTextField instance related
    JTextField ins_JTextField
           = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
              //set value to related variety
    Bridge.cv_angle_around_Z
             = Double.parseDouble ( ins_JTextField.getText () ) ;
             //request process to Mediater
    Mediater.do_repaint_process ( ) ;

    System.out.println ( "Exit from Class = " + mv_this_Class_name +
                          " : methode = " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;
   }
}
//-------------------------------------------------------
class ActionListenerText2 implements ActionListener {

private String mv_this_Class_name = "ActionListenerText2" ;

public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

  String this_methode_name = "actionPerformed" ;

  System.out.println ( "----------------------------------" ) ;
  System.out.println ( "Enter into Class = " + mv_this_Class_name +
                                " : methode = " + this_methode_name ) ;

                        //get JTextField instance related
  JTextField ins_JTextField
                = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
                       //set value to related variety
  Bridge.cv_angle_around_Y
               = Double.parseDouble ( ins_JTextField.getText () ) ;
                      //request process to Mediater
  Mediater.do_repaint_process ( ) ;

  System.out.println ( "Exit from Class = " + mv_this_Class_name +
                 " : methode = " + this_methode_name ) ;
  System.out.println ( "----------------------------------" ) ;
}
}

//-------------------------------------------------------
class ActionListenerText3 implements ActionListener {

  private String mv_this_Class_name = "ActionListenerText3" ;

  public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

    String this_methode_name = "actionPerformed" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + mv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

                          //get JTextField instance related
    JTextField ins_JTextField
                  = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
                         //set value to related variety
    Bridge.cv_Drawing_Scale_of_Showing_Image
                 = Double.parseDouble ( ins_JTextField.getText () ) ;
                        //request process to Mediater
    Mediater.do_repaint_process ( ) ;

    System.out.println ( "Exit from Class = " + mv_this_Class_name +
                   " : methode = " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;
   }
}

------------------------------------------------

コンピューター・プログラム 制作 インデックス

Java プログラム 制作 関数(数学の)形を表示する

コンピューター・プログラム 制作 インデックス

関数(数学の)形を表示する、というコンピューター・プログラムを制作しました、Java言語で。

以下に、その様を記述しますが、その記述内容は、このようなコンピューター・プログラムを制作した、それを動かしたら、このような結果になった、というような事を、ただ、淡々と述べているに過ぎません。

下記の記述をお読みになった方が、それを単に参考にする、というのであれば、問題は無いと思われます。

しかし、記述されている内容に沿って、その方がそこに記されているのと同様の制作や作業を行われた際に、その制作や作業の結果、使用されたコンピューター等、様々な方面において、何らかの問題が発生しない、という保証は、全くありません。

その作業の結果、その方や、その方が使用された様々な器機、インフラ等の身の上にどのような事が起ころうとも、私は一切、責任を負いません。

------------
1 できたもの

制作作業の結果、できたのが、下記のようなコンピューター・プログラムです。

起動すると、下記のような2つの画面が、コンピューターのディスプレイ上に表示されます。

Fig1

Fig1

これは、

 y = sin ( π × ( x / 6 ) )

という関数の、x と y の値を、プロットしたものです。

このコンピューター・プログラム中のある場所(後で詳しく述べます)に、Java言語で下記のように記述が行われているので、このように、その関数の形が表示されているのです。

       double y_value
             = Math.sin ( Math.PI * ( para_x_value / 6.0 ) ) ;

[For Data Input] 画面は、プログラムに対する操作の指示や、データ入力を行うためのものです。ここから様々な値を入力することにより、表示される関数の形を変えることができます。

例えば、下図のように、[ To X ]の値を変えることにより、関数の値が表示されるx値の範囲を変更することができます。

Fig2

Fig2

更に、下図のように、[ Interval X ]の値を変えることにより、関数の値が表示されるx値を、更にきめ細かく設定することができます。

Fig3

Fig3

表示対象となる関数の定義式を書いておく場所は、プログラム中の、下記の場所です:

  (このプログラムのソースリストが、後の方にあります)

Procc.java ファイル中の
 Procc クラス の記述の中の
  defined_function メソッドの記述

そこに、下記のように書いておいたのです。

//=================================
//defined_function
//=================================
    private double defined_function ( double para_x_value ) {

//***************************************************
       double y_value
             = Math.sin ( Math.PI * ( para_x_value / 6.0 ) ) ;
//***************************************************

        return y_value ;
     }

この部分を、下記のように書き直してみました。関数の定義を書き直したのです。

//=================================
//defined_function
//=================================
    private double defined_function ( double para_x_value ) {

//***************************************************
        double y_value
              = 0.3 * Math.sin ( Math.PI * ( para_x_value / 6.0 ) )
                 +
                 0.7 * Math.sin ( Math.PI * ( para_x_value / 3.0 ) )
                 ;
//***************************************************

        return y_value ;
     }

書き直しを行った後のプログラムを起動すると、下記のようになりました。

Fig4

Fig4

更に、この部分を、下記のように書き直してみました。関数の定義を書き直したのです。

//=================================
//defined_function
//=================================
    private double defined_function ( double para_x_value ) {

//***************************************************
        double y_value = 0.0 ;

        if ( para_x_value <= 8.0 ) {
            y_value = para_x_value * para_x_value ;      
          }
        else {
            y_value = 64.0 + ( para_x_value - 8.0 ) * 0.5 ;      
          }
//***************************************************

        return y_value ;
     }

書き直しを行った後のプログラムを起動すると、下記のようになりました。

Fig5

Fig5

------------
2 使用したコンピューターとソフトウェア

この、コンピューター・プログラムを制作・実行するために使用したものは、下記の通りです。

コンピューター

 CPU : Core(TM) i7-7700HQ
 メモリー : 16 GB
 Operating System : Windows 10 Home, 64ビットオペレーティングシステム

Java

 jdk-8u181-windows-x64.exe

------------
3 ソースリスト

このコンピューター・プログラムのソースリストを、以下に記します。

複数個のファイルに分割して記述しました。

==============================
Test3.java
----------------------
public class Test3 {

  private static String cv_this_Class_name = "Test3" ;

  public static void main ( String[] args ) {

    String this_methode_name = "main" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                      " : methode = " + this_methode_name ) ;

                  //initialize value
    Bridge.cv_From_X = 0.0 ;
    Bridge.cv_To_X = 20.0 ;
    Bridge.cv_Interval_X = 0.2 ;
    Bridge.cv_Magnification_X = 1.0 ;
    Bridge.cv_Magnification_Y = 1.0 ;
    Bridge.cv_Length_Side_of_DrawingSquare = 8 ;

    Bridge.cv_Number_of_X_values_String = 6 ;
    Bridge.cv_Number_of_Y_values_String = 5 ;

                  //make instance of  data processing
    Procc ins_Procc
        = new Procc ( ) ;
                 //set the instance into Mediater class
    Mediater.set_Procc ( ins_Procc ) ;

                 //make instance for data input
    JFrameDataInput  ins_JFrameDataInput
                                      = new JFrameDataInput (
                                     //width of Frame
                              1500
                                     //height of Frame
                           ,  150
                                    //topLeft Location x of Frame
                           ,  1
                                    //topLeft Location y of Frame
                           ,  1
                                             ) ;
    ins_JFrameDataInput.setVisible ( true ) ;
                //set the instance into Mediater class
    Mediater.set_JFrameDataInput ( ins_JFrameDataInput ) ;

                //make instance for display
    JFrameDisplay ins_JFrameDisplay
                = new JFrameDisplay (
                                   //title of frame
                                     "For Display"
                                  //width of Frame
                                      ,  1500
                                  //height of Frame
                                     ,  900
                                  //topLeft Location x of Frame
                                     ,  1
                                  //topLeft Location y of Frame
                                     ,  144
                        ) ;
    ins_JFrameDisplay.setVisible ( true ) ;

                //set the instance into Mediater class
    Mediater.set_JFrameDisplay (
                    ins_JFrameDisplay
                                        ) ;

                //let Mediater to draw
    Mediater.draw_shape_of_function ( ) ;

    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                      " : methode = " + this_methode_name ) ;
    System.out.println ( "----------------------------------" ) ;
  }

}

==============================
Bridge.java
----------------------
public class Bridge {

    public static double cv_From_X ;
    public static double cv_To_X ;
    public static double cv_Interval_X ;
    public static double cv_Magnification_X ;
    public static double cv_Magnification_Y ;
    public static int cv_Length_Side_of_DrawingSquare ;
    public static int cv_Number_of_X_values_String ;
    public static int cv_Number_of_Y_values_String ;
  }
==============================
Mediater.java
----------------------
//-------------------------------------------------
//Mediater
//-------------------------------------------------
class Mediater {   

  public static JFrameDataInput cv_ins_JFrameDataInput ;
  public static JFrameDisplay cv_ins_JFrameDisplay ;
  public static Procc cv_ins_Procc ;

//----------------------------------------
  public static void set_JFrameDataInput (
          JFrameDataInput para_ins_JFrameDataInput
                     ) {

     cv_ins_JFrameDataInput = para_ins_JFrameDataInput ;
    }
//----------------------------------------
  public static void set_JFrameDisplay (
           JFrameDisplay para_ins_JFrameDisplay
                   ) {

    cv_ins_JFrameDisplay
             = para_ins_JFrameDisplay ;
   }
//----------------------------------------
  public static void set_Procc  (
          Procc para_ins_Procc
                       ) {

     cv_ins_Procc = para_ins_Procc ;
   }

//-------------------------------------
  public static void draw_shape_of_function ( ) {

      cv_ins_Procc
                   .calculate_function_value ( ) ;

      cv_ins_JFrameDisplay
            .set_display_information (
                 cv_ins_Procc.get_array_X_values ()
              ,  cv_ins_Procc.get_array_Y_values ()
              ,  cv_ins_Procc.get_number_of_values ()
                    ) ;

      cv_ins_JFrameDisplay
                    .do_repaint ( ) ;
   }
}

==============================
Procc.java
----------------------
//==========================
// Procc
//==========================
public class Procc {

  private String cv_this_Class_name = "Procc" ;

  private double [ ] cv_array_X_values ;
  private double [ ] cv_array_Y_values ;
  private int cv_number_of_values ;

//----------------------------
   public double [ ] get_array_X_values () {
       return cv_array_X_values ;
    }
//----------------------------
   public double [ ] get_array_Y_values () {
       return cv_array_Y_values ;
    }
//---------------------------- 
   public int get_number_of_values () {
       return cv_number_of_values ;
    }

//=================================
//calculate  function value
//=================================
  public void calculate_function_value ( )  {

      String this_methode_name = "calculate_function_value" ;

      System.out.println ( "----------------------------------" ) ;
      System.out.println ( "Enter into Class = " + cv_this_Class_name +
                          " : methode = " + this_methode_name ) ;

      int w1 = ( int ) ( ( Bridge.cv_To_X - Bridge.cv_From_X )
                                           / Bridge.cv_Interval_X
                                  ) ;
      cv_number_of_values = w1 + 1 ;
      cv_array_X_values = null ;
      cv_array_X_values = new double [ cv_number_of_values ] ;
      cv_array_Y_values = null ;
      cv_array_Y_values = new double [ cv_number_of_values ] ;

      double x_value = Bridge.cv_From_X ;
      double y_value = 0.0 ;

       for ( int i = 0 ; i < cv_number_of_values ; i ++ ) {
          y_value = defined_function ( x_value ) ;
          cv_array_X_values [ i ] = x_value ;
          cv_array_Y_values [ i ] = y_value  ;
          x_value += Bridge.cv_Interval_X ;
        }

      System.out.println ( "Exit from Class = " + cv_this_Class_name +
                    " : methode = " + this_methode_name ) ;
      System.out.println ( "----------------------------------" ) ;
    }

//=================================
//defined_function
//=================================
    private double defined_function ( double para_x_value ) {

//***************************************************
       double y_value
             = Math.sin ( Math.PI * ( para_x_value / 6.0 ) ) ;
//***************************************************

        return y_value ;
     }

}

==============================
JFrameDisplay.java
----------------------
      import java.awt.Graphics ;
      import java.awt.image.BufferedImage ;
      import java.awt.Color ;

      import javax.swing.JFrame ;
      import javax.swing.JPanel ;

//-------------------------------------------------
//JFrame for Display
//-------------------------------------------------
class JFrameDisplay extends JFrame {

  private String cv_this_Class_name = " JFrameDisplay" ;

                //for display image
  private JPanelDisplay cv_ins_JPanelDisplay ;

  private int cv_width_of_Frame ;
  private int cv_height_of_Frame;
  private int cv_topLeftLocation_x_of_Frame ;
  private int cv_topLeftLocation_y_of_Frame ;

//======================
//Constructer
//======================   
  JFrameDisplay (
                    String para_title
                 ,  int para_width_of_Frame      
                , int para_height_of_Frame    
                , int para_topLeftLocation_x_of_Frame      
                , int para_topLeftLocation_y_of_Frame    
                                    ) {

    String this_methode_name = "constructer" ;

      System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                " : methode = " + this_methode_name ) ;

    cv_width_of_Frame = para_width_of_Frame ;
    cv_height_of_Frame = para_height_of_Frame ;
     cv_topLeftLocation_x_of_Frame
                        = para_topLeftLocation_x_of_Frame ;
    cv_topLeftLocation_y_of_Frame
                        = para_topLeftLocation_y_of_Frame ;

    setTitle ( para_title ) ;
    setBounds (
                 cv_topLeftLocation_x_of_Frame
                , cv_topLeftLocation_y_of_Frame            
                , cv_width_of_Frame
                , cv_height_of_Frame
                      ) ;
    setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;

     cv_ins_JPanelDisplay
                   = new JPanelDisplay ( )  ;
    add ( cv_ins_JPanelDisplay ) ;

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                    " : methode = " + this_methode_name ) ;
   }

//=================================
//  set_display_information
//=================================   
  public  void  set_display_information (
                            double [ ] para_array_X_values
                         ,  double [ ] para_array_Y_values
                         ,  int para_number_of_values
                                                        ) {

    cv_ins_JPanelDisplay
                        .set_display_information (
                                 para_array_X_values
                              ,  para_array_Y_values
                              ,  para_number_of_values
                              ,  cv_width_of_Frame
                              ,  cv_height_of_Frame
                                                          ) ;
   }

//=================================
//do_repaint
//=================================   
  public  void do_repaint ( ) {

    cv_ins_JPanelDisplay
                .do_repaint ( ) ;
   }

}

//---------------------------------------------------------------------
class JPanelDisplay extends JPanel {

  private String cv_this_Class_name = "JPanelDisplay" ;

         //for contain calculated values      
  private double [ ] cv_array_X_values ;
  private double [ ] cv_array_Y_values ;
  private int cv_number_of_values ;

  private int cv_width_of_Frame ;
  private int cv_height_of_Frame  ;

//=================================
// set_display_information
//=================================   
  public  void  set_display_information (
                        double [ ] para_array_X_values
                     ,  double [ ] para_array_Y_values
                     ,  int para_number_of_values
                     ,  int para_width_of_Frame
                       ,  int para_height_of_Frame
                                                    ) {

    String this_methode_name = "set_display_information" ;

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                       " : methode = " + this_methode_name ) ;

    cv_array_X_values = para_array_X_values ;
    cv_array_Y_values = para_array_Y_values ;
    cv_number_of_values = para_number_of_values ;
    cv_width_of_Frame = para_width_of_Frame ;
    cv_height_of_Frame = para_height_of_Frame ;

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                       " : methode = " + this_methode_name ) ;
   }

//=================================   
//do_repaint
//=================================    
  public void do_repaint ( ) {

    repaint ( ) ;
   }

//======================
//paint image
//======================
  public void paint ( Graphics para_ins_Graphics ) {

    PaintProcess.
               paint (
                          para_ins_Graphics
                        ,  cv_array_X_values
                          ,  cv_array_Y_values
                        ,  cv_number_of_values
                        ,  cv_width_of_Frame
                        ,  cv_height_of_Frame
                                                      ) ;

   }      
}

==============================
PaintProcess.java
----------------------
import java.awt.Graphics ;
import java.awt.Font ;
import java.awt.Color;

class PaintProcess {

  private static String cv_this_Class_name = "PaintProcess" ;

  private static Graphics cv_ins_Graphics ;
  private static int  cv_width_of_Frame  ;
   private static int  cv_height_of_Frame ;

   private static int  cv_width_of_drawingArea ;
   private static int  cv_height_of_drawingArea ;

   private static int cv_drawing_begin_x  ;
   private static int cv_drawing_begin_y  ;

   private static double cv_interval_X ;   
   private static double cv_interval_Y  ;

   private static double cv_Min_X ;   
   private static double cv_Max_X  ;         
   private static double cv_Min_Y ;   
   private static double cv_Max_Y  ;

    private static double cv_scale_X ;
    private static double cv_scale_Y ;

//======================
//paint
//======================
    public static void paint (
                   Graphics para_ins_Graphics
                ,  double [ ] para_array_X_values
                ,  double [ ] para_array_Y_values
                ,  int para_number_of_values
                ,  int para_width_of_Frame
                ,  int para_height_of_Frame
               ) {

    String this_methode_name = "paint" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

    decide_Min_and_Max (
                    para_array_X_values
                  , para_array_Y_values
                  , para_number_of_values
                                             ) ;

    cv_width_of_Frame = para_width_of_Frame ;
    cv_width_of_drawingArea
            = ( int ) ( ( cv_width_of_Frame - 100 )
                                        * Bridge.cv_Magnification_X ) ;
    cv_height_of_Frame = para_height_of_Frame ;
    cv_height_of_drawingArea
            = ( int ) ( ( cv_height_of_Frame - 100 )
                                        * Bridge.cv_Magnification_Y ) ;

    cv_drawing_begin_x = 300 ;
    cv_drawing_begin_y  = 200 ;

    cv_scale_X
          = ( (double)( cv_width_of_drawingArea - cv_drawing_begin_x ) )
                                             / (  cv_Max_X - cv_Min_X )
                                             ;
    double very_small_value = 0.00000001 ;
    if ( (  cv_Max_Y - cv_Min_Y ) < very_small_value ) {
        cv_scale_Y
            = ( (double)( cv_height_of_drawingArea - cv_drawing_begin_y ) )
                        / very_small_value
                        ;               
      }
    else {
        cv_scale_Y = ( (double)( cv_height_of_drawingArea - cv_drawing_begin_y ) )
                        / (  cv_Max_Y - cv_Min_Y )
                        ;
      }

    System.out.println ( "cv_Min_X = " + cv_Min_X ) ;
    System.out.println ( "cv_Max_X = " + cv_Max_X ) ;
    System.out.println ( "cv_Min_Y = " + cv_Min_Y ) ;
    System.out.println ( "cv_Max_Y = " + cv_Max_Y ) ;
    System.out.println ( "cv_scale_X = " + cv_scale_X ) ;
    System.out.println ( "cv_scale_Y = " + cv_scale_Y ) ;

    cv_ins_Graphics = para_ins_Graphics ;

                                         //draw background       
    Color ins_Color_BG
               = new Color ( 255 , 255 , 255 ) ;
    cv_ins_Graphics
                          .setColor ( ins_Color_BG ) ;
    cv_ins_Graphics
                     .fillRect (
                                 0 , 0
                               , cv_width_of_Frame  ,  cv_height_of_Frame
                                    ) ;

                                   //draw function value
    Color ins_Color_1
                   = new Color ( 200 , 0 , 0 ) ;

     draw_X_and_Y_location (
                                 para_array_X_values
                               , para_array_Y_values
                               , para_number_of_values
                                                     ) ;

     draw_values ( 'X' ) ;
     draw_values ( 'Y' ) ;

     System.out.println ( "  ----------------------------------" ) ;
     System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                            " : methode = " + this_methode_name ) ;
    }   
//------------------------------------      
  private static void draw_X_and_Y_location (
               double [ ] para_array_X_values
             , double [ ] para_array_Y_values
             , int para_number_of_values
                                      ) {

    Color ins_Color_1
                           = new Color ( 200 , 0 , 0 ) ;
    cv_ins_Graphics
                         .setColor ( ins_Color_1 ) ;

    int [ ] paint_location = new int [ 2 ] ;

    for ( int i  = 0 ; i < para_number_of_values
                         ; i ++  ) {

        paint_location
                  = decide_paint_location_X_and_Y (
                               para_array_X_values [ i ]                  
                             , para_array_Y_values [ i ]      
                                                    ) ;   
                     //draw mark at the location x value and y value
        cv_ins_Graphics
                        .fillRect (
                       paint_location [ 0 ]
                     , paint_location [ 1 ]
                       ,  Bridge.cv_Length_Side_of_DrawingSquare
                    ,  Bridge.cv_Length_Side_of_DrawingSquare
                                              ) ;
       }
    }
//----------------------------------      
  private static void draw_values ( char para_X_or_Y ) {

    Color ins_Color
                                = new Color ( 0 , 0 , 200 ) ;
    cv_ins_Graphics
                     .setColor ( ins_Color ) ;
    Font ins_Font
                             = new Font ( "Serif" , Font.BOLD , 30 );
     cv_ins_Graphics
                       .setFont( ins_Font ) ;

     double w1 = 0.0 ;
     int w2 = 0 ;
     double x = 0.0 ;
     double y = 0.0 ;

     if ( para_X_or_Y == 'X' ) {
                              //draw X-value Strings
        w1 = ( cv_Max_X - cv_Min_X )
                          / ( Bridge.cv_Number_of_X_values_String - 1 ) ;
        w2 = Bridge.cv_Number_of_X_values_String ;
        x = 0.0 ;
        y = cv_Min_Y ;
       }
     else {
                             //draw Y-value Strings
         w1 = ( cv_Max_Y - cv_Min_Y )
                          / ( Bridge.cv_Number_of_Y_values_String - 1 ) ;
         w2 = Bridge.cv_Number_of_Y_values_String ;
         x = cv_Min_X ;
         y = 0.0 ;
        }               

    int [ ] paint_location = new int [ 2 ] ;
    int location_offset = 0 ;
    double value_drawed = 0.0 ;

    for ( int i = 0 ; i < w2  ; i ++ ) {

        if ( para_X_or_Y == 'X' ) {
                              //draw X-value Strings
            x = cv_Min_X + w1 * i ;
            value_drawed = x ;
            paint_location
                      = decide_paint_location_X_and_Y ( x , y    ) ;    
           }
        else {
                           //draw Y-value Strings
            y = cv_Min_Y + w1 * i ;
            value_drawed = y ;
            paint_location
                      = decide_paint_location_X_and_Y ( x , y    ) ;    
           }

        if ( para_X_or_Y == 'X' ) {
                           //draw X-value Strings
            if ( ( i % 2) == 0 ) {
                location_offset = 58 ;
               }
            else {
                  location_offset = 82 ;
               }
            cv_ins_Graphics
                       .drawString (
                            ( Double
                                       .toString ( value_drawed )  )
                          , paint_location [ 0 ]
                            ,  ( paint_location [ 1 ] + location_offset )
                                        ) ;
           }
        else {
                           //draw Y-value Strings
            location_offset = -260 ;
            cv_ins_Graphics
                       .drawString (
                            ( Double
                                       .toString ( value_drawed ) )
                              , ( paint_location [ 0 ] + location_offset )
                             ,  paint_location [ 1 ]
                                        ) ;                  
          }

       }
    }

//------------------------------------------      
  private static void decide_Min_and_Max (
                                  double [ ] para_array_X_values
                                , double [ ] para_array_Y_values
                                , int para_number_of_values
                                                           )     {

     cv_Min_X = Bridge.cv_From_X ;   
     cv_Max_X  = Bridge.cv_To_X ;            
     cv_Min_Y = para_array_Y_values [ 0 ] ;   
     cv_Max_Y  = para_array_Y_values [ 0 ] ;

     double w1 = 0.0 ;
     double w2 = 0.0 ;

     for ( int i  = 1 ; i < para_number_of_values ; i ++  ) {
         w1 = cv_Min_X ;
         w2 = cv_Max_X ;
         if ( para_array_X_values [ i ] < w1 ) {
             cv_Min_X = para_array_X_values [ i ] ;
           }
         if ( para_array_X_values [ i ] > w2 ) {
             cv_Max_X = para_array_X_values [ i ] ;
            } 

         w1 = cv_Min_Y ;
         w2 = cv_Max_Y ;
         if ( para_array_Y_values [ i ] < w1 ) {
             cv_Min_Y = para_array_Y_values [ i ] ;
            }
         if ( para_array_Y_values [ i ] > w2 ) {
             cv_Max_Y = para_array_Y_values [ i ] ;
            } 
        }
     }

//------------------------------------------      
  private static int [ ] decide_paint_location_X_and_Y (
                                  double para_X_value
                               ,  double para_Y_value
                                                           )     {

    int [ ] return_value = new int [ 2 ] ;
    return_value [ 0 ]
                     = ( int ) (
                             cv_drawing_begin_x
                         +
                        ( para_X_value -  cv_Min_X )
                            * cv_scale_X
                         )   ;
    return_value [ 1 ]
                     = cv_height_of_Frame
                       - ( int ) (
                             cv_drawing_begin_y
                         +
                        ( para_Y_value -  cv_Min_Y )
                            * cv_scale_Y
                            ) ;
    return return_value ;
   }      
}


==============================
JFrameDataInput.java
----------------------
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

//-------------------------------------------------
//JFrame for intput data
//-------------------------------------------------
class JFrameDataInput extends JFrame {

    private String cv_this_Class_name = "JFrameDataInput" ;

    private final String cv_title_of_JFrame = "For Data Input" ;   

    private int cv_width_of_Frame ;
    private int cv_height_of_Frame;
    private int cv_topLeftLocation_x_of_Frame ;
    private int cv_topLeftLocation_y_of_Frame ;

    //======================
    //Constructer
    //======================   
  JFrameDataInput (
                       int para_width_of_Frame      
                     , int para_height_of_Frame    
                     , int para_topLeftLocation_x_of_Frame      
                     , int para_topLeftLocation_y_of_Frame    
          ) {

    String this_methode_name = "constructer" ;

    System.out.println ( "----------------------------------" ) ;
    System.out.println ( "Enter into Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;

    cv_width_of_Frame = para_width_of_Frame ;
    cv_height_of_Frame = para_height_of_Frame ;
    cv_topLeftLocation_x_of_Frame
                  = para_topLeftLocation_x_of_Frame ;
    cv_topLeftLocation_y_of_Frame
                  = para_topLeftLocation_y_of_Frame ;

    setTitle ( cv_title_of_JFrame ) ;
    setBounds (
                cv_topLeftLocation_x_of_Frame
              , cv_topLeftLocation_y_of_Frame            
              , cv_width_of_Frame
              , cv_height_of_Frame
                  ) ;
    setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;

    JPanel ins_JPanel = new JPanel () ;

          //-------------------------------
          //  From_X
    JLabel ins_1_JLabel = new JLabel ( "From X = " ) ;
    ins_1_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_1_JTextField = new JTextField ( "0.0" ) ;
    ins_1_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_1_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText1 ins_ActionListenerText1
              = new ActionListenerText1 ( ) ;
    ins_1_JTextField.addActionListener ( ins_ActionListenerText1 ) ;

    ins_JPanel.add ( ins_1_JLabel ) ;
    ins_JPanel.add ( ins_1_JTextField ) ;
            //-------------------------------
            //  To_X
    JLabel ins_2_JLabel = new JLabel ( "To X = " ) ;
    ins_2_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_2_JTextField = new JTextField ( "20.0" ) ;
    ins_2_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_2_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText2 ins_ActionListenerText2
            = new ActionListenerText2 ( ) ;
    ins_2_JTextField.addActionListener ( ins_ActionListenerText2 ) ;

    ins_JPanel.add ( ins_2_JLabel ) ;
    ins_JPanel.add ( ins_2_JTextField ) ;
           //-------------------------------
           //Interval_X
    JLabel ins_3_JLabel = new JLabel ( "Interval X = " ) ;
    ins_3_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_3_JTextField = new JTextField ( "0.2" ) ;
    ins_3_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_3_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText3 ins_ActionListenerText3
               = new ActionListenerText3 ( ) ;
    ins_3_JTextField.addActionListener ( ins_ActionListenerText3 ) ;

    ins_JPanel.add ( ins_3_JLabel ) ;
    ins_JPanel.add ( ins_3_JTextField ) ;
                   //-------------------------------
                   //Magnification_X
    JLabel ins_4_JLabel = new JLabel ( "Magnification X = " ) ;
    ins_4_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_4_JTextField = new JTextField ( "1.0" ) ;
    ins_4_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_4_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText4 ins_ActionListenerText4
                = new ActionListenerText4 ( ) ;
    ins_4_JTextField.addActionListener ( ins_ActionListenerText4 ) ;

    ins_JPanel.add ( ins_4_JLabel ) ;
    ins_JPanel.add ( ins_4_JTextField ) ;
                   //-------------------------------
                  //    Magnification_Y
    JLabel ins_5_JLabel = new JLabel ( "Magnification Y = " ) ;
    ins_5_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_5_JTextField = new JTextField ( "1.0" ) ;
    ins_5_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_5_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText5 ins_ActionListenerText5
                  = new ActionListenerText5 ( ) ;
    ins_5_JTextField.addActionListener ( ins_ActionListenerText5 ) ;

    ins_JPanel.add ( ins_5_JLabel ) ;
    ins_JPanel.add ( ins_5_JTextField ) ;
               //-------------------------------
               //Length of DrawingSquare Side
    JLabel ins_6_JLabel = new JLabel ( "Length of DrawingSquare Side = " ) ;
    ins_6_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_6_JTextField = new JTextField ( "8" ) ;
    ins_6_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_6_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText6 ins_ActionListenerText6
                 = new ActionListenerText6 ( ) ;
    ins_6_JTextField.addActionListener ( ins_ActionListenerText6 ) ;

    ins_JPanel.add ( ins_6_JLabel ) ;
    ins_JPanel.add ( ins_6_JTextField ) ;
             //-------------------------------
             //Number of X values String
    JLabel ins_7_JLabel = new JLabel ( "Number of X value String = " ) ;
    ins_7_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_7_JTextField = new JTextField ( "6" ) ;
    ins_7_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_7_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText7 ins_ActionListenerText7
             = new ActionListenerText7 ( ) ;
    ins_7_JTextField.addActionListener ( ins_ActionListenerText7 ) ;

    ins_JPanel.add ( ins_7_JLabel ) ;
    ins_JPanel.add ( ins_7_JTextField ) ;
        //-------------------------------
        //Number of  Y values String
    JLabel ins_8_JLabel = new JLabel ( "Number of  Y value String = " ) ;
    ins_8_JLabel.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;

    JTextField ins_8_JTextField = new JTextField ( "5" ) ;
    ins_8_JTextField.setPreferredSize ( new Dimension ( 100, 40 ) ) ;
    ins_8_JTextField.setFont ( new Font ( "Serif", Font.PLAIN , 30 ) ) ;
    ActionListenerText8 ins_ActionListenerText8
        = new ActionListenerText8 ( ) ;
    ins_8_JTextField.addActionListener ( ins_ActionListenerText8 ) ;

    ins_JPanel.add ( ins_8_JLabel ) ;
    ins_JPanel.add ( ins_8_JTextField ) ;

               //-------------------------------
    add ( ins_JPanel , BorderLayout.CENTER ) ;   

    System.out.println ( "  ----------------------------------" ) ;
    System.out.println ( "Exit from Class = " + cv_this_Class_name +
                              " : methode = " + this_methode_name ) ;
   }
}

//-------------------------------------------------------
class ActionListenerText1 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText1" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_From_X
            = Double.parseDouble ( ins_JTextField.getText () ) ;
               //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
    }
}
//-------------------------------------------------------
class ActionListenerText2 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText2" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_To_X
            = Double.parseDouble ( ins_JTextField.getText () ) ;
             //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
  }
}
//-------------------------------------------------------
class ActionListenerText3 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText3" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Interval_X
            = Double.parseDouble ( ins_JTextField.getText () ) ;
             //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
  }
}

//-------------------------------------------------------
class ActionListenerText4 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText4" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Magnification_X
            = Double.parseDouble ( ins_JTextField.getText () ) ;
             //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
  }
}
//-------------------------------------------------------
class ActionListenerText5 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText5" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Magnification_Y
        = Double.parseDouble ( ins_JTextField.getText () ) ;
             //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
  }
}

//-------------------------------------------------------
class ActionListenerText6 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText6" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Length_Side_of_DrawingSquare
                    = Integer.parseInt ( ins_JTextField.getText () ) ;
           //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
     }
}

//-------------------------------------------------------
class ActionListenerText7 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText7" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Number_of_X_values_String
                       = Integer.parseInt ( ins_JTextField.getText () ) ;
           //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
     }
}

//-------------------------------------------------------
class ActionListenerText8 implements ActionListener {

    private String cv_this_Class_name = "ActionListenerText8" ;

    public void actionPerformed ( ActionEvent para_ins_ActionEvent ) {

        String this_methode_name = "actionPerformed" ;

        System.out.println ( "----------------------------------" ) ;
        System.out.println ( "Enter into Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;

               //get JTextField instance related
        JTextField ins_JTextField
          = ( JTextField ) ( para_ins_ActionEvent.getSource () ) ;
               //set value to related variety
        Bridge.cv_Number_of_Y_values_String
                  = Integer.parseInt ( ins_JTextField.getText () ) ;
           //request process to Mediater
        Mediater.draw_shape_of_function ( ) ;

        System.out.println ( "Exit from Class = " + cv_this_Class_name +
                                  " : methode = " + this_methode_name ) ;
        System.out.println ( "----------------------------------" ) ;
     }
}

======================================================

コンピューター・プログラム 制作 インデックス

2018年11月29日 (木)

箱のイメージ 画像貼り付け コンピューター・グラフィックス 動画制作 Java と OpenCV3 を使って

コンピューター・プログラム 制作 インデックス

[箱への画像貼り付け]という制作テーマによる、コンピューター・グラフィックスによる動画制作を行いました。

------------
1 できたもの

制作作業の結果、できたのが、下記のCG動画です。(ユーチューブ上にアップロードしてあります。)

([CG]は、[コンピューター・グラフィックス]の略)。

------
仮想の箱(コンピューターグラフィックス)

この動画の格納先URLは、下記です。

https://youtu.be/w6fm_S97-0o

------------
2 使用したコンピューターとソフトウェア

上記の動画を制作するために使用したものは、下記の通りです。

コンピューター

 CPU : Core(TM) i7-7700HQ
 メモリー : 16 GB
 Operating System : Windows 10 Home, 64ビットオペレーティングシステム

OpenCV3

 opencv-3.4.3-vc14_vc15.exe

Java

 jdk-8u181-windows-x64.exe

[opencv3] と [Java] を組み合わせて使用する方法については、下記に発表ずみです。

開発費用ゼロ コンピューターグラフィックスによる動画制作 Java OpenCV3 Eclipse を使って

------------
3 箱

上記のCG動画は、[仮想の箱]の表面に、あたかも画像が貼り付けられているかのようなイメージとなるように、動画を制作した、というものです。

この[仮想の箱]は、

 2個の[部分]、すなわち、[箱の下部] と [箱の上部] により、形成される

と、いうようなイメージで、設定しました。

そして、[箱の上部] と [箱の下部] は、それぞれ、5個の [板] により、形成される

と、いうようなイメージで、設定しました。

 [箱の上部] は 上面の [板] 1個 と 側面の [板] 4個 により、形成される
 [箱の下部] は 底面の [板] 1個 と 側面の [板] 4個 により、形成される

Fig1

F1

それぞれの [板] は、2個の [表面を形成する長方形] により、形成される

と、いうようなイメージで、設定しました。

現実世界の板には、6個の面を形成する長方形があります(直方体だから)。

それらのうち、面積が広い2個の長方形だけを、コンピューターグラフィックスを描くようにしました、処理時間を短くするために。

Fig2

F2

それらの、 [表面を形成する長方形] に対して、画像を貼り付けるようなイメージで、コンピューターグラフィックスを描くようにしました。

コンピューター・プログラム 制作 インデックス

«コンピューター・プログラム 制作 インデックス

フォト
無料ブログはココログ