У меня есть орбита длиной 200. Но она центрирована вокруг солнца радиуса 0 (длина 0). Теперь я хочу расширить солнце до радиуса 1 и «вытолкнуть» наружные орбиты.Как «вытолкнуть» координаты XYZ, образующие трехмерную орбиту со смещением в середине
хуг координаты выглядеть следующим образом:
[-6.76, 5.75, -1.06],
[-6.95, 5.54, -0.91],
[-7.13, 5.33, -0.75],
[-7.31, 5.11, -0.58]
... followed by 196 more coordinates
Я пытался пытался много вещей, чтобы сделать круг больше * radius
и / someNumbers
. По крайней мере, попытаться сделать это сам. Но я потерял, когда я сделал if
так:
If(the x coordination > 0)
the x coordination += 1;
}
Else{
the x coordination += 1;
}
А также для Y и Z, но когда они приблизились к 1 и -1 положению этой оси они пропускаются на другую сторону. Создание линии (с шириной 1 с обеих сторон) пустоты вдоль оси.
Результат awnser MBO в (вид сверху):
// arrayIndex is a number to remember at which point it is in the orbit array
satellites.forEach(function (element) {
if (element.arrayIndex>= element.satellite.coordinates.length) {
element.arrayIndex= 0;
}
var posX = element.satellite.coordinates[element.arrayIndex][0];
var posY = element.satellite.coordinates[element.arrayIndex][1];
var posZ = element.satellite.coordinates[element.arrayIndex][2];
R = Math.sqrt(posX^2 + posY^2 + posZ^2);
cf = (R + earthRadius)/R;
xnew = posX * cf;
ynew = posY * cf;
znew = posZ * cf;
// var posX = earthRadius * (element.satellite.coordinates[element.test][0]/(200 * earthRadius) * earthRadius);
// var posY = earthRadius * (element.satellite.coordinates[element.test][1]/(200 * earthRadius) * earthRadius);
// var posZ = earthRadius * (element.satellite.coordinates[element.test][2]/(200 * earthRadius) * earthRadius);
// divide by 100 to scale it down some more
element.position.x = xnew/100;
element.position.y = ynew/100;
element.position.z = znew/100;
element.arrayIndex= element.arrayIndex+ 1;
});
он частично работает, она вырастет, но она исчезает, когда его между 2 оси, я добавил изображение в этом вопросе. (белая линия - сторона, которую она показывает) – Davidto
Странно. Вы уверены в расчетах? Проверьте значения cf. Показать код, вызывающий это поведение – MBo
Я построил массивы на python, прежде чем захочу использовать их в javascript, и они выглядели отлично. Я добавил код, который используется, чтобы заставить их перейти к следующей позиции. когда он исчезает cf = NaN. и когда он виден, он немного вмятится, когда он посередине – Davidto