亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript使用atan2來繪制箭頭和曲線的實例

2019-11-19 15:27:31
字體:
來源:轉載
供稿:網友

最近搞Canvas繪圖,知道了JavaScript中提供了atan2(y,x)這樣一個三角函數。乍眼一看,不認識,畢竟在高中時,學過的三角函數有:sin,cos,arcsin,arccos,tan,arctan等,并沒有這個。而工作中又需要用到它,所以這里就做了個簡單的了解。

在坐標系中理解tan atan

回顧一下三角函數tan

tanθ,用三角函數來表示時,它的值等于sinθ/cosθ,如果將其放到坐標系中,它的的值等價于:dy/dx。在坐標系中,任意兩個點所組成的直線,相對于x軸的斜率就是tanθ = dy /dx,相對于y軸的斜率就是dx/dy ,此時我們用cot來表示;其中,dy 是兩個點的y坐標的差值,dx是兩個點的x坐標的差值。

那么坐標系內除了y軸,任何一個點(x,y),相對于x軸的斜率就是y-0/x-0,也即是y/x

我們將tanθ稱為一條直線相對于x軸的斜率,那么θ就是相對于x軸的夾角(旋轉角度)了。

tan,是根據角度計算斜率的。那么反過來 arctan(反正切)自然就認為是根據斜率來計算角度的。

為何存在atan2 ?

JavaScript中,提供了兩個arctan函數,一個是atan, 一個是atan2。 atan就是我們所熟知arctan。其實在很多編程語言中都提供了atan2。

那么atan2又是怎么回事呢?

要知道這個,需要知道arctan的不足之處:

arctan的返回值范圍是(-π/2, π/2) 不包括, ±π/2,也就是(兩個點組成的直線與x軸夾角是90°)90°是計算不出來的。為啥呢?在計算arctan ( dy/dx)時,如果兩個點(x1,y1),(x2,y2)組成的直線與x軸的夾角呈90°時,dx= x2-x1 = 0 ,0 是不能作為除數的,所以就無法計算這種情形。

值的范圍也就是計算的角度的范圍在(-π/2, π/2),從坐標系來看,這個角度的范圍只能是在第14象限,并不能表示出第2、3象限的角。

為了彌補atan的不足,在計算機編程領域,引入了atan2函數,它的計算結果是在(-π,π]。它正好可以覆蓋整個坐標系,包括90°的情形。

它的計算過程是怎樣的呢?

關于這個,我從wikipedia上摘取了它的計算過程:

atan2的應用

在第一小節中的那張圖中的坐標系,是我們熟知的。在HTML、Canvas中,坐標系并不像我們熟知的坐標系那樣。它是這樣的:

x軸正向沿順時針方向,所經過的角度分別是0,π/2, π,3π/22π。

x軸正向沿逆時針方向,所經過的角度分別是0,-π/2, -π,-3π/2-2π。

atan2的結果在(-π,π]之間,恰好一周,四個象限全覆蓋。從坐標系來看,順時針方向的值是正值,逆時針方向的值是負的。

從坐標系上來看,atan2結果是(0,-π)時就表示,從x軸正向逆時針方向轉最大 π弧度(180角度)。同理,(0,π)表示從x軸正向順時針轉最大π弧度(180角度)。

在第1)小節中說了atan可以用來計算平面坐標系內任意兩點的連線與x軸正向之間的夾角。而atan2atan的補充,那么使用atan2自然就可以來計算平面坐標系內任意兩點的連線與x軸正向之間的夾角了。

如果兩個點在第一象限內:

如果兩個點在第四象限內:

如果兩個點在不同的象限內,我們也可以平移來看。

何時需要使用atan2 ?

目前我遇到了兩種情況,是通過atan2來解決的:

1) 在平面坐標系內任意兩個點間畫一條帶有箭頭的直線(可以是單向箭頭,可以是雙向箭頭)。在這個需求中,另外也知道了箭頭的一條邊與直線的夾角和箭頭的長度。

這個需求的難點就是要計算出箭頭的另外兩個點坐標。

2) 在平面坐標系內任意兩個點之間畫一條指定曲率的曲線(arc)。在這個需求中,要計算arc,自然要知道radius, startAngle, endAngle,圓心坐標??梢愿鶕蕘碛嬎愠霭霃降龋请y點在計算圓心坐標。

這兩個需求的共同特點是:

1)兩個已知的點

2)根據這兩個點和其他的條件去計算一些必須的(畫line,arc等必須的)點坐標。

目前我遇到了這兩種需求,都通過atan2來解決的。其他的情況,目前尚且未知,待后續發現時,補充上。

