svg給出兩點(diǎn)坐標(biāo)連一條曲線

svg中給出兩點(diǎn)的坐標(biāo)得到連接兩點(diǎn)的曲線路徑.
中心思想:求出兩點(diǎn)連線的中垂線公式,給定AB某一點(diǎn)的X或Y坐標(biāo),求出中垂線上的另一個(gè)坐標(biāo)

在svg中,我們畫曲線的時(shí)候需要知道曲線的生成公式-----貝塞爾曲線.

線性貝塞爾曲線演示動(dòng)畫,t在[0,1]區(qū)間
二次貝塞爾曲線演示動(dòng)畫高职,t在[0,1]區(qū)間
三次貝塞爾曲線演示動(dòng)畫父款,t在[0,1]區(qū)間
四次貝塞爾曲線演示動(dòng)畫鸿捧,t在[0,1]區(qū)間
五次貝塞爾曲線演示動(dòng)畫,t在[0,1]區(qū)間

根據(jù)圖像,我們可以輕易的知道貝塞爾曲線的原理,他是由 起點(diǎn)-控制點(diǎn)-控制點(diǎn)-...-終點(diǎn) 之間的連線,從之中再取相領(lǐng)兩根線的某一個(gè)點(diǎn)連線,取其中點(diǎn)繪制出來(lái)的曲線.

當(dāng)然我們現(xiàn)在只是想隨意的畫出一條看的過(guò)去的曲線,所以我們的目標(biāo)是得到一個(gè)控制點(diǎn)

連線

從上圖我們可以看出來(lái)控制點(diǎn)2(綠色)畫出來(lái)的線是比較好看的.而這種線不偏向某一邊的線的控制點(diǎn)都是在這兩個(gè)點(diǎn)連線的中垂線上的

中垂線

所以我們的重心落到了求出兩點(diǎn)的中垂線上.

下面的問(wèn)題就比較簡(jiǎn)單了

中垂線公式
function svgPathCurv(a,b,curv) {
    /*
     * 彎曲函數(shù).
     * a:a點(diǎn)的坐標(biāo){x:10,y:10}
     * b:b點(diǎn)的坐標(biāo){x:10,y:20}
     * curv:彎曲程度 取值 -5 到 5 
     */
    curv = curv ? curv : 0;
    var x1, x2, y1, y2, s, k2, controX, controY, q, l, path = '';
    var s = 'M' + a.x + ',' + a.y + ' ';

    /*
     * 控制點(diǎn)必須在line的中垂線上
     * **求出k2的中垂線(中垂線公式)**
     */
    k2 = -(x2 - x1) / (y2 - y1);
    /*
     * 彎曲程度是根據(jù)中垂線斜率決定固定控制點(diǎn)的X坐標(biāo)或者Y坐標(biāo),通過(guò)中垂線公式求出另一個(gè)坐標(biāo)
     * 默認(rèn)A/B中點(diǎn)的坐標(biāo)+curv*30,可以通過(guò)改基數(shù)30改變傳入的參數(shù)范圍
     */
    if(k2 < 2 && k2 > -2) {
        controX = (x2 + x1) / 2 + curv * 30;
        controX = controX < 0 ? -controX : controX;
        controY = k2 * (controX - (x1 + x2) / 2) + (y1 + y2) / 2;
        controY = controY < 0 ? -controY : controY;
    } else {
        controY = (y2 + y1) / 2 + curv * 30;
        controY = controY < 0 ? -controY : controY;
        controX = (controY - (y1 + y2) / 2) / k2 + (x1 + x2) / 2;
        controX = controX < 0 ? -controX : controX;
    }
    //定義控制點(diǎn)的位置

    q = 'Q' + controX + ',' + controY + ' ';
    //l=lineto
    l = x2 + ',' + y2 + ' ';
    //結(jié)果例: M10,10Q35,15,10,20 
    path = s + q + l;
    return path;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌十减,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愤估,死亡現(xiàn)場(chǎng)離奇詭異帮辟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)玩焰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門由驹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人震捣,你說(shuō)我怎么就攤上這事荔棉。” “怎么了蒿赢?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵润樱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我羡棵,道長(zhǎng)壹若,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任皂冰,我火速辦了婚禮店展,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秃流。我一直安慰自己赂蕴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布舶胀。 她就那樣靜靜地躺著概说,像睡著了一般碧注。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糖赔,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天萍丐,我揣著相機(jī)與錄音,去河邊找鬼放典。 笑死逝变,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奋构。 我是一名探鬼主播壳影,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼声怔!你這毒婦竟也來(lái)了态贤?” 一聲冷哼從身側(cè)響起舱呻,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤醋火,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后箱吕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芥驳,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年茬高,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兆旬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怎栽,死狀恐怖丽猬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熏瞄,我是刑警寧澤脚祟,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站强饮,受9級(jí)特大地震影響由桌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邮丰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一行您、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剪廉,春花似錦娃循、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捧书。三九已至,卻和暖如春骤星,著一層夾襖步出監(jiān)牢的瞬間经瓷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工洞难, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舆吮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓队贱,卻偏偏與公主長(zhǎng)得像色冀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柱嫌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容