国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

拖拽拉伸加上旋轉(zhuǎn)角度的數(shù)學(xué)原理

mengera88 / 2076人閱讀

摘要:最近在寫(xiě)公司項(xiàng)目的時(shí)候遇到了拖拽拉伸加旋轉(zhuǎn)組件然后改變其高度寬度的需求,原本以為拖拽那么簡(jiǎn)單,拉伸的話就改變和就好了,因?yàn)橥献Ю斓姆轿挥邪藗€(gè)點(diǎn),所有一個(gè)個(gè)計(jì)算總會(huì)解決的,神奇的現(xiàn)象起初在沒(méi)有加上旋轉(zhuǎn)角度的時(shí)候測(cè)試了八個(gè)方位的拖拽拉伸是沒(méi)有

最近在寫(xiě)公司項(xiàng)目的時(shí)候遇到了拖拽拉伸加旋轉(zhuǎn)組件然后改變其高度寬度的需求,原本以為‘拖拽那么簡(jiǎn)單,拉伸的話就改變width和height就好了’,因?yàn)橥献Ю斓姆轿挥邪藗€(gè)點(diǎn),所有一個(gè)個(gè)計(jì)算總會(huì)解決的,but

神奇的現(xiàn)象

起初在沒(méi)有加上旋轉(zhuǎn)角度的時(shí)候測(cè)試了八個(gè)方位的拖拽拉伸是沒(méi)有問(wèn)題的,而且其本身實(shí)現(xiàn)方法不難,例如拖拽的是最頂部的中心點(diǎn)則改變其組件的top數(shù)值和height數(shù)值就好了,但如果加上了旋轉(zhuǎn)角度之后、、似乎變得詭異了起來(lái)

分析原因

我們知道,旋轉(zhuǎn)的角度可以通過(guò)CSS3的transform屬性的rotate值來(lái)改變,然后如果不改變坐標(biāo)圓點(diǎn)則默認(rèn)是組件的中心點(diǎn),所以如果一旦rotate值發(fā)生改變其組件的整個(gè)坐標(biāo)系也隨之改變,我大概粗略的畫(huà)了下圖

圖中藍(lán)色的方塊比作組件,其坐標(biāo)系是藍(lán)色的XY坐標(biāo)系,加入旋轉(zhuǎn)角度為45度的話,則坐標(biāo)系就變成了橙色的XY坐標(biāo)系

這個(gè)時(shí)候如果再用以藍(lán)色坐標(biāo)系為參考系來(lái)計(jì)算拖拽拉伸的數(shù)值肯定是不正確的,此時(shí)我們借助于坐標(biāo)系的旋轉(zhuǎn)變換公式,還記得嗎?

理清需求

因?yàn)槲覀冊(cè)诶祉敳康臅r(shí)候只計(jì)算了top值和height值,忽略了left值,以為拉伸頂部只改變只兩個(gè)值就好了,但其實(shí)這是理想情況,譬如上圖中的點(diǎn)V,我們?cè)谛D(zhuǎn)到45度的時(shí)候,拉伸頂部要保證V點(diǎn)的位置不變,注意!只是保證V點(diǎn)在藍(lán)色的原始坐標(biāo)系中的位置,那么勢(shì)必還是要計(jì)算left值的,我又大概粗略的畫(huà)了下圖

為了好計(jì)算,我假設(shè)組件的高度為100,被拉伸之后的高度為200,那么拉伸到200的時(shí)候其坐標(biāo)系為深灰色的X`Y`坐標(biāo)系,答案顯而易見(jiàn),V點(diǎn)到深灰色坐標(biāo)原點(diǎn)的橫坐標(biāo)距離 等于 V點(diǎn)到橙色坐標(biāo)原點(diǎn)的橫坐標(biāo)距離 加上 這兩個(gè)坐標(biāo)原點(diǎn)的橫坐標(biāo)距離

我最后大概又畫(huà)了下圖

也就是說(shuō)我們?cè)谕献Ю斓臅r(shí)候要保證這個(gè)等式成立,也就是E`F` = EF + OO`
那么,一我們知道了角度rotate、二我們也知道了兩個(gè)坐標(biāo)系圓點(diǎn)之間的距離OO`(注:sin(45度) * (200 - 100) / 2),那么就能保證V點(diǎn)的位置橫向不變了,這里只例舉了橫坐標(biāo)的情況,縱坐標(biāo)的原理類似

