摘要:畫(huà)圓首先來(lái)理解下弧度制,以下內(nèi)容摘自百度百科。用弧長(zhǎng)與半徑之比度量對(duì)應(yīng)圓心角角度的方式,叫做弧度制,用符號(hào)表示,讀作弧度。的函數(shù)如下,,參數(shù)意義分別為圓心圓心半徑開(kāi)始的角度結(jié)束的角度是否逆時(shí)針,這里的角度就是采用弧度制。
html5Canvas畫(huà)圓
首先來(lái)理解下弧度制,以下內(nèi)容摘自百度百科。
用弧長(zhǎng)與半徑之比度量對(duì)應(yīng)圓心角角度的方式,叫做弧度制,用符號(hào)rad表示,讀作弧度。等于半徑長(zhǎng)的圓弧所對(duì)的圓心角叫做1弧度的角。由于圓弧長(zhǎng)短與圓半徑之比,不因?yàn)閳A的大小而改變,所以弧度數(shù)也是一個(gè)與圓的半徑無(wú)關(guān)的量。角度以弧度給出時(shí),通常不寫(xiě)弧度單位。另外一種常用的度量角的方法是角度制?;《戎频木杈驮谟诮y(tǒng)一了度量弧與角的單位,從而大大簡(jiǎn)化了有關(guān)公式及運(yùn)算,尤其在高等數(shù)學(xué)中,其優(yōu)點(diǎn)就格外明顯。---《百度百科》
HTML5中canvas畫(huà)曲線(xiàn)的函數(shù)有4個(gè),分別是arc,arcTo,quadraticCurveTo,bezierCurveTo.其中最簡(jiǎn)單的是arc,
arc可以畫(huà)一個(gè)完整的圓,也可以畫(huà)一段弧線(xiàn)。
arc的函數(shù)如下,arc(x, y, radius, startAngle, endAngle, anticlockwise),參數(shù)意義分別為
圓心x、圓心y、半徑、開(kāi)始的角度、結(jié)束的角度、是否逆時(shí)針,這里的角度就是采用弧度制。
先上個(gè)源碼畫(huà)一個(gè)標(biāo)準(zhǔn)的圓,代碼如下
gf
效果如下:
關(guān)鍵在于參數(shù)中的startAngle, endAngle,代表弧度的起始,一個(gè)圓角度制是360度,弧度制就是2π,所以一個(gè)完整的圓是從0到2π,也就是上面所示的0和2*Math.PI。
那么接下來(lái) 我們畫(huà)一端弧,代碼如下,
context.arc(195,150,70,0,0.5*Math.PI); context.stroke();
效果如下,
0.5*Math.PI就是四分之一的圓,arc的0度就是數(shù)學(xué)上常用的0度,但是角度默認(rèn)是順時(shí)針的,與數(shù)學(xué)上的相反,由于canvas坐標(biāo)與數(shù)學(xué)坐標(biāo)相反,所以顯示右下區(qū)間的弧段。
如果改變最后一個(gè)參數(shù)anticlockwise為true,則顯示如下所示
所以弧線(xiàn)的弧線(xiàn)的繪制方向就變成逆時(shí)針,畫(huà)了四分之三的圓弧。
context.arc(195,150,70,-0.5*Math.PI,0.5*Math.PI,true); context.stroke();
以上代碼畫(huà)一個(gè)左半圓弧,如圖
所以其他不同的弧線(xiàn)可以自己調(diào)整。
最后另外幾個(gè)函數(shù)是用來(lái)畫(huà)切線(xiàn)圓弧以及貝塞爾曲線(xiàn)的,有興趣可以去研究下
context.moveTo(20,20); context.lineTo(100,20); context.arcTo(150,20,150,70,50); context.lineTo(150,120); context.stroke(); context.moveTo(20,20); context.quadraticCurveTo(20,100,200,20); context.stroke(); context.moveTo(20,20); context.bezierCurveTo(20,100,200,100,200,20); context.stroke();
以上代碼效果如下所示
好了,目前僅僅做學(xué)習(xí)記錄。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/52170.html
摘要:但是在安卓手機(jī)中會(huì)有變形的情況存在,渲染方面確實(shí)安卓手機(jī)干不過(guò)畢竟安卓版本眾多,還有什么的線(xiàn)等等的坑,都是能完美運(yùn)行,安卓總得找方法。當(dāng)使用做單位,出來(lái)的圓是不會(huì)變形的,可能是安卓在計(jì)算過(guò)程中產(chǎn)生誤差或者有什么其他因素造成的渲染問(wèn)題。 罪魁禍?zhǔn)? i{ display inline-block width .08rem height .08r...
摘要:但是在安卓手機(jī)中會(huì)有變形的情況存在,渲染方面確實(shí)安卓手機(jī)干不過(guò)畢竟安卓版本眾多,還有什么的線(xiàn)等等的坑,都是能完美運(yùn)行,安卓總得找方法。當(dāng)使用做單位,出來(lái)的圓是不會(huì)變形的,可能是安卓在計(jì)算過(guò)程中產(chǎn)生誤差或者有什么其他因素造成的渲染問(wèn)題。 罪魁禍?zhǔn)? i{ display inline-block width .08rem height .08r...
摘要:代碼畫(huà)圓圓心位置半徑應(yīng)用在上面繪制的矩形內(nèi)繪制一個(gè)圓。字體類(lèi)型檢查文檔以獲取支持的字體字體比例指定字體大小常規(guī)的東西,如顏色,粗細(xì),線(xiàn)型等。應(yīng)用我們將在圖像上寫(xiě)白色的幾個(gè)字母代碼 Drawing Functions in OpenCV 學(xué)習(xí)目標(biāo)函數(shù) cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putTe...
1.canvas圖片預(yù)加載及進(jìn)度條的實(shí)現(xiàn) /*star *loading模塊 *實(shí)現(xiàn)圖片的預(yù)加載,并顯示進(jìn)度條 *參數(shù):圖片數(shù)組對(duì)象,加載完成的回調(diào)函數(shù) */ function loadImages(sources,callback){ var loadedImages = 0; var numImages = 0; ctx.font=14px ...
閱讀 736·2021-11-25 09:43
閱讀 1720·2021-11-18 10:02
閱讀 1103·2021-10-15 09:39
閱讀 1953·2021-10-12 10:18
閱讀 2192·2021-09-22 15:43
閱讀 826·2021-09-22 15:10
閱讀 2157·2019-08-30 15:53
閱讀 1070·2019-08-30 13:00