hirax.net::Keywords::「IronPython」のブログ



2009-11-05[n年前へ]

無料のMathematica Player + IronRuby でグラフィック出力 

 無料のWolfram Mathematica Playerに付属のMathematicaカーネルではグラフィック出力ができず、グラフ描画や各種グラフィック機能を有効利用するための方法を試行錯誤していました。そんな中、「Mathematica Player+IronPython関連記事」中の、無料のMathematica Playerで画像を出力してみた(IronPythonで)」で実に技術を駆使した方法で、その問題が解決されていました。

 基本的な計算は、Mathematica Playerに付属するMathematicaカーネルにやらせ、その結果を画像にするRasterize部分を、Mathematica Playerにやらせる、そしてその結果を.NET/LINKで「操作スクリプト」に送りつける(スクリプト側はデータを受け取る)という、具合です。こういったスクリプトをさらりと書けるようになりたいものです…。

 さて、というわけで、IronRubyで同様のことをしてみました。まずは、クラスなどは作らず、ただ単に「(ネットワークからの)データ取得→計算・画像作成→Windows上でフォーム上に描画」ということを順を追って行うスクリプトを書いてみました。それが、下になります。

# c.f. http://boxheadroom.com/2009/10/30/mathematica_ipy_image
# c.f. http://d.hatena.ne.jp/arikui/20070918/1190050541

com='ExampleData[{"Geometry3D","Beethoven"}] '
width=1000

include System
require 'System.Windows.Forms'
require 'System.Drawing'
require 'mscorlib'
require 'Wolfram.NETLink'
include Wolfram::NETLink

kernelLink=MathLinkFactory.CreateKernelLink()
kernelLink.WaitAndDiscardAnswer()
kernelLink.EvaluateToInputForm(
   '$ct={{0,0,1},{0,1,0},{1,0,0}};',0)
tmpl='$im=Rasterize['+com+
    ', ImageSize->'+width.to_s+',Background->Black];'
kernelLink.EvaluateToInputForm(tmpl,0)
k=kernelLink.EvaluateToInputForm(
    '$im=ImageData[$im,"Byte"];',0)
k=kernelLink.EvaluateToInputForm(
      '$im2=$ct.#&[#]&/@#&/@$im;',0)
kernelLink.PutFunction(
        "EvaluatePacket",1)
kernelLink.PutSymbol("$im2")
kernelLink.EndPacket()
kernelLink.WaitForAnswer()
ret=kernelLink.GetObject()

height=ret.length/width/3
form=System::Windows::Forms::Form.new()
form.width  = width
form.height = height
graph=System::Windows::Forms::PictureBox.new()
graph.width=width
graph.height=height
graph.top=0
graph.left=0
graph.image=System::Drawing::Bitmap.new(
       width, height)
height.times{|y|
 width.times{|x|
  color=System::Drawing::Color.FromArgb(
             255,ret[y,x,0],
             ret[y,x,1], ret[y,x,2])
  graph.image.SetPixel(x, y, color)    
  }
}
graph.Refresh
form.controls.add(graph)
form.ShowDialog()
 このスクリプトを流すと、まずMathKernel.exeのパス(場所)を尋ねるダイアログが現れ、次にMathematicaPlayer.exeのパスを尋ねるダイアログが現われます。そして、Mathematica Playerが起動した後に、下の画像のような「ルートヴィヒ・ヴァン・ベートーヴェンの三次元像」が作成され、Windows上にダイアログとして現れます。



 …数式処理ソフトウェアで眺めるベートーベンも(そのデータがネットワーク上から取得できることも合わせて)面白いですが、ここまで色々できてしまうということが、とても楽しいものです。つまりは、結果よりも、過程を楽しんでいるような感じです。

 ところで、Pythonのコードを読むのは初めてだったのですが、何だか知らない言語を読むというのは「違った視点」を感じるような気がして、新鮮なものですね。

無料のMathematica Player + IronRuby でグラフィック出力






2010-10-25[n年前へ]

Microsoft、IronRubyおよびIronPythonをコミュニティに移管 

 「米Microsoft、IronRubyおよびIronPythonをコミュニティに移管

 米Microsoftは10月21日、.NET Framework向けのRuby実装「IronRuby」、同Python実装「IronPython」の両オープンソースプロジェクトについて、今後プロジェクトから手を引き、コミュニティに引き渡す方針を発表した。「MONO Project」のMiguel de Icaza氏らがプロジェクトの調整役を受け持つ。



■Powered by yagm.net