2013-12-16 61 views
0

我想繪製一個繪製數學函數的應用程序,我想知道它的最佳語言。它應該具有以下功能:數學繪圖

  • 要繪製函數的區域。
  • 支持抗鋸齒。
  • 用於更改其他因變量(即y =(x-a)* x)中的a的滾動條。
  • 它應該足夠快(計算將完成數百次)。
  • 使用正則表達式解析數學表達式(有更好的方法嗎?)。

任何其他建議將是有用的。

編輯:這可以是在許多方面有用,例如丟棄重複計算

例如:使用1000點標繪Y = 4 + 1利用樹模型重新計算已999反覆計算,性能可以增強只有改變了孩子的節點

回答

2

正則表達式不會解析數學表達式。 個人而言,我編寫遞歸下降解析器。你可能會感到驚訝,它是多麼的簡單和靈活。

如果你想讓輸出看起來像是連續變化的,當它不是真正的時候,我所做的就是不輸出到輸出窗口。 相反,我畫的內存位圖,然後我塊轉移到可見窗口。 這消除了所有閃爍,並且使其看起來很快,即使它實際上只是每秒重繪幾次。請記住,你的時間更有可能是繪畫,而不是計算,所以不要浪費時間試圖找出如何優化計算。

就「最好的語言」而言,這取決於您想要做的事情。 我已經在C,C++和C#中完成了所有這些工作。 我相信Java或其他編譯語言也可以。

+0

數值積分消耗大量時間。我在JavaScript中做了這個,發現計算不僅僅是繪圖 – MIE

1

我認爲它沒有「最好的語言」,但我可以給你一些提示。我認爲一種方法是使用C++與gnuplot庫。另一種方法是將C++與Qt和qwt庫一起使用。 Qt也可以輕鬆管理正則表達式。

最近是我在過去的工作中親自使用的解決方案,沒有特別的問題,而第一個只是一個理論上的想法。

+0

我想自己做每一件事,我的意思是解析表達式,獲得點,繪圖,我認爲這會更快,因爲我可以跳過重複的計算。 **例如:**使用1000點繪製y = 4 + 1有999次重複計算,可以丟棄。 – MIE

+0

然後你應該使用Qt和qwt的C++。 – HAL9000