#algorithm #math #geometry #cad
#алгоритм #математика #геометрия #САПР
Вопрос:
Я хочу знать основную идею создания 2d-представлений 3d-геометрии в cads, таких как autocad, solidworks и т. Д.
Здесь я перечислил некоторые основные идеи, к которым я пришел сейчас. Какой метод они используют? или любой метод, который я не перечислил?
идея А:
- во-первых, для отображения каждой отдельной грани в плоском пространстве.
- затем определите границы граней.
- сделайте что-нибудь волшебное, что может распознавать 2d-кривые по граничным пикселям.
- сделайте что-нибудь волшебное снова, чтобы распознать, какие сегменты кривых должны быть скрыты.
- создайте окончательный вид из линий и кривых, сгенерированных на вышеуказанных этапах.
идея B:
- они создают правила проекции для каждого типа поверхности с граничными проводами, такими как плоскость, цилиндр, сфера, сплайн. И эти правила можно использовать во всех углах проекции.
- затем реализуйте правила проекции для каждой грани, и, наконец, они получили представление о многих кривых.
- перебрать все кривые, сгенерированные на шаге 2, и проверить видимость кривой.
- создайте окончательный вид.
идея C:
- сначала разбейте все грани на множество треугольников.
- затем найдите границы из треугольников для каждой грани.
- затем мы получили много полилиний с шага 2.
- перебрать все полилинии, сгенерированные для каждой грани, и проверить видимость полилиний.
- создайте окончательный вид.
Комментарии:
1. алгоритм — это проекция 3d вдоль указанной плоскости. Математика проста
2. en.wikipedia.org/wiki/3D_projection
3. удаление скрытой поверхности можно выполнить несколькими способами, например, с помощью алгоритма painters и так далее..
4. В некоторых случаях граница проецируемой грани не совпадает с исходной 3D-гранью. Может быть сложно определить границы. @NikosM.
5. это может вам помочь, поскольку содержит несколько стандартных алгоритмов для 3d CAD www2.mathematik.tu-darmstadt.de /~ehartmann/cdgen0104.pdf
Ответ №1:
Я нашел решение, оно выглядит следующим образом:
- разбейте каждую грань и ребро на треугольники и сегменты.
- спроецируйте все эти треугольники и сегменты на плоскость.
- затем выберите подходящее разрешение для преобразования этих проецируемых треугольников и сегментов в пиксели с параметром высоты.
- найдены контуры для каждой грани и ребра из этих пикселей.
- заданное видимое значение для каждого пикселя на этом контуре зависит от параметра высоты общего вида пикселя.
- реконструируйте линию, окружность и полилинии из пикселей.
Я протестировал этот метод для некоторых моделей, и он работает хорошо. ниже приведен один из них: