Есть ли такой алгоритм для сортировки массива трехмерных точек по часовой стрелке? Я имею дело с правым треугольником в моем случае, так что всего 3 балла. (для сборной сетки)Сортировка массива точек по часовой стрелке
ответ
Алгоритм сортировки не составляет труда. Проблема в том, в какой плоскости эти точки лежат. И с какой стороны он сталкивается
Только пучок точек не может по часовой стрелке или против часовой стрелки сам по себе. Вам нужна плоскость и сторона для ссылки на эту точку.
edit: На самом деле то, что я раньше говорил, немного неточно. То, что вам действительно нужно, - это положение и направление ссылки, а не плоскость
Предположим, у вас есть два ребра, соединяющие ваши три вершины.
E1 = V2 - V1
E2 = V1 - V3
Они охватывают треугольник. Вы можете вычислить треугольник нормаль N
так:
N = cross(E1, E2)
Это говорит о том, в каком направлении треугольник сталкивается. Вы можете рассчитать, обращен ли треугольник в сторону или от определенной точки зрения P
, проецируя N
на расстояние от вашего треугольника от P
.
D = V1 - P
d = dot(N, D)
Если d
положителен, то треугольник смотрит в стороне от P
, если она отрицательна, она сталкивается с P
.
Теперь вы можете судить о каждом наборе (V1, V2, V3), правильно ли они отсортированы или нет. Если нет, просто замените V2 и V3, и они будут.
Существует одна ошибка. Если вы пытаетесь построить корпус замкнутой сетки, необходимо, чтобы все треугольники были обращены наружу. Это невозможно смоделировать, пытаясь сделать все треугольники лицом к определенной точке, потому что эта точка должна быть разной для каждого треугольника. Если сетка выпукла, вы можете смоделировать ее, потребовав, чтобы все треугольники обратились в от от определенной точки, которая лежит внутри выпуклой сетки.
- 1. Сортировка списка точек по часовой стрелке
- 2. Сортировка четырех точек по часовой стрелке
- 3. C++ Сортировка 2D-точек по часовой стрелке
- 4. Сортировка набора трехмерных точек по часовой стрелке/против часовой стрелки
- 5. сортировка Vertices по часовой стрелке
- 6. Поворот массива по часовой стрелке
- 7. (4,1,2) Numpy Массива Сортировать по часовой стрелке
- 8. Сортировка массива Vector2 относительно начала по часовой стрелке
- 9. Вращающаяся по часовой стрелке линия
- 10. C# Сортировка списка X, Y Координаты по часовой стрелке
- 11. Сортировка списка двумерных координат по часовой стрелке с помощью Python?
- 12. Сортировка широты и долготы в по часовой стрелке упорядоченный четырехугольник
- 13. Оптимизация алгоритма сортировки по часовой стрелке
- 14. Максимальные углов по часовой стрелке от 3 ближайших точек
- 15. Поиск центра набора точек для сортировки по часовой стрелке?
- 16. Загрузите div по часовой стрелке
- 17. массив печати по часовой стрелке
- 18. NSDate, возвращающийся по часовой стрелке
- 19. Поворот UIImageView по часовой стрелке
- 20. Площадь многоугольника - по часовой стрелке
- 21. Перемещение по часовой стрелке матрицы
- 22. направление по часовой стрелке для RadarChart
- 23. Включает ли этот код облако точек относительно кросс-продукта против часовой стрелки или по часовой стрелке?
- 24. Как повернуть объект по часовой стрелке?
- 25. Вращайте NSButton по часовой стрелке с анимацией
- 26. вращение 2-й формы по часовой стрелке
- 27. VHDL: методы замедления по часовой стрелке
- 28. Поворот изображения iOS по часовой стрелке
- 29. Сделать из полигона по часовой стрелке многоугольника
- 30. Рисовать по часовой стрелке, заполненной кругом
Чтобы отсортировать ваш массив, вы должны определить вектор по умолчанию, затем вы получите угол между этим вектором и (position - vector.origin). Это даст поплавок между 0 и 180. Тогда у вас было 180, если позиция находится слева от вектора по умолчанию. http://forum.unity3d.com/threads/unity2d-collision-get-left-right-side-of-collision.282374/ Наконец, вы заказываете результат по углу. – Everts
Если бы какой-либо из ответов сработал для вас, было бы полезно для других, если вы согласитесь с этим ответом. Если нет, не стесняйтесь комментировать полученные ответы или обновлять свой вопрос. –