日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

做了一个画f(x,y)=0函数图像的算法,果断codeplex之

發(fā)布時(shí)間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 做了一个画f(x,y)=0函数图像的算法,果断codeplex之 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??? 代碼上傳到了http://vlpp.codeplex.com/的Candidate\Games\FunctionVisualizer文件夾下面,VS2010,.NET 4.0。做這個(gè)的目的只要是前幾天看到了batman equaltion,然后渾身不舒服,因此就想起了這片新聞(http://news.cnblogs.com/n/106212/)里面的東西。就花了一個(gè)晚上和一個(gè)早上的時(shí)間做了出來。當(dāng)然這里面有點(diǎn)瑕疵,不過大概還是好的。

?

??? 在Candidate\Games\FunctionVisualizer\FvCalculation\RawExpression.cs里面可以看到用來表達(dá)函數(shù)的語(yǔ)法樹。旁邊的ExpressionParser.cs有一個(gè)用unsafe+char**寫的語(yǔ)法分析器。當(dāng)我得到了語(yǔ)法樹之后,就求f(x,y)的偏微分(RawExpression.Different函數(shù)),然后按照下面的步驟進(jìn)行:

?

??? 1:從屏幕的所有點(diǎn)(a,b)開始

??? 2:用牛頓迭代發(fā)求f(x,b)=0的解x'

??? 3:用牛墩迭代法求f(a,y)=0的解y'

??? 4:每個(gè)點(diǎn)(a,b)就變換成了(a,y')和(x',b)

??? 5:如果Bitmap的大小是100*100的話,那么現(xiàn)在我就獲得了兩萬(wàn)個(gè)(double, double)點(diǎn),將他們Math.Round之后畫到Bitmap里面就成為函數(shù)圖像了。

?

??? 為了加速,我做了下面的幾件事情

??? 1:用unsafe把string轉(zhuǎn)成char*,然后做語(yǔ)法分析器(方法基本上就是我寫的這篇文章http://www.cppblog.com/vczh/archive/2008/06/15/53373.html)。

??? 2:繪圖的時(shí)候Bitmap.Lock得到指向Bitmap的顏色的緩沖區(qū),unsafe強(qiáng)制轉(zhuǎn)換成byte*,然后填顏色。

??? 3:在得到f(x,b)和f(a,y)之后,對(duì)他們求微分f'x(x,b)和f'y(a,y),然后把這些函數(shù)從RawExpression編譯到System.Linq.Expression再Compile成Func<double, double>。

?

??? 下面就放幾個(gè)截圖。由于|x|我還沒想到好方法去支持,所以我只畫了上面提到的那片新聞的一半的圖。

???

總結(jié)

以上是生活随笔為你收集整理的做了一个画f(x,y)=0函数图像的算法,果断codeplex之的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。