Точное 3D-моделирование

Автор w64, 03.01.22, 21:20:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Кирямба

Да нет, серьезно, без шуток. Ну вот конкретно в рассматриваемом примере, я малость не понимаю, в чем там проблема то образовалась? Такую модель нужно разбивать на отдельные детали, поскольку физически при изготовлении она и должна изготавливаться разными деталями. Ну вы жеж должны хоть немного представлять технологические операции то. Вы жеж, надеюсь, понимаете, что тот же шарикоподшипник не вытачивается сразу в сборе. Так же и здесь. Внутренние поверхности с нулевым зазором и без перемычек ну никак не могут быть изготовлены за одно целое.
Или если вы пытаетесь построить геометрию одной детали, то надо выбирать просто другой способ построения, чтобы не образовывать внутренних скрытых поверхностей, мешающих дальнейшему построению. Например, выдавите сначала шестигранник, потом на верхней поверхности выдавите отдельно окружность. Коль часто возникают ошибки топологии, ищите другие способы построения. Или сверьтесь с технологией изготовления детали, быть может вы пытаетесь сделать тот самый шарикоподшипник одной деталью. Компас - это же вроде как инженерное ПО, я так полагаю, да?

w64

Вопрос у меня был общего плана, т.к. я новичок и не пользовался не только Компасом, но и другими программами трёхмерного моделирования и в общем о работе в них не знал. В итоге я понял, что Компас такое не умеет. И теперь подозреваю, что и другие системы 3Д-моделирования не умеют тоже.
 
Вопрос это больше не инженерный, а математический. Дело в том, что написать программу абсолютно точных построений теоретически можно, но сложно в реализации и, видимо, она была бы очень "тормозной", так что это вряд ли где-то сделано для практического 3Д-моделирования.
 
Что я имел в виду, можно представить так: мы стартуем, скажем, с двух точек, (0,0,0) и (1,0,0), а дальше разными построениями на их основе строим всё более сложные фигуры (можно ограничиться только кривыми и поверхностями не более чем второго порядка - прямыми, плоскостями, окружностями, шарами, конусами, цилиндрами и т.д.). Т.е. мы делаем от простого много шагов, но практически осмысленное число (скажем, сотни или тысячи построений).
 
Разумеется, такая система внутри числа должна представлять не в виде плавающих двойной точности, а более сложным образом. Для начала, она должна уметь представлять очень большие целые числа, т.е. размер в памяти на них не должен быть фиксирован. Далее она должна представлять обыкновенные дроби как пары целых чисел. И, наконец, она должна представлять точные решения линейных, квадратных и кубических  уравнений (а при обсуждаемых построениях решение только таких и нужно, причём, если бы построения были только на плоскости, а не в пространстве, то там бы хватило квадратных и линейных уравнений). Т.е. вот именно так, в виде формул - каждое число является деревом, описывающим формулу с кучей корней (комплексных) и арифметических операций - плюс, минус, умножить, разделить и в узлах - обыкновенные дроби.
 
Даже просто сравнить два таких числа уже непросто, т.к. разные формулы с могут давать одинаковые результаты. Однако, программные реализации таких точных чисел есть. Я, когда писал программу для какого-то геометрического алгоритма на плоскости на C++, использовал библиотеку CGAL, и она на точных числах была в тысячи раз медленнее, чем на double.

Если же взять более сложные поверхности и кривые, то формулы и числа будут ещё сложнее.
 
Ясно, что реализовать на таких точных числах систему 3D-моделирования в принципе можно, но, видимо, достаточно сложно.

IgorT

Что-то мне подсказывает, что решатели CAD работают совсем по другим принципам.
А можно спросить, что мотивирует Ваше желание иметь точную систему 3Д? Для каких целей она нужна?

СВ

 Присоединяюсь к вопросу.
Такое впечатление, что Wиктор 64-й заинтересован не в практическом применении КАДа, а просто имеет теоретический математический интерес. На очень высоком математическом уровне. Отличник по математике, одним словом.

Кирямба

