一般的前端開發業務中用算法的場景比較少,用算法比較多的場景每每是H5遊戲和活動頁比較多。前端
下面分享開發場景中的算法應用。算法
旋轉spa
先思考一下,下圖中的旋轉如何實現 ?遊戲
手機掃碼體驗ci
體驗連接: http://auto.163.com/special/h...開發
=========================================================get
難點是如何簡便的判斷出手指拖動轉化成旋轉的角度與方向數學
比較好的辦法使用 向量積it
先複習數學上的向量積的知識class
模長:(在這裏θ表示兩向量之間的夾角(共起點的前提下)(0°≤θ≤180°),它位於這兩個矢量所定義的平面上。)
方向:a向量與b向量的向量積的方向與這兩個向量所在平面垂直,且遵照右手定則。(一個簡單的肯定知足「右手定則」的結果向量的方向的方法是這樣的:若座標系是知足右手定則的,當右手的四指從a以不超過180度的轉角轉向b時,豎起的大拇指指向是c的方向。)
假設 a 向量的座標爲(ax, ay, ax),b 向量的座標爲 (bx, by, bz),i,j,k的值爲1。向量的z值爲0。也就是向量只在x,y平面。
上面的公式能夠化簡爲 a x b = axby - aybx
上圖中a位置座標(1, 2, 0) b位置座標(2, 1, 0),也就是ab 都在xy平面內。
當向量從a位置旋轉到b位置,根據上面的公式計算的結果爲-3;
當向量從b位置旋轉到a位置,根據上面的公式計算的結果爲3;
因此咱們能夠根據結果值的正負來判斷方向,根據算出的正玄值來得出旋轉的角度。