Javascript 相对于点放置对象
我有一些javascript代码,试图将一些对象相对于中心点放置在彼此上方,在本例中Javascript 相对于点放置对象,javascript,math,three.js,position,Javascript,Math,Three.js,Position,我有一些javascript代码,试图将一些对象相对于中心点放置在彼此上方,在本例中0,0 问题是,对象的数量、对象的大小以及对象之间的间距都是可变的 请看下面这张图片,它最好地解释了我的情况(希望如此): 因此,在这种情况下,中心点是绿点,网格中心位置是黄点。 Mh表示网格高度(可变) Sh表示间距高度(可变) 我试图展示黄点计算背后的逻辑。但是,当我尝试用javascript实现这一点时,它可以工作3行,但在其他行上会中断 这就是我迄今为止所尝试的: var data = { te
0,0
问题是,对象的数量、对象的大小以及对象之间的间距都是可变的
请看下面这张图片,它最好地解释了我的情况(希望如此):
因此,在这种情况下,中心点是绿点,网格中心位置是黄点。Mh
表示网格高度(可变)Sh
表示间距高度(可变)我试图展示黄点计算背后的逻辑。但是,当我尝试用javascript实现这一点时,它可以工作3行,但在其他行上会中断 这就是我迄今为止所尝试的:
var data = {
text : ["THE NEXT","POINT","OF VIEW"],
size : 5,
height : 2,
curveSegments : 12,
line_height : 2
};
function generateTextGeometry(mesh) {
var scaled_lineheight = map_r(data.size, 2, 75, 0.5, 20);
var y_start = (0 - data.text.length * data.size / 2 - data.size / 2 - (data.text.length - 1) * scaled_lineheight)/2;
var loader = new THREE.FontLoader();
loader.load( 'data/suisse_2.json', function ( font ) {
for (var i = data.text.length - 1; i >= 0; i--) {
var geometry = new THREE.TextGeometry( data.text[i], {
font: font,
size: data.size,
height: data.height,
curveSegments: data.curveSegments
});
geometry.center();
mesh.children[i].geometry = geometry;
mesh.children[i].position.y = y_start;
console.log(mesh.children[i].position);
if (i < data.text.length) {
y_start += (data.size + scaled_lineheight);
}else{
y_start += data.size;
}
}
console.log('-----------------------');
});
}
var数据={
正文:[“下一个”、“观点”、“观点”],
尺码:5,
身高:2,
曲线段:12,
线条高度:2
};
函数generateTextGeometry(网格){
var scaled_lineheight=地图(data.size,2,75,0.5,20);
变量y_start=(0-data.text.length*data.size/2-data.size/2-(data.text.length-1)*缩放的_线宽)/2;
var loader=new THREE.FontLoader();
load('data/suisse_2.json',函数(字体){
对于(var i=data.text.length-1;i>=0;i--){
var geometry=new THREE.TextGeometry(data.text[i]{
字体:字体,
大小:data.size,
高度:data.height,
curveSegments:data.curveSegments
});
几何中心();
mesh.children[i].geometry=geometry;
mesh.children[i].position.y=y\u start;
console.log(mesh.children[i].position);
if(i
当i console.log记录3行的位置时,它是正常的:
p{x:0,y:-6.30136986301369,z:0}p{x:0,y:0,z:0}
p{x:0,y:6.30136986301369,z:0} 但对于任何其他数量的行,它都是错误的: p{x:0,y:-4.4006849315068495,z:0}
p{x:0,y:1.9006849315068495,z:0} 所以我的最后一个问题是,我如何总是从绿色中心得到正确位置上的黄色位置?我目前的逻辑有什么问题
如果有任何不清楚的地方,请告诉我!所以我可以澄清 所以在阅读了我自己的问题20次之后。阳光照在我的脑袋上哈哈 所以我在计算初始开始时犯了一个错误,这里是更新的行:
var y_start = 0 - (((data.text.length - 1) * data.size) + ((data.text.length - 1) * scaled_lineheight))/ 2;