Так беда как раз в том, что даже математически не получится "абсолютной" точности. С одной стороны, по причинам, которые я объяснял выше - все внутренние расчеты ведутся в формате числа с плавающей точкой. А это такой "удивительный" формат, который не имеет этой самой "абсолютной" точности. Его главное достоинство в том, что число занимает всего 4 байта (для одинарной точности) или 8 байт (для двойной точности), но покрывает огромнейший диапазон чисел в сотни порядков. Этот формат используется только в вычислительных машинах, как компромисс между вычислительными объемами и покрываемым диапазоном значений. Можно досконально углубиться в математику чисел с плавающей точкой, но с практической точки зрения это имеет мало смысла для пользователя чертежного ПО. Компас - это всё же ПО инженерного черчения, а не симуляции поведения атомов вещества.
Компас строит поверхности методом внутренних расчетов, опираясь на двумерные эскизы или набор кривых, задающих плоскость. А есть ПО (например 3dsMax), в котором пользователь может напрямую воздействовать на плоскости через "атомарный" уровень треугольников или сплайнов.

С другой стороны, при любом раскладе, при любом способе построения, понятие "абсолютная точность" не имеет никакого прикладного значения, поскольку некоторые поверхности не могут быть абсолютно точно описаны в ортогональных координатах. Например, сферическая поверхность в координатах X-Y-Z не может быть абсолютно точно описана, поскольку значения sin и cos не являются абсолютно точными. Числа, представляющие эти и другие подобные функции, являются иррациональными, то есть, бесконечными непериодическими. Существуют и другие математические заковырки при описании поверхностей или кривых. В частности, предел приращения, стремящийся к нулю, не имеет рационального числа, это сколь угодно малое число, отличающееся от 0 на сколь угодно малую величину, в пределе равную 0, но совсем не 0. И как узнать, какова его "абсолютная" точность, если сама математика не дает его "абсолютного" определения.
Посему, вопрос об "абсолютной" точности построений поверхностей попросту не имеет смысла. Даже математически.

Цитата: СВ от 18.01.22, 08:37:21На очень высоком математическом уровне. Отличник по математике, одним словом.
:)) Скажем так... Одна маленькая ошибка в основах порождает большие заблуждения в будущем. :))) Отличник по математике должен хорошо знать "неабсолютность" иррациональных чисел и неопределенность предела lim -> 0.

СВ

 Не-не-не. Отличник по математике - это который получает пятёрки, по математике, в пределах учебного курса. В данном случае решил ещё и копнуть вглубь. Не знает глубоко, а просто решил копнуть, вглубь ...

IgorT

Ответа на вопрос "нафига ТСу надо?" так и нет. Неужели из любви к процессу копания?

Кирямба

Нуууу тады "Добро пожаловать в мат.ан. (математический анализ или аналитическая математика)"! :) Писдец высшей степени качества! Как раз этот матан и занимается вопросами бесконечно малых величин, интегрирования, теоремы Ньютона-Лейбница и прочей пое$#%ни. Круче матана, пожалуй, только тензорная математика :) Не знаю, зачем эта $%$#дия автору вопроса, но чтобы избежать глобальных ошибок, нужно очень тщательно подходить к изучению основ.
Я уже в силу возраста не помню многих моментов, ведь это изучал почти 20 лет назад.

IgorT

А какие принципы используют решатели CAD для вычисления геометрии внутри моделей? Поведаете?

СВ

Цитата: Кирямба от 26.01.22, 22:21:30Нуууу тады ... Писдец высшей степени ... и прочей пое$#%ни.... Не знаю, зачем эта $%$#дия .
...
Слышь, Кирюха, у нас здесь типа не "форум реальных пацанов"...

Кирямба

Цитата: IgorT от 26.01.22, 22:36:43А какие принципы используют решатели CAD для вычисления геометрии внутри моделей? Поведаете?
Дак принципы то известны еще со времен Сотворения мира. Математическое уравнение плоскости в ортогональной системе по трем точкам (Ax+By+Cz+D=0), как и уравнения поверхностей тел вращения были выведены мильён лет назад, трудами основоположников математики и геометрии - всяких там Евклидов из Древней Греции, французских Декартов и прочих умных дядек, с коими я лично не был знаком :)
В те же древние времена были выведены уравнения прямых и кривых, образующихся в результате пересечения двух поверхностей. Например, окружность, эллипс, парабола и гипербола получаются сечением конуса плоскостью, наклоненной под разным углом к основанию конуса. Формулы всех этих кривых известны, и вы их тоже знаете. Мы все в школе изучали базовые принципы - уравнение прямой, окружности, нахождение точек пересечения окружности и прямой, определение принадлежности точки плоскости, ну и прочее.

