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