此題把數(shù)學(xué)問(wèn)題轉(zhuǎn)化為用C語(yǔ)言描述即可,很多畫(huà)圖問(wèn)題可以使用這種方法。
成都創(chuàng)新互聯(lián)公司是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開(kāi)發(fā),軟件開(kāi)發(fā),小程序開(kāi)發(fā),十多年建站對(duì)隧道混凝土攪拌車(chē)等多個(gè)行業(yè),擁有多年的網(wǎng)站營(yíng)銷(xiāo)經(jīng)驗(yàn)。
假設(shè)屏幕左上角為坐標(biāo)軸原點(diǎn)
也就是把我們的屏幕當(dāng)作第一象限時(shí),代碼如下
#include?stdio.h
#define??MAX???30??//?選定曲線要顯示的范圍,因?yàn)橐淮魏瘮?shù)是一條直線,所以它的顯示范圍無(wú)窮
int?main()
{
int?x,?y;
for?(y?=?0;?y??MAX;?y++)??//?因?yàn)槲覀兊墓鈽?biāo)是向下,向右增長(zhǎng)。這里設(shè)定y為縱坐標(biāo)
{
for?(x?=?0;?x??MAX;?x++)
{
if?(y?==?2?*?x?+?5)
{
printf("*");??
}
else
{
printf("?");??//?空格,不滿足y=2x+5的點(diǎn)
}
}
printf("\n");?//?x軸已經(jīng)到顯示范圍,所以需要換行。
}
return?0;
}
2. 更換坐標(biāo)軸原點(diǎn)顯示
#include?stdio.h
#define??MAX???30??//?選定曲線要顯示的范圍,因?yàn)橐淮魏瘮?shù)是一條直線,所以它的顯示范圍無(wú)窮
int?main()
{
int?x,?y;
for?(y?=?30;?y?=?0;?y--)??
{
for?(x?=?0;?x??MAX;?x++)
{
if?(y?==?2?*?x?+?5)
{
printf("*");??
}
else
{
printf("?");??//?空格,不滿足y=2x+5的點(diǎn)
}
}
printf("\n");?//?x軸已經(jīng)到顯示范圍,所以需要換行。
}
return?0;
}
if(m_PageCount == 1)
{
int canDisplay = 0;
for(int i = 12; i 0; i--)
{
if(canDisplay 12){
BindGridItem(transform.GetChild(canDisplay), m_ItemsList[12 - i]);
transform.GetChild(canDisplay).gameObject.SetActive(true);
}else{
//對(duì)超過(guò)canDispaly的物體實(shí)施隱藏
transform.GetChild(canDisplay).gameObject.SetActive(false);
}
canDisplay += 1;
}
用c++寫(xiě)的(實(shí)際上和C區(qū)別不大,就用了類封裝了一些成員函數(shù),可以很簡(jiǎn)單改成C)
在c的標(biāo)準(zhǔn)庫(kù)中有g(shù)raphic.h頭文件,實(shí)現(xiàn)了很多畫(huà)圖函數(shù) 比如 lineto, moveto, arc,(函數(shù)名可能記錯(cuò),好久沒(méi)用了-.-!)
直線:起點(diǎn)加終點(diǎn)就行。
二次曲線,比如拋物線,那就以定長(zhǎng)拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長(zhǎng)拆分,估計(jì)很難計(jì)算。要是精度要求不高就根據(jù)情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的算法或者雙圓弧擬合曲線的算法。
挺有意思的問(wèn)題,簡(jiǎn)單談一下看法
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數(shù)解析式,二是繪制函數(shù)圖像。
首先,關(guān)于第一個(gè)功能,最直接的思路就是字符串解析,按照數(shù)學(xué)知識(shí)定義不同的運(yùn)算符號(hào),按照使用習(xí)慣定義常用的變量和常量的符號(hào)字母,然后據(jù)此規(guī)則解析輸入的字符串,再根據(jù)解析結(jié)果確定函數(shù)中基本運(yùn)算的次數(shù)及運(yùn)算順序,最后將整個(gè)操作流程以一定形式存儲(chǔ)起來(lái)即可。
例如,對(duì)于y=log(x^2+x),包含三次基本運(yùn)算,第一步是x^2,第二步是上一步的結(jié)果+x,第三步是上一步的結(jié)果求對(duì)數(shù)。注意到log有定義域的限制,這也是要在程序中實(shí)現(xiàn)的。
然后,對(duì)于第二個(gè)功能,根據(jù)給定函數(shù)繪制圖像并不難,對(duì)于一元和二元函數(shù)來(lái)說(shuō)很容易實(shí)現(xiàn),難點(diǎn)在于多元函數(shù)應(yīng)如何繪制直觀易懂的函數(shù)圖像?不過(guò)這一點(diǎn)超出編程語(yǔ)言的范疇了,而且二元函數(shù)可以滿足大部分應(yīng)用場(chǎng)景了。
繪制函數(shù)圖像的程序只需在定義域上按指定的步長(zhǎng)求出不同自變量對(duì)應(yīng)的函數(shù)值,然后將點(diǎn)連成線,即可繪制出函數(shù)圖像。例如對(duì)于logx,定義域?yàn)閤0。假設(shè)步長(zhǎng)為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數(shù)值,然后繪制出點(diǎn),再連點(diǎn)成線,即可得到函數(shù)圖像。
另外,這里還有很多細(xì)節(jié)沒(méi)有討論,例如輸入數(shù)據(jù)是字符串還是圖像;是否可以用其他方法解析輸入,例如神經(jīng)網(wǎng)絡(luò)。這些就很復(fù)雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內(nèi)容對(duì)你有參考意義