Построив на эскизе в плоскости X-Y окружность с центром 0,0 и радиусом 10, а затем выдавив вверх по оси Z на 20, мы создадим цилиндр, математически описанный через формулы цилиндра. Затем вырежем в этом цилиндре вертикальное отверстие в центре через весь цилиндр, при этом получим описание еще одного цилиндра.
В Компасе сохраняется стек (история) действий, поэтому смоделированный объект хранится в виде списка формул элементарных фигур, а внутренние плоскости помечаются недействительными при помощи алгоритмов проверки принадлежности к внутреннему объему.  Математика пересечений поверхностей.

Далее, чтобы визуализировать эту фигуру, к работе приступают математические алгоритмы визуализации поверхностей. Они тоже были разработаны еще на заре компьютерной графики. Там встречаются такие понятия как элементарный треугольник, нормаль к поверхности, затенение (шейдинг), видимость поверхности. В современном положении дел всю эту работу берет на себя математика видеокарты. Там свои особенности, специалисты это знают и умеют. Нам, пользователям, это знать ни к чему.

Кагбе воть. Нам, рядовым пользователям ПО, достаточно лишь общего представления, а в реальные дерби реализации лезть как бы нет смысла. На это есть целая бригада разработчиков разного уровня.

IgorT

Цитата: Кирямба от 27.01.22, 17:23:14Дак принципы то известны еще со времен Сотворения мира. Математическое уравнение плоскости в ортогональной системе по трем точкам (Ax+By+Cz+D=0), как и уравнения поверхностей тел вращения были выведены мильён лет назад, трудами основоположников математики и геометрии - всяких там Евклидов из Древней Греции, французских Декартов и прочих умных дядек, с коими я лично не был знаком :)
В те же древние времена были выведены уравнения прямых и кривых, образующихся в результате пересечения двух поверхностей. Например, окружность, эллипс, парабола и гипербола получаются сечением конуса плоскостью, наклоненной под разным углом к основанию конуса. Формулы всех этих кривых известны, и вы их тоже знаете. Мы все в школе изучали базовые принципы - уравнение прямой, окружности, нахождение точек пересечения окружности и прямой, определение принадлежности точки плоскости, ну и прочее.

Построив на эскизе в плоскости X-Y окружность с центром 0,0 и радиусом 10, а затем выдавив вверх по оси Z на 20, мы создадим цилиндр, математически описанный через формулы цилиндра. Затем вырежем в этом цилиндре вертикальное отверстие в центре через весь цилиндр, при этом получим описание еще одного цилиндра.
В Компасе сохраняется стек (история) действий, поэтому смоделированный объект хранится в виде списка формул элементарных фигур, а внутренние плоскости помечаются недействительными при помощи алгоритмов проверки принадлежности к внутреннему объему.  Математика пересечений поверхностей.
...

Формулы говорите? Элементарные? Давно придумано?
Ну тогда Вы в курсе по какой формуле построим такое тело?
Тело.png

И это... Можно подробнее? Что такое "Математика пересечений поверхностей"?
Или попроще. Как CAD система вычисляет точку пересечения окружности и прямой?

Кирямба

27.01.22, 21:52:58 #32 Последнее редактирование: 27.01.22, 22:26:20 от Кирямба
Ой-вэй, а шо тут невозможного то? :) Это ж архимедова спираль, только вытянутая по оси Z. Её формулы известны. Тело получается движением окружности вдоль спирали. При экспорте передается как параметрический объект с изменяемой точностью отображения:
Снимок экрана 2022-01-28 002125.png
Процесс построения в Компасе как бы говорит сам за себя, как рассчитывается такое тело. Коническая спираль является направляющей, по которой будет перемещаться окружность.

Да, формулы (вернее, уравнения), описывающие геометрические фигуры, выведены настолько давно, что... давно, вопсчем. Основы были заложены еще в Древнем Мире до нашей эры, а законченную форму они обрели трудами великих математиков времён Пушкина. В более поздние времена математика усложнялась, например были разработаны теории B-сплайнов, кривых Безье, которые легли в основу алгоритма NURBS для описания сложных кривых поверхностей, не состоящих из простых тел вращения.
То есть, вот такие вот поверхности строятся и описываются при помощи теории неоднородных рациональных B-сплайнов:
Снимок экрана 2022-01-28 012251.png
и у этой поверхности, как ни странно, есть формула! :)

