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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三角函数对应在平面坐标上画圆

發布時間:2024/1/8 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三角函数对应在平面坐标上画圆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、圓半徑(r)為 : 1

2、圓半徑(r)為 : r

3、例程


????????三角函數(Trigonometric Functions)是基本初等函數之一,是以角度(數學上最常用弧度制,下同)為自變量,角度對應任意角終邊與單位圓交點坐標或其比值為因變量的函數。

????????三角函數將直角三角形的內角和它的兩個邊的比值相關聯,也可以等價地用與單位圓有關的各種線段的長度來定義。三角函數在研究三角形和圓等幾何形狀的性質時有重要作用,也是研究周期性現象的基礎數學工具。

1、圓半徑(r)為 : 1

????????在屏幕上繪制圓時,一般情況是在對應的 XY 點進行點的繪制,在 “ 圖1 ” 中我們可以看出在平面坐標系中的 xy 坐標的關系式為:y = sinθ 與?x = cosθ,通過該關系式我們可以改變??角度值?(θ) 來確定對應的?xy 坐標,然后通過對應的關系把平面坐標上的 xy 轉化成屏幕上的 XY 點即可完成圓的繪制。

????????注意:角度值需要換成正弦、余弦值,所以最后的關系式變為:?y = sin(θ*3.14/180) ?與 ?x = cos(θ*3.14/180)??

?圖1

? ? ? ? 對應的三角函數表格:

2、圓半徑(r)為 : r

? ? ? ? 上面的平面坐標關系式是基于 半徑(r) 為 1 時的關系式,正常情況下我們的半徑是變化的由此上面的關系式則需要乘以?半徑(r) ,如 “ 圖2 ” 所示。我們可以看出在平面坐標系中的 xy 坐標的關系式為: y = sinθ?* r 與? x = cosθ * r )。通過該關系式我們可以改變??角度值?(θ) 來確定對應的?xy 坐標,然后通過對應的關系把平面坐標上的 xy 轉化成屏幕上的 XY 點即可完成圓的繪制。

????????注意:角度值需要換成正弦、余弦值,所以最后的關系式變為:?y = sin(θ*3.14/180)*r??與 ?x = cos(θ*3.14/180)*r ”?

?圖2

3、例程

????????Bresenham畫圓算法也稱為中點畫圓算法,與Bresenham 直線算法一樣,其基本的方法是利用判別變量來判斷選擇最近的像素點,判別變量的數值僅僅用一些加、減和移位運算就可以計算出來。該算法巧妙的利用了圓的八對稱性,只計算出一個八分周上的點,其余的七個點利用對稱性即可得出。

#define LCD_Width 128 #define LCD_Height 64/*** @breif 畫圓函數* @param x1,x2 —— 圓心坐標* @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); //算法決策參數/* 如果圓在屏幕可見區域外,直接退出 */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);//調用畫點函數LCD_Draw_ColorPoint(x + b, y - a);//調用畫點函數LCD_Draw_ColorPoint(x - a, y + b);//調用畫點函數LCD_Draw_ColorPoint(x - b, y - a);//調用畫點函數LCD_Draw_ColorPoint(x - a, y - b);//調用畫點函數LCD_Draw_ColorPoint(x + b, y + a);//調用畫點函數LCD_Draw_ColorPoint(x + a, y - b);//調用畫點函數LCD_Draw_ColorPoint(x + a, y + b);//調用畫點函數LCD_Draw_ColorPoint(x - b, y + a);//調用畫點函數a++;if(d < 0)d += 4 * a + 6;else{d += 10 + 4 * (a - b);b--;}LCD_Draw_ColorPoint(x + a, y + b);//調用畫點函數} }

總結

以上是生活随笔為你收集整理的三角函数对应在平面坐标上画圆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。