我正在尝试模拟星系的3D分布。
星系是点。
[question1.htm使用galaxydata1.txt来计算和加载星系位置:
rawFile.open("GET", "galaxydata1.txt", false);
var parts = data[i].split("\t");
var D = parts[0];
var glon = parts[1]*3.1416/180;
var glat = parts[2]*3.1416/180;
var z = D*Math.sin(glat);
var xy = D*Math.cos(glat);
var x = xy*Math.cos(glon);
var y = xy*Math.sin(glon);
dotGeometry.vertices.push(new THREE.Vector3( x, y, z ));
我想模拟以在资源受限的设备中工作。因此,我认为我可以事先计算位置并将它们保存在文件中。
我使用write.htm至create galaxydata2.txt进行了此操作。
[question2.htm使用galaxydata2.txt加载星系位置:
var parts = data[i].split(" ");
rawFile.open("GET", "galaxydata2.txt", false);
dotGeometry.vertices.push(new THREE.Vector3( parts[0], parts[1], parts[2] ));
由于[question1.htm和question2.htm都生成完全相同的模型,因此可以验证变换是正确的。
现在,我已经实现了星系搜索功能,该功能可以按名称搜索星系并使用以下命令将其居中:controls.target = dots.geometry.vertices[i];
您可以(仙女座星系的名称之一。令人困惑的是,虽然通过搜索m31进行尝试
星系搜索功能在question1.htm中有效,但在question2.htm中无效!
自最近两天以来,我已经花费了数十个小时试图找到原因,但是无法理解它的头或尾。
请注意,我已经使用完全相同的代码来计算两种情况下的位置。
[很可能,我缺少这里的专家会立即明白的东西。如果可能,请指导我。
1:n {x:“ -34.10470732858122”,y:“ 95.77578953486031”,z:“ -66.52906941334713“}2:n {x:“-23.203470164906907”,y:“ 64.44921156287786”,z:“-43.97565350543055“}3:n {x:“-22.228259825915906”,y:“ 57.0117730686664”,z:“-31.448405312168955“}
因此将不起作用。
加载数据之后,您需要对数据进行.parseFloat,然后将其填充到几何中。