Как Компас вычисляет точку пересечения окружности с прямой, это надо у разработчиков спрашивать. Но принцип изложен еще в школьной геометрии - решением двух уравнений - окружности и прямой.

IgorT

Цитата: Кирямба от 27.01.22, 21:52:58Ой-вэй, а шо тут невозможного то? :) Это ж архимедова спираль, только вытянутая по оси Z. Её формулы известны. Тело получается движением окружности вдоль спирали. При экспорте передается как параметрический объект с изменяемой точностью отображения:
Снимок экрана 2022-01-28 002125.png
Процесс построения в Компасе как бы говорит сам за себя, как рассчитывается такое тело. Коническая спираль является направляющей, по которой будет перемещаться окружность.

Да, формулы (вернее, уравнения), описывающие геометрические фигуры, выведены настолько давно, что... давно, вопсчем. Основы были заложены еще в Древнем Мире до нашей эры, а законченную форму они обрели трудами великих математиков времён Пушкина. В более поздние времена математика усложнялась, например были разработаны теории B-сплайнов, кривых Безье, которые легли в основу алгоритма NURBS для описания сложных кривых поверхностей, не состоящих из простых тел вращения.

Как Компас вычисляет точку пересечения окружности с прямой, это надо у разработчиков спрашивать. Но принцип изложен еще в школьной геометрии - решением двух уравнений - окружности и прямой.
Не. Вы повнимательней посмотрите. Там сечение меняется. Ну так что, формулу нарисуете?
На счет решения уравнений. Более подробнее опишите, пожалуйста, ну как там в школе. Аналитически что-ли?

Кирямба

27.01.22, 22:32:44 #34 Последнее редактирование: 27.01.22, 22:53:22 от Кирямба
Так сути то это не меняет! Изменение сечения - это всего лишь еще одна переменная. А как, по-вашему, вообще всё это работает? Компас не имеет никакого инструментария для "атомарного" воздействия на геометрию, то есть на вершины или ребра полигонов, поэтому единственный для него путь - параметрическое описание поверхностей.

Вам наверно покажется чем-то невообразимым, но вот у такой поверхности тоже есть формула (вернее, целый набор уравнений)! Неоднородные рациональные B-сплайны, NURBS :) Добро пожаловать в высшую математику.

Снимок экрана 2022-01-28 012251.png

Цитата: IgorT от 27.01.22, 22:26:13На счет решения уравнений. Более подробнее опишите, пожалуйста, ну как там в школе. Аналитически что-ли?
Та ну, аналитически. Такие уравнения дети в 7-м классе решают. Уравнение прямой Ax+By+C=0, уравнение окружности (x-x0)²+(y-y0)²=r². Решив эти два уравнения, будет найдена одна или две точки, совпадающие как у прямой, так и окружности, либо, если прямая не пересекает окружность, общих точек не будет найдено. Ну а дальше работают языки программирования, описывая алгоритмы поведения. Потому как всё ПО написано на языке программирования и определяет всю логику работы.

IgorT

Цитата: Кирямба от 27.01.22, 22:32:44Так сути то это не меняет!...
...
Стал быть уравнения не будет... Понятно.

Цитата: Кирямба от 27.01.22, 22:32:44Та ну, аналитически. Такие уравнения дети в 7-м классе решают. Уравнение прямой Ax+By+C=0, уравнение окружности (x-x0)²+(y-y0)²=r². Решив эти два уравнения, будет найдена одна или две точки, совпадающие как у прямой, так и окружности, либо, если прямая не пересекает окружность, общих точек не будет найдено. Ну а дальше работают языки программирования, описывая алгоритмы поведения. Потому как всё ПО написано на языке программирования и определяет всю логику работы.
По ходу в компе дети селят и решают. Ax+By+C=0 (x-x0)²+(y-y0)²=r² ...
Так как точки находит комп? Что -то мне подсказывает не как дети в школе.
Вы на чем настаиваете? На лимонных корочках Компы, Компас, CAD фигня?

Кирямба

