js 怎么让文字按照球形的形状排列原理

JavaScript012

js 怎么让文字按照球形的形状排列原理,第1张

var center  = {x:200,y:200}//中心坐标

var r = 50//半径 

//dg是角度

function cycle(dg){

var out = {}

var dis1 = Math.PI/180 //1度的计算参数

out.x = center.x +   Math.cos(dis1 * dg)*r

out.y = center.y -   Math.sin(dis1 * dg)*r

return out

}

for(var i = 0 , elem , cyc  i <361  i = i +20){

cyc = cycle(i)

elem = document.createElement("div")

elem.setAttribute("style","position:absoluteleft:"+cyc.x+"pxtop:"+cyc.y+"px")

elem.innerText="字"

document.body.appendChild(elem)

}

具体代码实现在这里,原理就是通过临边斜边的函数来进行坐标计算

另外建议楼主问之前先自己多思考,才能得到提高

坐标是 (sindzcosdy, sindxcosdz, sindycosdx)

答案是这样算的:

先绕着Z旋转dz,得到(sindz, cosdz,1)

再绕着X旋转得到(sindz, sindxcosdz, cosdx)

最后绕着Y旋转得到 (sindzcosdy, sindxcosdz, sindycosdx)

就旋转法向量就好拉,别的不理.

追问:

谢谢啊!一个字“牛”,一看就是我想要的答案,不过我还想问问就是它的开始朝向垂直轴有没有影响呢?

追答:

youdoido:我刚才也看了一下,有些不可以忽略的东西被我忽略了.. 我的思路是这样的,每次旋转都可以放到平面上旋转的. 绕着X旋转的话, 就可以把X轴忽略掉,并且X坐标不变. 绕着Y轴旋转,可以把Y轴忽略掉,变成平面坐标,而且Y轴的值不变. 我刚才又算了一下,发现答案是有点问题. 我再看看吧. 不好意思哈哈.. 刚打错字了.