三角函数对应在平面坐标上画圆
目錄
1、圓半徑(r)為 : 1
2、圓半徑(r)為 : r
3、例程
????????三角函數(shù)(Trigonometric Functions)是基本初等函數(shù)之一,是以角度(數(shù)學(xué)上最常用弧度制,下同)為自變量,角度對(duì)應(yīng)任意角終邊與單位圓交點(diǎn)坐標(biāo)或其比值為因變量的函數(shù)。
????????三角函數(shù)將直角三角形的內(nèi)角和它的兩個(gè)邊的比值相關(guān)聯(lián),也可以等價(jià)地用與單位圓有關(guān)的各種線段的長(zhǎng)度來(lái)定義。三角函數(shù)在研究三角形和圓等幾何形狀的性質(zhì)時(shí)有重要作用,也是研究周期性現(xiàn)象的基礎(chǔ)數(shù)學(xué)工具。
1、圓半徑(r)為 : 1
????????在屏幕上繪制圓時(shí),一般情況是在對(duì)應(yīng)的 X 與 Y 點(diǎn)進(jìn)行點(diǎn)的繪制,在 “ 圖1 ” 中我們可以看出在平面坐標(biāo)系中的 x 與 y 坐標(biāo)的關(guān)系式為:( y = sinθ ) 與?( x = cosθ ),通過(guò)該關(guān)系式我們可以改變??角度值?(θ) 來(lái)確定對(duì)應(yīng)的?x 與 y 坐標(biāo),然后通過(guò)對(duì)應(yīng)的關(guān)系把平面坐標(biāo)上的 x 與 y 轉(zhuǎn)化成屏幕上的 X 與 Y 點(diǎn)即可完成圓的繪制。
????????注意:角度值需要換成正弦、余弦值,所以最后的關(guān)系式變?yōu)?#xff1a;“?y = sin(θ*3.14/180) ”?與 “?x = cos(θ*3.14/180)?”?
?圖1
? ? ? ? 對(duì)應(yīng)的三角函數(shù)表格:
2、圓半徑(r)為 : r
? ? ? ? 上面的平面坐標(biāo)關(guān)系式是基于 半徑(r) 為 1 時(shí)的關(guān)系式,正常情況下我們的半徑是變化的由此上面的關(guān)系式則需要乘以?半徑(r) ,如 “ 圖2 ” 所示。我們可以看出在平面坐標(biāo)系中的 x 與 y 坐標(biāo)的關(guān)系式為:( y = sinθ?* r ) 與?( x = cosθ * r )。通過(guò)該關(guān)系式我們可以改變??角度值?(θ) 來(lái)確定對(duì)應(yīng)的?x 與 y 坐標(biāo),然后通過(guò)對(duì)應(yīng)的關(guān)系把平面坐標(biāo)上的 x 與 y 轉(zhuǎn)化成屏幕上的 X 與 Y 點(diǎn)即可完成圓的繪制。
????????注意:角度值需要換成正弦、余弦值,所以最后的關(guān)系式變?yōu)?#xff1a;“?y = sin(θ*3.14/180)*r?”?與 “?x = cos(θ*3.14/180)*r ”?
?圖2
3、例程
????????Bresenham畫(huà)圓算法也稱(chēng)為中點(diǎn)畫(huà)圓算法,與Bresenham 直線算法一樣,其基本的方法是利用判別變量來(lái)判斷選擇最近的像素點(diǎn),判別變量的數(shù)值僅僅用一些加、減和移位運(yùn)算就可以計(jì)算出來(lái)。該算法巧妙的利用了圓的八對(duì)稱(chēng)性,只計(jì)算出一個(gè)八分周上的點(diǎn),其余的七個(gè)點(diǎn)利用對(duì)稱(chēng)性即可得出。
#define LCD_Width 128 #define LCD_Height 64/*** @breif 畫(huà)圓函數(shù)* @param x1,x2 —— 圓心坐標(biāo)* @param r —— 半徑* @retval none*/ void LCD_Draw_ColorCircle(uint16_t x, uint16_t y, uint16_t r) {/* Bresenham畫(huà)圓算法 */int16_t a = 0, b = r;int16_t d = 3 - (r << 1); //算法決策參數(shù)/* 如果圓在屏幕可見(jiàn)區(qū)域外,直接退出 */if (x - r < 0 || x + r > LCD_Width || y - r < 0 || y + r > LCD_Height) return;/* 開(kāi)始畫(huà)圓 */while(a <= b){LCD_Draw_ColorPoint(x - b, y - a);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x + b, y - a);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x - a, y + b);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x - b, y - a);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x - a, y - b);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x + b, y + a);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x + a, y - b);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x + a, y + b);//調(diào)用畫(huà)點(diǎn)函數(shù)LCD_Draw_ColorPoint(x - b, y + a);//調(diào)用畫(huà)點(diǎn)函數(shù)a++;if(d < 0)d += 4 * a + 6;else{d += 10 + 4 * (a - b);b--;}LCD_Draw_ColorPoint(x + a, y + b);//調(diào)用畫(huà)點(diǎn)函數(shù)} }總結(jié)
以上是生活随笔為你收集整理的三角函数对应在平面坐标上画圆的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习为图片人物换装【python代码
- 下一篇: c语言用while实现输出加法口诀表,「