2016年7月27日水曜日

法線は直線なの、それともベクトルなの?

頂点の法線を求めたくて、WEBを調べていたら、数学の法線の説明サイトを発見し、なんの気なしに読んでみた。

でも、高校でならったはずの法線だけど、理解できなかった。

法線も分らず、グラフィックのプログラムなんて書けないはずだけど、なぜか、私が作った法線を利用するプログラムは意図したとおりに動いている。

私が数学のサイトで分らなかったことは、法線が直線で説明されていたり、ベクトルで説明されていることだ。

早い話、直線=ベクトルであるように説明されている。

でも、直線=ベクトルではグラフィックのプログラムは作れない。

私だけが思っていることかもしれないが、直線とベクトルは別物と思う。

2D直線はn・p=d(ax+by+d=0)で定義される∞の点の集まり。
2Dベクトルは(x,y)で表される、方向と大きさを持った情報。

この理解で私のプログラムは動いている。

ちなみに、私は法線はベクトルだと思っている。

2016年7月26日火曜日

C# WPFよりHTML5の方が優れている

UntyをダウンロードしたらVisual Studio 2015も付属としてついてきたので、C# WPFの勉強がてら、プログラミングしている。

そこで、気づいたことを一言。

Java8のJavaFX及び、C# WPFはHTML5の仕様に近づいている。

ただ、前から気になっていたのだが、マイクロソフトが提供するプログラムは、作り手の都合を利用者に押し付け、結果的に使い勝手が悪くなっている、ことだ。

たとえば、WPFの<canvas>に数学の座標を設定する場合、以下のようになる。

<Canvas x:Name="canvas" HorizontalAlignment="Left" Height="800" Margin="39,54,0,0" VerticalAlignment="Top" Width="800">
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1" ScaleX="1" />
<TranslateTransform X="400" Y="400" />
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>

疑問に思うのは
・<Canvas.RenderTransform>の必要性
・<TransformGroup>の必要性
Transformは複数指定するのはあたり前だから、<TransformGroup>は不要だ。

上記内容をSVGでは以下のようになる。

<g transform="scale(1,-1)  translate(400,400)"  Width="800" Height="800">
</g>

早い話、transformは要素ではなく属性にすれば簡単だ。


マイクロソフトは製品を世に出す速さは天下一品だ。でも、その分、使い勝手が悪い、いや、仕様検討が不十分な製品が世に出ている。

これは私の主観だが、高価なマイクロソフトの製品より、無償のHTML5の方が優れている。

最後に、なんでWORD,EXCELはSVGをサポートしないの。WORD,EXCELのグラフィック機能はダサすぎる。

2016年7月5日火曜日

「AI弁護士」

19歳が作ったチャットボット、「AI弁護士」が16万件の駐車違反を無効にという記事を読んだ。


19歳の学生が、駐車違反に対する異議を申し立てをサポートするサイトを立ち上げたという内容だった。

ほとんどの法律には、法律自体の不備をカバーするため、異議も仕立てが可能になっている。この異議を申し立てをサポートするという発想はユニークで面白い

でも私が気になったのは、19歳の学生が、12歳のとき「ユーチューブ動画を見ながらコーディングを独学で学だ」とあったことだ。

私は、高校を出てすぐ、BASICやCOBOLを学んだ。BASICやCOBOLは逐次型の言語で、結果出力はプリンターしかなかったので、習得にはさほど時間を必要としなかった。

でも、現在のコンピュータの入出力はほどんどがスクリーンであり、フォームなどの入力、画像などの出力と、入出力方法は多岐に渡る。これを実現しているのがオブジェクト指向言語だ。でも、このオブジェクト指向言語は逐次型の言語に比べ複雑である。

にも拘わらず、彼は12歳(小学生)でユーチューブ動画を見ながらコーディングを学んだのだから凄い。逐次型の言語に慣れていた私は、オブジェクト指向言語を学ぶのは大変だった。(今でも自由に使いこなしていない)

主観だが、オブジェクト指向は幼いころから学んだ方が良いと思う。また、オブジェクト指向はコンピュータを動かすだけの技術ではなく、社会、人間関係を機械的に関連づけることができる技術なので、知っていて損はない。いや、高度に発展するであろう、これからの社会では、必須の技術だと思う。

歳をとり、頭が固くなったときオブジェクト指向言語に悲鳴を上げた私が言うのだから間違いない。