自然において見える(見えている)という状況の再現が可視化の一つの起源であるのですが,見えているものの背後の情報(見ているもの以外の情報)が取得できる,これが現代的な可視化の利点の一つです.
図(クリックすると拡大)はPEMから得られる可視化結果に渦度分布を色によって重ねたものです.対象は流れの中におかれた円柱まわりの速度と渦度場です.流れの様子(速度)とそれに対応する渦度(赤が反時計まわりの速度を誘起,青が時計回りの速度を誘起)が可視化されています.
クチコミblogランキング TREview
Visualizationの和訳が「可視化」として定着したのは,実験における流れの可視化(Flow Visualization)からと言われています.実験の可視化は自然現象の観察が始まりとされています.
仔細はともかく,"見えないものを視る"ことが第一義とされる可視化が,自然において見えるという状況の再現が起源であることは興味深いのです.技術計算結果の可視化においても,写実性というものが重視されることがあります.図はその例です.急拡大管内流れ(左側の狭い方の入り口から流れ込んでいる)を,ピクセル露光法(Pixel Exposure Method)という方法で可視化したものです.
クチコミblogランキング TREview
詳細は,以下のものに.
Shirayama, S. and Kuwahara, K.: Navier-Stokes solution of the flow field around a complete automobile configuration, Proceedings of the 2nd International Conference on Supercomputing in the Automotive Industry, Minneapolis: A Cray Research, Inc. book, October, 1988, pp.293-304.
Shirayama, S. and Kuwahara, K.: Flow visualization in computational fluid dynamics, International Journal of Supercomputer Applications, vol.4, No.2, 1990, pp.66-80.
APCOM'07-EPMESC XI
http://www.apacm.org/apcom07-epmescXI/index.html
という会議(2007.12.3-6 at Kyoto)で,
Minisymposium:Physically-based Computer Graphics (#27)
Organizers:
Seiichi Koshizuka (The University of Tokyo)
Nobuatsu Tanaka (Ibaraki University)
Susumu Shirayama (The University of Tokyo)
を企画しています.アブストラクトの締切は7/1に延期されています.
是非よろしくお願いします.
可視化情報シンポジウム(7/24(火)~26(木),工学院大学新宿校舎)
http://www.visualization.jp/event/detail/2007.html
のOS2 「サイエンティフィックアート」
武居昌宏(日大),藤沢延行(新潟大),白山晋(東大)
にて講演を募集しています.
なお,サイエンティフィックアートとは,
http://www.vsj.or.jp/scivis/
にある研究会の趣旨を読んでも,模索段階にあることがわかります.また,適用分野だけではなく,従来の可視化,あるいはCGとは異なる,新しい何かが必要な気がします.
芸術は,http://ja.wikipedia.org/wiki/%E8%8A%B8%E8%A1%93に,「表現者あるいは表現物と,鑑賞者とが相互に作用し合うことなどで,精神的・感覚的な変動を得ようとする活動」とあります.中でもArt(アート)は人工のもの,そして技術に近い言葉であったことは知られていることです.
また,ダビンチを持ち出すまでもなく,科学と芸術は渾然一体であるという側面があります.またどちらかに目を転じたとしても,科学と芸術の狭間が存在しつつも明確な仕切り線を見出すことはできないのではないか(分析が難しい相互作用が存在する),と思われます.モデリングの立場では,科学は客観的,芸術は主観的で区別されますが,モデリングの起点となる仮説には主観が入ることもしばしばあります.
そのような主観の存在と,相互作用というのが鍵になるのでしょう.実際のところは,ボトムアップ的にサイエンティフィックアートという領域が形成されていくのではないかと考えています.
是非,加担してください.
PS3のプログラミング記事を続けようと思ってはいるのですが.
諸般の事情(ブログでプログラムを例示することには限界がある,この時期はとても忙しい,ネタ切れ・・・etc)のため,プログラムはHPで紹介します.
http://www.race.u-tokyo.ac.jp/~DVE1/lecture/
実は講義用のHPなのですが,Javaは一般的なものにしてほしいという想いもこめられています.
PS3でプログラミングが楽しめる→ユーザが増える,というようなシナリオにおいて問題となるのは,独自プログラミング言語の提供の是非です.
教育の現場でプログラミングを教えるものとしては,ベースは既存の言語を用いて,ハードウェアに依存する部分をクラスライブラリのような形で提供してくれるのが有り難いのです.
例えば,Javaでのマウス操作の基本となるプログラムに以下のようなものがあります.MouseAdaptorに相当するところを提供してくれるのが望ましいのです.ただ,下のプログラムは,応用性に乏しいので,もう少し遊べるものを次回紹介します.
(PS3から離れつつありますが・・・,続く)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//
public class Mouse extends JFrame{
MyPanel mp = null;
Mouse(){
mp = new MyPanel();
Container c = this.getContentPane();
c.add(mp);
}
public static void main(String args[]){
Mouse jf = new Mouse();
jf.setSize(640,480);
jf.setTitle("swing demo2");
jf.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
jf.show();
}
//inner class P
class MyPanel extends JPanel{
int ixo,jyo;
int ixm,jym;
MyPanel(){
setBackground(Color.lightGray);
ixo = 320;
jyo = 240;
ixm = ixo;
jym = jyo;
MyMouse mm = new MyMouse();
addMouseListener(mm);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
myDrawing(g);
}
public void myDrawing(Graphics g){
g.setColor(new Color(255,250,0));
g.drawLine(ixo,jyo,ixm,jym);
g.setColor(new Color(128,50,255));
g.drawString("M",ixm,jym);
}
//inner class P-M
class MyMouse extends MouseAdapter{
MyMouse(){
}
public void mousePressed(MouseEvent e){
ixm=e.getX();
jym=e.getY();
mp.repaint();
}
}
}
}
作り方の基本や,基本文法を覚えることは重要ですが,実のところ,講義(90分程度の座学と90分程度の慣れのための演習)としては4回分くらいで十分ではないかとも考えています.その後,何が必要か?
応用であることは確かです.ですが,応用にはプログラミング以外の知識が必要になります.このため,適当に題材を決めて進めることになりますが,教えられる側は通常は混乱します.応用する対象自身がわからないというのが主な理由です.結局,様子をみながら,基本的な4回分の内容を,演習を中心に3~4回繰り返すことになるのです.しかし,基本文法を覚えるための演習では,本当の面白さを伝えるには限界があります.正直教えていても疑問に感じていることでもあります.
前置きが長くなってしまいました.
言いたいことは,基本的な書き方や基本文法は必要である,それに,「プログラミングという遊び」の要素を加えるためには,ゲーム機を対象としたプログラムが適しているのではないかということです.
確かに,デバイスに関連する部分をプログラムで扱うことは難しいのですが(プログラミングの基礎を逸脱する),その部分を,クラスライブラリのようなもので提供してもらえると,「遊びの中にプログラミングが入っていく」のではないかと考えています.機種に特化すればなんとかなるのではないでしょうか.例えば,コントローラであれば,マウスと同じ仕様のクラスにできるような気がします.
(続く)

計算できるものが出れば,それを使ってみようと思うのは計算屋の本能のようなもので,新しいゲーム機が出ればそれで,携帯でも計算を行うという人がいます.遊びの部分,あるいはシャレのようなところがあって,実用に供するというようなものは少ないのですが.
PS3に関しては,ちょっと期待しているところがあります.計算のためというよりは,映像制作用としてです(ハイビジョン映像を作って,大画面TVでみるということです). 15年以上前になりますが,当時いた会社で,ハイビジョンのシステムを導入しました.そのときのインパクトは大きかった.それが手軽にできるとなれば,ということです. 展開があれば,可能な範囲で報告します.

私自身,はじめて覚えたプログラミング言語は,アセンブラだったと思います.次に,Basic,Pascal,FORTRAN77,C,C++,Javaとやってきました.新しい言語を覚える度に,前のものはほとんど忘れているので,今使えるのは,JavaとFortran90くらいです.
Javaの良さは,とにかく簡単に試せることです.
クラスとメソッドは,その概念が面白いのですが,まずは使えるということが大事です.はじめの一歩は以下の3ステップ.
1.クラスの括りを書く.
public class Hello{
}
2.メソッドの括りを加える.
public class Hello{
public static void main(String[] arg){
}
}
3.手続きを加える.
public class Hello{
public static void main(String[] arg){
手続きをここに書く.
}
}
まずは,3つの基本形です.
hello Javaは外せませんね
public class Hello{
public static void main(String[] arg){
System.out.println(" hello Java ");
}
}
Javaの場合,この1行のテキストを表示させるという単純なプログラムの中に沢山のエッセンスが詰まっています.コメントには,これを発展させる形で,
・メソッドにしたもの
・クラスを分けたもの
の2つのプログラムを示しました※.プログラムの構造としては,(継承を明示しないものとしては)これらの3つのものが基本形になります.
※スペースが入らないのと,引用符の前にが付いてしまう(不要)ことに留意してください.