threejs指南针【控制中心计算角度】
生活随笔
收集整理的這篇文章主要介紹了
threejs指南针【控制中心计算角度】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
threejs指南針
- 前言
- 一、實現原理
- 二、計算夾角
- 三、旋轉圖片
- 四、代碼整合
前言
提示:明確指南針的公式
效果:
提示:以下是本篇文章正文內容,下面案例可供參考
一、實現原理
實現思路:傳統的計算相機到控制中心的夾角來控制2D的圖片進行旋轉,達到指南針的效果。
二、計算夾角
場景中添加指南針,一般在場景中添加指南針,并不是一直以場景中心(0,0,0)為中心點。
用戶很大程度上會拖動場景,或場景中添加的有相機漫游之類的操作,不可能一直依靠相機坐標去計算角度。
根據 反正切三角函數 atan2(x,y),結合三維場景y軸向上,忽略y軸。
所以 atan2(x,z) 只需要x的坐標和z的坐標。
求得相機相對于控制中心的相對坐標。只需要將(相機坐標 - 控制中心坐標)
套入反正切函數求得角度
// 注意:后邊*180/Math.PI是用于計算角度的 // 反正切函數atan只會得出結果,不會求得角度 // 但是這種視瀏覽器而定,有些瀏覽器封裝的有角度算法,只需要Math.atan2(dirx, dirz)即可 // 后續 +140 這個值是用來偏移角度的,默認以 z軸 的負方向為正北。 // 大多數視場景位置而定。偏移140即代表以右下角為正北方向 const theta = Math.atan2(dirx, dirz)*180/Math.PI + 140;三、旋轉圖片
剩下的就是,根據角度直接操作圖片dom的style旋轉即可
const compass = document.getElementById('compass') compass.style.transform = 'rotateZ('+ theta +'deg)';四、代碼整合
直接將上述整合添加到render里實時渲染即可
指南針跟隨視角而變化
總結
以上是生活随笔為你收集整理的threejs指南针【控制中心计算角度】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020春招---飞鱼科技 一面面经
- 下一篇: 实现生产者消费者的三种方式