Я пытаюсь создать систему столкновений с сеткой и кругом для своей игры. Я видел несколько примеров, когда вы перебираете все вершины сетки и проверяете, находятся ли они внутри круга. Но проблема в том, что иногда вершины находятся не внутри круга, а линии, которые есть в этой форме вершин. В этом случае проверка столкновения оценивается как false, когда она должна оцениваться как истина. Как я могу сделать хорошее обнаружение столкновения этого типа? (в c/C++)Как сделать правильное обнаружение столкновений с сеткой 2 круга
ответ
На самом деле, быстрый Google позволяет вам знать, что это дубликат вопроса уже на переполнение стека: Circle line-segment collision detection algorithm?
Просто перебирайте все края. И не волнуйтесь о вершинах: если вершина находится внутри круга, какое-то ребро связано с ней (если вся сетка внутри круга, что я предполагаю, вряд ли).
И как я итерацию по краю? Я могу просто знать положение конкретной точки, но не о краю, не так ли? – XaitormanX
Итак, ваш вопрос заключается в том, как определить, пересекает ли отрезок прямой между двумя заданными точками данный круг? – Beta
Да точно. Потому что, если я этого не сделаю, это не сработает правильно – XaitormanX
Если вы хотите, вы можете рассчитать расстояние от линии до центра круга. Но я думаю, что это будет слишком дорого. Если расстояние меньше радио, у вас может быть столкновение. Вам нужно будет проверить, находится ли эта часть линии между точками. Distance line to point
Но мне нужно использовать конкретную точку для проверки расстояния, потому что она может столкнуться в середине линии, но не в конце. Как я узнаю, в какой точке строки я должен использовать? – XaitormanX
Математика даст вам кратчайшее расстояние между точкой (центром вашего круга) и линией (каждая вершина вашей сетки). Вы также можете прочитать http://www.intmath.com/plane-analytic-geometry/perpendicular-distance-point-line.php, http://tog.acm.org/resources/GraphicsGems/index.html, http: //forums.codeguru.com/showthread.php?t=194400 и http://www.merl.com/projects/vclip/ – j4x
- 1. Обнаружение столкновений круга и прямоугольника
- 2. Обнаружение столкновений прямоугольника и круга
- 3. Обнаружение столкновений границы круга-прямоугольника
- 4. Обнаружение столкновений вокруг круга Холст HTML5
- 5. Как сделать обнаружение столкновений в Polycode 3D
- 6. actionscript 2 обнаружение столкновений
- 7. Как сделать обнаружение столкновений с использованием изображений?
- 8. Actionscript 2 расширенное обнаружение столкновений
- 9. Обнаружение столкновений - Как?
- 10. Обнаружение столкновений на 2 предметах
- 11. Как сделать обнаружение столкновений последним на время?
- 12. Обнаружение столкновений
- 13. Обнаружение столкновений: закругленный объект
- 14. Обнаружение столкновений с прямоугольниками
- 15. Обнаружение столкновений с PyGame
- 16. Обнаружение столкновений с UIAnimation
- 17. Обнаружение столкновений с отскоком
- 18. Как добавить обнаружение столкновений
- 19. Обнаружение столкновений точек и прямоугольников?
- 20. Обнаружение столкновений с bullet
- 21. Обнаружение столкновений для круга внутри восьмиугольника в JavaFX
- 22. Обнаружение столкновений 2 строк в java (Android)
- 23. Прямое обнаружение столкновений d3js
- 24. Обнаружение столкновений PGU Tiles
- 25. Обнаружение столкновений с использованием javascript
- 26. Обнаружение столкновений в переходе
- 27. Простое обнаружение столкновений
- 28. Обнаружение столкновений - Любой язык
- 29. Box2d Обнаружение столкновений с массивами
- 30. PyGame: обнаружение столкновений с блоком
Хорошо, спасибо. Это решает мою проблему – XaitormanX