++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Silverlight で関数のグラフ表示

leave a comment »

Silverlight 使ってこんなおもちゃ作ってみた↓

以下、注釈。

  • フーリエ級数展開かけたい関数を、文字列で自由に入力可能
    • floor(sin(x)) とか abs(x) とか入れるとそれっぽいデモに
      • sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7+sin(9*x)/9 って入力して、floor(sin(x)) と比べてみるといいよ
    • パーサーは拾い物。下記の記事を参照
      • How to Create a Linq Statement from a String
        • ほんとに、C# のサブセットのパーサー書いてるだけ
      • CodeDOM は内部的に C# コンパイラーを呼び出してるせいで、Silverlight からは使えないんでorz
      • はやく C# コンパイラーを C# で書き直して、C# パーサーを標準ライブラリに入れて!
  • グラフは Silverlight Toolkit の Chart コントロールを使って表示
      • 適当な間隔で離散点化して Binding かけるだけだもんなぁ
    • 制御点の数増やし過ぎるとクソ重たい
    • Silverlight 4 では少し軽くなってるみたいなんで期待
  • そこそこちゃんと MVVM で作ってる
    • 最近、仕事で WPF 使ったツール書いてるんで、大分慣れてきた
    • Command 使ったインタラクションが不要なアプリだったからきれいにかけた
    • 早く Silverlight 4 出て。(4 で Command 標準サポートされる)
  • 数値計算まわり
    • 離散フーリエ変換じゃなくて、連続関数のフーリエ級数展開を、数値積分手法使って計算
      • 深い意味があるわけじゃなく、実装簡単だったから
    • 数値積分はシンプソン公式(2次多項式近似使って定積分値を計算する公式)

今後:

  • この手の、数式入力 → 何か計算 → グラフなり何なり可視化 って類はもっとやりたい
    • 前に似たようなのすでにやってるから作りやすそうって意味では、力学シミュレーション
    • 要望高そうなのでいうと、線形作用素(行列)の固有値展開とか、抽象代数の辺り?
  • フーリエ変換の類は、波形を InkPresenter で手書き入力したのの周波数特性表示とかやると面白そう
広告

Written by ufcpp

2009年12月6日 @ 13:56

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。