Мне нужно отсортировать треугольники по расстоянию между ними и камерой, однако моя реализация работает только в 50% случаев. Я вычисляю среднее значение точек каждого треугольника, затем вычисляю расстояние между камерой и этими точками. Я сравниваю расстояние между двумя треугольниками, и треугольник, у которого меньше, сортируется назад. Есть ли способ сделать его эффективным хотя бы на 80%, мне это не нужно для чего-то необычного.
camera3D - это вектор, который удерживает положение камеры. a и b оба являются треугольниками в массиве trisToDisplay. avgX, avgY и avgZ - все вычисляют средние значения x, y и z треугольника.
trisToDisplay = trisToDisplay.sort(function(a, b) {
return distance3D(avgX(b), avgY(b), avgZ(b), camera3D.x, camera3D.y, camera3D.z) - distance3D(avgX(a), avgY(a), avgZ(a), camera3D.x, camera3D.y, camera3D.z);
});