28.01.22, 08:37:58 #36 Последнее редактирование: 28.01.22, 08:50:33 от Кирямба
Дак даже если я и напишу эти уравнения, вы в них ровно ничего не поймете :))) В принципе, я не доктор физ-мат наук, я и не говорю, что я прям вот могу эти формулы на раз написать. Я просто знаю базовые принципы, мне этого более чем достаточно.
Даже сами разработчики Компаса навряд ли с нуля писали мат.аппарат, они могли просто купить готовое по лицензии и прикрутить в свое ПО. В современном мире это с успехом практикуется.

Цитата: IgorT от 28.01.22, 08:21:58Вы на чем настаиваете?
На рябине и кедровых орешках. Дак я ж ни на чем не настаиваю, это ж вам хочется поспорить.
Ладно, окей, расскажите про ваши представления о том, как строятся поверхности. Ну, давайте, дерзайте. А мы послушаем учонава прафесара :))) Нет, на самом деле, любопытно ваше мнение, так сказать, по затронутой проблематике, такскать...

Цитата: IgorT от 28.01.22, 08:21:58Так как точки находит комп?
Ну например есть такой алгоритм Брезенхема. Метод приближения. Он используется для отображения наклонных линий и окружностей по пикселям. Но он не является точным, его дискретность равна одному пикселю изображения. Как думаете, может этот метод использоваться в Компасе для расчета геометрии модели? :)

IgorT

Цитата: Кирямба от 28.01.22, 08:37:58Дак даже если я и напишу эти уравнения, вы в них ровно ничего не поймете :))) ...
Классный отмаз!
Цитата: Кирямба от 28.01.22, 08:37:58...
Даже сами разработчики Компаса навряд ли с нуля писали мат.аппарат, они могли просто купить готовое по лицензии и прикрутить в свое ПО. В современном мире это с успехом практикуется...
Во как! Очень странно, ибо Аскон заявлял и заявляет, что использует мат.ядро СОБСТВЕННОЙ разработки. Что скажете?

Цитата: Кирямба от 28.01.22, 08:37:58... расскажите про ваши представления о том, как строятся поверхности. ...А мы послушаем учонава прафесара
А Вы чего обзываетесь? Я Вас не унижал.
Тема называется "Точное 3D-моделирование"
Так вот. Вычисления геометрии CAD производят приближённо, ибо уравнения решаются итерационными методами. По сему точность решения часто не может быть идеальной, а всего лишь до некоего установленного значения. И школьники с геометрией школы тут совсем ни к чему.

Вы с этм не согласны?

Кирямба

Цитата: IgorT от 28.01.22, 09:03:58Вычисления геометрии CAD производят приближённо
А с какой точностью приближенно? То же число Пи - тоже вещь очень даже приближенная. Да и как я писал еще в самом начале, число с плавающей точкой - тоже приближенное. И многие интергралы тоже являются приближением.
А те же самые итерации тоже берутся не с потолка, типа "а если мы вот так сделаем, то чо получицца?". На всё есть свои формулы! В частности, тот же самый алгоритм Брезенхема использует весьма конкретную формулу для вычисления ошибки приближения.
Но вот интересно - вы нарисовали прямоугольник с известными координатами углов. И по-вашему, эти координаты получены "методом итераций". Забавно, забавно :) 
Цитата: IgorT от 28.01.22, 09:03:58Вы с этм не согласны?
С чем конкретно? Приведите конкретные доказательства, конкретные алгоритмы от разработчиков. Вот чисто конкретно.

IgorT

Цитата: Кирямба от 28.01.22, 09:34:13...
Но вот интересно - вы нарисовали прямоугольник с известными координатами углов. И по-вашему, эти координаты получены "методом итераций". Забавно, забавно :)  ...
Так что Ваше бла-бла-бла по теме точного решения школьных уравнений пустой троллинг.
Про прямоугольник ваще супер! Ничего тупее Вам в голову не пришло? Где тут чего решается? ВВОДЯТСЯ ПАРАМЕТРЫ И КООРДИНАТЫ!!!! Не понятно что это такое?

Цитата: Кирямба от 28.01.22, 09:34:13о с плавающей точкой - тоже приближенное. ...
 Приведите конкретные доказательства, конкретные алгоритмы от разработчиков. Вот чисто конкретно.

Доказательства чего? Что итерации используются? Вам нужно, Вы и исТщите доказательства, что они не используются. Можете к Аскону обратиться. Чисто конкретно.