Почему различна площадь двух "одинаковых" многоугольников? - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Почему различна площадь двух "одинаковых" многоугольников?

Почему различна площадь двух "одинаковых" многоугольников?

Ответ
Поиск в этой теме
Непрочитано 11.06.2023, 10:33
Почему различна площадь двух "одинаковых" многоугольников?
Юрий_Нд
 
Регистрация: 29.01.2016
Сообщений: 720

Доброго дня Уважаемые.
Сегодня такой вопрос:
- слева я начертил многоугольник, который в начале состоял из множества не объединённых отрезков;
- затем я скопировал все отрезки вправо и объединил в полилинию;
- и в конце концов объединил левые отрезки в полилинию.
Вопрос:"Почему площади левого и правого многоугольника различные? Примерно 33 и 24 м²"
Спасибо ____________ Юрий.
https://dropmefiles.com/s3o9y
Просмотров: 4117
 
Непрочитано 13.06.2023, 23:50
#21
Старый Дилетант

Дилетант
 
Регистрация: 06.12.2017
Сообщений: 2,934


Цитата:
Сообщение от Юрий_Нд Посмотреть сообщение
"Почему площади левого и правого многоугольника различные?
Потому, что многоугольники разные.
Посмотрите свойства:
-длины полилиний разные,
-левая замкнутая, правая - нет.
- у левой 8 вершин, у правой - 11
Старый Дилетант вне форума  
 
Непрочитано 14.06.2023, 01:50
#22
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,069


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
выложите более большой, необработанный кусок файла
В шапке темы как раз один такой лежит. И даже написано, как он получен - копированием. Очевидно, при копировании поменялся порядок примитивов, и команда объединения полилинии соединила отрезки в другом порядке.

Как гарантированно получать правильные площади в таком случае - вопрос интересный. Пока все советы были - "у тебя неправильно, переделай правильно". А как определить, что площадь у второй линии неправильная, если не видеть исходную - правильную? На глаз же не видно, что там геометрия битая. Как быть с такими случаями, где глаза врут: https://ru.wikipedia.org/wiki/Исчезновение_клетки?

У меня вот в расчетных схемах похожие вопросы бывают, когда привязки криво легли, и точки контуров "почти совпали"; не заметишь, пока в расчете глюки не полезут. Есть округлялки, но они сами могут геометрию покалечить, хорошая округлялка должна еще кучу тестов выполнить на повреждение геометрии, и предупреждения выдать.

По-хорошему, предупреждать о возможных глюках должна команда объединения, но ее такую еще написать надо.
Нубий-IV вне форума  
 
Непрочитано 14.06.2023, 11:04
#23
Старый Дилетант

Дилетант
 
Регистрация: 06.12.2017
Сообщений: 2,934


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
В шапке темы как раз один такой лежит. И даже написано, как он получен - копированием. Очевидно, при копировании поменялся порядок примитивов, и команда объединения полилинии соединила отрезки в другом порядке.
Думаю - человеческий фактор. Автор случайно выполнил какие-то команды после (или до) копирования - начертил два отрезка или лишний раз их скопировал, или включал-выключал слои на которых были объекты, удалил лишнее или забыл удалить, чистил чертеж..
В то, что автокад при копировании изменил порядок примитивов -не верю (если не случилась авария, испортившая файл)
Старый Дилетант вне форума  
 
Непрочитано 14.06.2023, 12:25
#24
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от Старый Дилетант Посмотреть сообщение
В то, что автокад при копировании изменил порядок примитивов -не верю...
+1 - "чудеса" с Acad-ом бывают, но не в данном случае...
VitalyAF вне форума  
 
Непрочитано 14.06.2023, 13:05
#25
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,069


Цитата:
Сообщение от Старый Дилетант Посмотреть сообщение
человеческий фактор
Цитата:
Сообщение от VitalyAF Посмотреть сообщение
чудеса
Причем тут чудеса и факторы? Полилиния в шапке содержит сегменты, наложившиеся друг на друга. Соединять такие сегменты можно в разной последовательности. При разных последовательностях могут получаться разные результаты. Собственно, они и получились: одна полилиния замкнута, другая - нет.

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

Самое главное - что этот порядок (внутри автокада) не виден пользователю. И, если из отрезков нельзя собрать однозначный ответ - значит, при разных условиях будут собираться разные версии. Теоретически команда могла бы об этом предупреждать. Тестирует же Автокад 3D-геометрию на корректность при редактировании. Или можно написать свою команду, которая тестирует объекты на предмет глюков в геометрии. Такая команда могла бы быть честным ответом на вопрос темы.
Нубий-IV вне форума  
 
Непрочитано 14.06.2023, 14:34
#26
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Самое главное - что этот порядок...
Самое главное - это прежде всего навести порядок, а потом уже приступать к работе с подобной графикой.
Где-то в последних версиях есть опция авто подсветки (выбора ) совпадающих объектов.
С её помощью, с пом. overkil прощупывать все линии... а что поделаешь се ля ви... наверняка lisp какй-нить есть...
VitalyAF вне форума  
 
