3D云词图旋转如何控制旋转方向呢?
发布于 6 年前 作者 wcai 6695 次浏览 来自 问答
我做了一个圆形的3d云此词图,通过滑动屏幕控制云此图的旋转速度,现在不知道如何写来控制旋转方向,求一个大佬看看我的代码,教我怎么通过滑动方向来控制旋转方向
 initfunction() {
    var tagEle = [
    ]
    var arr = this.data.roast_list
    for(var index in arr){
      tagEle.push({
        title: arr[index].body,
        x0,
        y0,
        z0,
        s0,
        o1,
        f15,
        angleX0,
        angleY0
      })
    }
    for (var i = 0; i < tagEle.length; i++) {
      var fallLength = 100 //圆的焦点
     
      var k = (2 * (i + 1) - 1) / tagEle.length - 1;
      //计算按圆形旋转
      var a = Math.acos(k);
      var b = a * Math.sqrt(tagEle.length * Math.PI);
      //计算元素x,y坐标
      var numx = 120 * Math.sin(a) * Math.cos(b)
      var numy = 120 * Math.sin(a) * Math.sin(b);
      var numz = 220 * Math.cos(a);
 
      // console.log(numo)
      //计算元素缩放大小
      tagEle[i].x = numx * 2
      tagEle[i].y = numy * 2
      tagEle[i].z = numz
      tagEle[i].s = 350 / (400 - tagEle[i].z)
    }
//动画
var interBoolean = true;
    this.setData({
      timer:setInterval(() => {
        if(interBoolean == true){

          interBoolean = false
      for (var i = 0; i < tagEle.length; i++) {
        tagEle[i].s = 350 / (400 - tagEle[i].z)//字体大小
        var cos = Math.cos(angleX);//返回余弦值
        var sin = Math.sin(angleX);//返回正弦值
        var y1 = tagEle[i].y * cos - tagEle[i].z * sin;
        var z1 = tagEle[i].z * cos + tagEle[i].y * sin;
        tagEle[i].y = y1;
        tagEle[i].z = z1;
 
        var cos = Math.cos(angleY);//返回余弦值
        var sin = Math.sin(angleY);//返回正弦值
        var x1 = tagEle[i].x * cos - tagEle[i].z * sin;
        var z1 = tagEle[i].z * cos + tagEle[i].x * sin;
        tagEle[i].x = x1;
        tagEle[i].z = z1;   
      }
      this.setData({
        tagEle: tagEle
      })
      interBoolean = true
    }
    }, 25)
  })
  },
2 回复

可以写个代码片段的话,我明早可以帮你看

回到顶部