js 根據(jù)鼠標拖動(或手機長按)旋轉

因為沒有搜索到,所以 自己寫了一個

廢話不多說,直接上效果圖


旋轉效果.gif

廢話不多說,直接上代碼,順便給個數(shù)學的公式圖

.png

將公式變化為js代碼

            //得到 向量1
            var x1 = (beginPointX - bgCenterX);
            var y1 = (beginPointY - bgCenterY);

            //得到 向量2
            var x2 = (event.center.x - bgCenterX);
            var y2 = (event.center.y - bgCenterY);

            //計算cos =(x1x2+y1y2)/[√(x12+y12)*√(x22+y22)]
            var cos =( x1 * x2 + y1 * y2) /( Math.sqrt(Math.pow(x1, 2) + Math.pow(y1, 2)) * Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2)) );

            // 弧度
            var radina = Math.acos(cos);
            // 角度
            var angle =  180 / (Math.PI / radina);

控件的需求是根據(jù)鼠標拖來旋轉,所以用到了Vue-touch 控件的 pan 事件,然后控件的大小固定寬高300px, 完整的控制代碼

  panmove:function(event){
            //得到 向量1
            var x1 = (beginPointX - bgCenterX);
            var y1 = (beginPointY - bgCenterY);

            //得到 向量2
            var x2 = (event.center.x - bgCenterX);
            var y2 = (event.center.y - bgCenterY);

            //計算cos =(x1x2+y1y2)/[√(x12+y12)*√(x22+y22)]
            var cos =( x1 * x2 + y1 * y2) /( Math.sqrt(Math.pow(x1, 2) + Math.pow(y1, 2)) * Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2)) );
            
            var radina = Math.acos(cos);
            console.log(radina);

            // 角度
            var angle =  180 / (Math.PI / radina);

            //如果在中線左邊 就需要加 180度
            if(event.center.x <150){
                angle = 180 + (180 - angle);
            }
            this.styleObject.transform =  'rotate(' + angle + 'deg)';            
        },
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,201評論 3 119
  • 也許我屬于執(zhí)著無悔的那一群,以飄零做為最后歸宿。 漂浮于空氣中,漂泊在旅程里 將生命時而飄灑、時而飄散、時而飄落 ...
    杳煦閱讀 208評論 0 0
  • 這幾天看了一個消息,陳翔六點半的腿腿姑娘被殺了,我不是粉絲,六點半的視頻也只是偶爾看,但是聽到這個消息還是挺不可思...
    喜歡牛奶的魚兒閱讀 868評論 1 5

友情鏈接更多精彩內(nèi)容