Непрочитано 15.06.2023, 08:52
#27
Старый Дилетант

Дилетант
 
Регистрация: 06.12.2017
Сообщений: 2,934


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Причем тут чудеса и факторы?
При том, что изначально набор и количество отрезков разные. При простом копировании такого быть не может.
Некорректную задачу рассмативать бессмысленно. Приведите коректный пример.
Старый Дилетант вне форума  
 
Непрочитано 15.06.2023, 12:56
#28
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
Самое главное - это прежде всего навести порядок, а потом уже приступать к работе с подобной графикой.
Где-то в последних версиях есть опция авто подсветки (выбора ) совпадающих объектов.
С её помощью, с пом. overkil прощупывать все линии... а что поделаешь се ля ви... наверняка lisp какй-нить есть...
overkil не всегда сможет помочь. Думаю, что надо использовать _boundary, отстраивать новые контуры и по ним уже считать.

С математической точки зрения, автокад считает правильно. Неправильно может нарисовать пользователь. Попробуйте построить полилинию которая имеет самопересечение. И такую же вторую (с виду) фигуру. Площадь фигур будет очень сильно отличаться (а длина полилиний совпадать)
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2023-06-15 165004.png
Просмотров: 45
Размер:	86.9 Кб
ID:	256660  
gumel вне форума  
 
Непрочитано 15.06.2023, 15:17
#29
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от gumel Посмотреть сообщение
С математической точки зрения,
И мы две страницы о том же!
VitalyAF вне форума  
 
Непрочитано 15.06.2023, 18:20
#30
Старый Дилетант

Дилетант
 
Регистрация: 06.12.2017
Сообщений: 2,934


Цитата:
Сообщение от gumel Посмотреть сообщение
Попробуйте построить полилинию которая имеет самопересечение. И такую же вторую (с виду) фигуру. Площадь фигур будет очень сильно отличаться
Попробовал - площадь совпадает.
Старый Дилетант вне форума  
 
Непрочитано 16.06.2023, 02:12
#31
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,069


Цитата:
Сообщение от Старый Дилетант Посмотреть сообщение
совпадает
Образец геометрии, у которой не совпадает - в шапке темы. Желающие могут заново взорвать правый контур и объединить его обратно - в зависимости от того, какой сегмент выбрать первым, получится площадь то 33, то 24. Не желающие могут продолжать рассказывать, что в автокаде такое невозможно.
Цитата:
Сообщение от gumel Посмотреть сообщение
Неправильно может нарисовать пользователь
Так ясен пень. У темы даже вопрос такой: "я тут где-то ошибся, и не могу найти где". Радуют ответы: "да у тебя там просто ошибка", "да ты просто все неправильно сделал - переделай правильно", "да ты не ошибайся, тогда и ошибок не будет", "переделай заново - вдруг получится правильно", "покажи пример без ошибки, тогда и поговорим". Узнаю русский форум .

Я вот который год с разными программами играюсь - от кадов до блендера, и до сих пор нахожу новые способы прострелить себе ногу. Помнится, у блендера в комплекте поставляются скрипты, среди которых несколько штук как раз контролируют геометрию - замкнутость, гладкость, сонаправленность, полюсность и т.п. - это пользователи постарались. Есть спецшейдеры и спецрежимы визуализации, чтобы глюки в сетке в глаза бросались - это разработчики. Но то художники - что с них возьмешь; даже программировать берутся, лишь бы самим не работать. Инженеры не такие, они ни за что не поручат компьютеру то, что можно сделать вручную .
Нубий-IV вне форума  
 
Непрочитано 16.06.2023, 05:47
#32
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Старый Дилетант Посмотреть сообщение
Попробовал - площадь совпадает.
Хм, надо же! Очень интересно!
Площадь всегда смотрю через надстройку GeomProps А.Ривилиса. Именно она показывает меньшую площадь для полилиний имеющих самопересечение (такая фигура нарисована слева). Выходит, что признаком "косячной" фигуры будет отличие результата площади в этих двух методах подсчёта.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2023-06-16 093136.png
Просмотров: 35
Размер:	18.6 Кб
ID:	256676  Нажмите на изображение для увеличения
Название: Снимок экрана 2023-06-16 093051.png
Просмотров: 35
Размер:	20.6 Кб
ID:	256677  
gumel вне форума  
 
Непрочитано 16.06.2023, 11:11
#33
Старый Дилетант

Дилетант
 
Регистрация: 06.12.2017
Сообщений: 2,934


Цитата:
Сообщение от gumel Посмотреть сообщение
С математической точки зрения, автокад считает правильно.
Вот только хотелось бы знать, что с математической точки зрения автокада является площадью полилинии и как он ее считает.
Во вложении три одинаковых с виду полилинии одинаковой длины, но разной площади
Вложения
Тип файла: dwg
DWG 2010
Тест 2.dwg (119.1 Кб, 8 просмотров)
Старый Дилетант вне форума  
 