以上這篇JavaScript使用atan2來繪制箭頭和曲線的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产综合视频在线观看中文| 亚洲午夜色婷婷在线| 中文字幕欧美专区| 亚洲女人天堂网| 日本久久久久久久| 91在线观看免费网站| 日韩美女在线播放| 欧美理论电影在线播放| 国产日韩中文在线| 国产精品高潮在线| 欧美性xxxx极品hd欧美风情| 久久天天躁狠狠躁夜夜爽蜜月| 久久国产色av| 国产精品视频一区二区高潮| 成人激情视频在线播放| 亚洲女人天堂视频| 狠狠躁18三区二区一区| 激情亚洲一区二区三区四区| 欧美成年人网站| 欧美视频一区二区三区…| 深夜福利一区二区| 精品久久久久久电影| 97碰在线观看| 日本精品va在线观看| 中文字幕在线成人| 国产精品第二页| www.xxxx精品| 91亚洲精品久久久| 久久激情视频免费观看| 91情侣偷在线精品国产| 亚洲国产精品999| 久久久精品国产网站| 日韩免费中文字幕| 国产精品自产拍在线观| 亚洲欧美日韩区| 在线播放国产一区中文字幕剧情欧美| 亚洲九九九在线观看| 韩国美女主播一区| 黄色精品一区二区| 亚洲精品福利资源站| 亚洲国产精品成人av| 亚洲免费一级电影| 日韩电影大全免费观看2023年上| 国产成人aa精品一区在线播放| 国产美女久久精品| 国产欧美日韩亚洲精品| 91久久国产婷婷一区二区| 久久影院资源网| 68精品久久久久久欧美| 亚洲精品网站在线播放gif| 青草热久免费精品视频| 精品国产31久久久久久| 亚洲成人av资源网| 久久福利视频导航| 一本一本久久a久久精品综合小说| 日韩av影片在线观看| 亚洲a一级视频| 2019亚洲日韩新视频| 国产精品欧美一区二区| 亚洲欧洲一区二区三区在线观看| 午夜精品久久久久久99热| 亚洲最大福利网| 麻豆成人在线看| 精品国产依人香蕉在线精品| 精品中文字幕在线观看| 久久久999成人| 亚洲人成电影在线播放| 日韩欧美一区视频| 欧美激情亚洲另类| 亚洲一区二区三区在线视频| 欧美极品欧美精品欧美视频| 欧美性高潮在线| 亚洲综合中文字幕在线观看| 国产精品精品视频一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 国产精品成人久久久久| 国产精品视频一区二区三区四| www.日韩av.com| 欧美电影在线观看完整版| 欧美自拍视频在线| 欧美午夜精品久久久久久久| 91tv亚洲精品香蕉国产一区7ujn| 亚洲日韩中文字幕在线播放| 国产精品99久久99久久久二8| 久久免费视频观看| 日韩精品在线看| 2020久久国产精品| 日韩精品亚洲元码| 国模叶桐国产精品一区| 日韩在线视频免费观看高清中文| 欧美色视频日本版| 另类少妇人与禽zozz0性伦| 欧美激情精品久久久| 一区二区三区 在线观看视| 在线观看日韩av| 97国产精品免费视频| 久久久国产精品x99av| 日韩av不卡在线| 夜夜狂射影院欧美极品| 国产一区二区免费| 日韩av在线免播放器| 精品久久久久久久久久| 国产美女搞久久| 亚洲欧洲日韩国产| 国产视频一区在线| 亚洲成人免费在线视频| 国产有码一区二区| 欧美成人免费全部| 狠狠躁天天躁日日躁欧美| 亚洲女人天堂网| 亚洲国产天堂久久综合网| 日韩av在线网| 久久精品电影一区二区| 久久频这里精品99香蕉| 日韩欧美福利视频| 91wwwcom在线观看| 色偷偷偷综合中文字幕;dd| 亚洲一级免费视频| 亚洲qvod图片区电影| 欧美成人在线影院| 亚洲精品99久久久久中文字幕| 亚洲欧美激情四射在线日| 色悠久久久久综合先锋影音下载| 欧美另类第一页| 国产情人节一区| 久久国产精品久久久久久| 国产精品旅馆在线| 国产69精品久久久久久| 亚洲一区二区久久| 日韩国产高清视频在线| 亚洲天堂成人在线视频| 在线播放日韩专区| 久久伊人精品一区二区三区| 久久精品91久久香蕉加勒比| 午夜欧美大片免费观看| 欧美精品在线免费| 国产精品第100页| 夜夜嗨av一区二区三区免费区| 中文字幕亚洲专区| 欧美xxxx14xxxxx性爽| 伊人久久久久久久久久久| 欧美美女18p| 亚洲视频第一页| 欧美国产精品日韩| 777午夜精品福利在线观看| 欧美成人激情视频免费观看| 欧美野外猛男的大粗鳮| 国产视频福利一区| 亚洲一区二区三区四区视频| 久久久在线免费观看| 欧美精品一区二区免费| 日韩欧美中文字幕在线播放| 超碰91人人草人人干| 一色桃子一区二区| 亚洲国产成人精品女人久久久| 日韩成人av在线| 日韩小视频在线| 中文字幕亚洲综合| 欧美在线观看日本一区| 日韩av手机在线| 亚洲最大福利视频网站| 久久精品国产久精国产思思| 日韩美女视频免费看| 亚洲欧美制服另类日韩|