最終效果

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/97033.html

相關(guān)文章

  • canvas中拖拽、縮放、旋轉(zhuǎn) (下) —— 代碼實(shí)現(xiàn)

    摘要:中的拖拽縮放旋轉(zhuǎn)上數(shù)學(xué)知識(shí)準(zhǔn)備。表示整個(gè)區(qū)域,表示中的元素。事實(shí)上,工作上的需求并沒(méi)有要求旋轉(zhuǎn),只需要實(shí)現(xiàn)拖拽縮放即可。 寫(xiě)在前面 showImg(https://segmentfault.com/img/bVbonep?w=283&h=306); 本文首發(fā)于公眾號(hào):符合預(yù)期的CoyPan demo體驗(yàn)地址及代碼在這里:請(qǐng)用手機(jī)或?yàn)g覽器模擬手機(jī)訪問(wèn) 上一篇文章介紹了canvas中的拖拽...

    pumpkin9 評(píng)論0 收藏0
  • 前端實(shí)驗(yàn)手札——拖拽旋轉(zhuǎn)圖片實(shí)現(xiàn)及思路

    摘要:在拖拽旋轉(zhuǎn)圖片的實(shí)現(xiàn)中,最符合的就是上面這題的情況,接下來(lái)好好說(shuō)明一下。經(jīng)過(guò)按計(jì)算機(jī)推導(dǎo)出來(lái)的結(jié)論,反三角函數(shù)計(jì)算出來(lái)的結(jié)果是弧度,而一直使用的角表示的其實(shí)是角的弧度。拖拽圍繞著圖片的中心旋轉(zhuǎn),圖片中心作為公式中的原點(diǎn)設(shè)為點(diǎn)使用。 讓我們來(lái)看看以下這道題: 已知點(diǎn)A(x1,y1)和點(diǎn)B(x2,y2),求兩點(diǎn)求與圓點(diǎn)O(x0,y0)的夾角θ的角度:∠θ=arctan[(y2-y0)/(x...

    tianren124 評(píng)論0 收藏0
  • 基于javascript拖拽類封裝

    摘要:參考了很多別人寫(xiě)的代碼,最后終于弄明白了其中的原理,自己也寫(xiě)了一個(gè)。效果圖如下地址如下拖拽類封裝代碼使用方法引入和對(duì)應(yīng)的。如果沒(méi)有為的結(jié)構(gòu),就創(chuàng)建。鼠標(biāo)移動(dòng)時(shí),記錄再次計(jì)算鼠標(biāo)位置距離中心位置的的反正切函數(shù)。 在公司做一個(gè)h5編輯平臺(tái),中間需要對(duì)元素進(jìn)行拖拽、放大縮小、旋轉(zhuǎn)等操作,且需要對(duì)文本、圖片、音樂(lè)組件等不同元素都可以具備這些功能。參考了很多別人寫(xiě)的代碼,最后終于弄明白了其中的原...

    afishhhhh 評(píng)論0 收藏0
  • HTML5中手勢(shì)原理分析與數(shù)學(xué)知識(shí)實(shí)踐

    摘要:中手勢(shì)原理分析與數(shù)學(xué)知識(shí)的實(shí)踐引言在這觸控屏的時(shí)代,人性化的手勢(shì)操作已經(jīng)深入了我們生活的每個(gè)部分。這篇博文主要是解析了移動(dòng)端常用手勢(shì)的原理,及從前端的角度學(xué)習(xí)過(guò)程中所使用的數(shù)學(xué)知識(shí)。 HTML5中手勢(shì)原理分析與數(shù)學(xué)知識(shí)的實(shí)踐 引言 在這觸控屏的時(shí)代,人性化的手勢(shì)操作已經(jīng)深入了我們生活的每個(gè)部分。現(xiàn)代應(yīng)用越來(lái)越重視與用戶的交互及體驗(yàn),手勢(shì)是最直接且最為有效的交互方式,一個(gè)好的手勢(shì)交互,能...

    rollback 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<