Непрочитано 16.06.2023, 11:47
#34
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Старый Дилетант Посмотреть сообщение
Вот только хотелось бы знать, что с математической точки зрения автокада является площадью полилинии и как он ее считает.
Когда я утверждал про правильность математического подсчёта, то имел ввиду алгоритм метода трапеций. Можете загуглить в Яндексе: "Площадь многоугольника метод трапеций". Этот метод очень красиво программируется и результат вычисляется за один цикл. Главное условие этого метода - отсутствие самопересечений. Судя по всему GeomProps как раз и считает. Как считается в самом автокаде - фиг знает.
gumel вне форума  
 
Непрочитано 19.06.2023, 23:06
#35
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от gumel Посмотреть сообщение
Судя по всему GeomProps как раз и считает. Как считается в самом автокаде - фиг знает.
Для полилиний GeomProps использует стандартный метод AcDbCurve::getArea.
Александр Ривилис вне форума  
 
Непрочитано 20.06.2023, 04:04
1 | 1 #36
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,069


А вот еще смешнее тест. Две фигуры имеют одинаковую геометрию, но разную площадь. Левая фигура получена из правой исправлением координаты первой же точки на 0.00000000000001. В свойствах этого не видно ни при каких LUPREC.
Кто свойствам доверяет, тот тратит время зря (с). Интересно, можно ли получать у полилиний произвольную площадь добавлением волшебных невидимых сегментов?
Миниатюры
Нажмите на изображение для увеличения
Название: Test.png
Просмотров: 109
Размер:	7.2 Кб
ID:	256792  
Вложения
Тип файла: dwg
DWG 2000
Test.dwg (175.5 Кб, 7 просмотров)
Нубий-IV вне форума  
 
Непрочитано 20.06.2023, 05:34
#37
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Для полилиний GeomProps использует стандартный метод AcDbCurve::getArea.
Почему тогда Area и Area (total) для одной полилинии иногда могут быть разными?

----- добавлено через ~34 мин. -----
Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
А вот еще смешнее тест. Две фигуры имеют одинаковую геометрию, но разную площадь. Левая фигура получена из правой исправлением координаты первой же точки на 0.00000000000001. В свойствах этого не видно ни при каких LUPREC.
Кто свойствам доверяет, тот тратит время зря (с). Интересно, можно ли получать у полилиний произвольную площадь добавлением волшебных невидимых сегментов?
Удивительно!
По идее, метод трапеций для симметричной фигуры самопересекающейся фигуры выдаст 0.

Сложно утверждать, можно только предположить, что в алгоритме имеется какая-то оптимизация для симметричных фигур. А вот когда фигура не симметричная (на 0.00000000000001), то оптимизации походу дела нет..
gumel вне форума  
 
Непрочитано 20.06.2023, 06:27
#38
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Ну, а вот это вообще непонятно. Площадь левой фигуры ноль. После копирования, не ноль:
Вложения
Тип файла: dwg
DWG 2004
Test copy.dwg (58.1 Кб, 14 просмотров)
gumel вне форума  
 
Непрочитано 20.06.2023, 06:37
#39
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,069


Цитата:
Сообщение от gumel Посмотреть сообщение
После копирования, не ноль
Бим мне в спецификацию! Она портится даже от переноса. И от копирования через буфер. Но, если скопировать с базовой точкой, и вставить в то же место, то не портится. А еще она не портится, если копировать ее строго вверх или вниз. А еще не портится, если копировать вправо или влево маленькими шажочками; но, если отойти от начального положения слишком далеко (147 влево или 11 вправо), то начнет портиться и от маленьких шагов.

Похоже, мы нащупали гнездо. Где-то совсем рядом та дырка, через которую свежевылупившиеся глюки и расползаются по всему автокаду.

Последний раз редактировалось Нубий-IV, 20.06.2023 в 07:14.
Нубий-IV вне форума  
 
Непрочитано 21.06.2023, 18:36
#40
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от gumel Посмотреть сообщение
Почему тогда Area и Area (total) для одной полилинии иногда могут быть разными?
Возможно для полилинии в команде AREA AutoCAD использует другой метод (через COM/ActiveX - AcadLWPolyline::get_Area)
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Почему различна площадь двух "одинаковых" многоугольников?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему лофт не создает тело из двух областей? Zets AutoCAD 10 08.04.2024 13:05
Почему нагрузка от двух кранов как от одного? eilukha Конструкции зданий и сооружений 16 13.03.2024 17:00
Площадь застройки здания Wera222 Архитектура 49 29.11.2018 11:05
Должна ли, площадь проёма (1.2 м) без двери учитываться при подсчёте площади квартиры? freshman Архитектура 12 28.05.2014 20:37
Как в AutoCAD задать площадь, чтобы площадь сразу была написана на черчеже? Elbrus AutoCAD 10 14.01.2010 08:38