в отладке можно притормозить и увидеть координаты точек, как цифры.
но чтобы нарисовать на экране, это надо писать код дополнительно. Просто это или нет надо смотреть ...
Фришип (Лазарус). Ошибки программы, исправления и улучшения.
#602
Отправлено 19 мая 2020 - 21:03
в отладке можно притормозить и увидеть координаты точек, как цифры.
но чтобы нарисовать на экране, это надо писать код дополнительно. Просто это или нет надо смотреть ...
Да рисовать не надо, достаточно цифр. Там и так все будет понятно.Надо тогда простенькую модельку взять, и подсунуть.Вашу или как у меня. Нужны только точки.
#605
Отправлено 20 мая 2020 - 00:19
так они должны быть такие же как у грани. + срединные точки ребер, + срединная точка грани.
Вот, тот что у меня на схеме.Вывести надо точки после первого шага (до average) в интерации Low (т.е. просто одно разделение УС).
так они должны быть такие же как у грани. + срединные точки ребер, + срединная точка грани.
#607
Отправлено 20 мая 2020 - 06:34
вот моя модель
bfr avg: point:37 0.30180 0.00000 1.03752
aft avg: point:37 0.30956 0.00000 0.90716
bfr avg: point:35 -0.49774 0.00000 0.47845
aft avg: point:35 -0.29473 0.00000 0.47654
bfr avg: point:36 1.16339 0.00000 0.55371
aft avg: point:36 0.95112 0.00000 0.53299
bfr avg: point:34 0.32683 0.00000 -0.09586
aft avg: point:34 0.32833 0.00000 0.05713
bfr avg: point:38 0.30520 0.50000 0.48113
aft avg: point:38 0.31410 0.25781 0.48710
bfr avg: point:26 0.30350 0.25000 0.75932
aft avg: point:26 0.31083 0.18750 0.69851
bfr avg: point:28 0.74511 0.00000 0.22892
aft avg: point:28 0.74511 0.00000 0.22892
bfr avg: point:29 0.73259 0.00000 0.79561
aft avg: point:29 0.73259 0.00000 0.79561
bfr avg: point:30 -0.09797 0.00000 0.75798
aft avg: point:30 -0.09797 0.00000 0.75798
bfr avg: point:27 -0.08545 0.00000 0.19129
aft avg: point:27 -0.08545 0.00000 0.19129
bfr avg: point:31 0.31602 0.25000 0.19263
aft avg: point:31 0.32022 0.18750 0.27350
bfr avg: point:32 -0.09627 0.25000 0.47979
aft avg: point:32 0.00638 0.18750 0.47755
bfr avg: point:33 0.73429 0.25000 0.51742
aft avg: point:33 0.62930 0.18750 0.50577
#608
Отправлено 20 мая 2020 - 06:37
Ваша модель
bfr avg: point:26 0.00000 1.00000 1.00000
aft avg: point:26 0.00000 1.00000 1.00000
bfr avg: point:28 0.00000 0.00000 0.50000
aft avg: point:28 0.00000 0.00000 0.50000
bfr avg: point:29 1.00000 1.00000 0.50000
aft avg: point:29 1.00000 1.00000 0.50000
bfr avg: point:30 0.00000 1.00000 0.00000
aft avg: point:30 0.00000 1.00000 0.00000
bfr avg: point:27 0.00000 1.00000 0.50000
aft avg: point:27 0.12109 0.87891 0.50000
bfr avg: point:20 0.50000 1.00000 0.50000
aft avg: point:20 0.37500 1.00000 0.50000
bfr avg: point:18 0.00000 1.00000 0.25000
aft avg: point:18 0.12500 0.87500 0.31250
bfr avg: point:22 0.00000 0.50000 0.25000
aft avg: point:22 0.00000 0.50000 0.25000
bfr avg: point:23 0.50000 1.00000 0.25000
aft avg: point:23 0.50000 1.00000 0.25000
bfr avg: point:24 0.50000 1.00000 0.75000
aft avg: point:24 0.50000 1.00000 0.75000
bfr avg: point:25 0.00000 0.50000 0.75000
aft avg: point:25 0.00000 0.50000 0.75000
bfr avg: point:19 0.00000 0.50000 0.50000
aft avg: point:19 0.00000 0.62500 0.50000
bfr avg: point:21 0.00000 1.00000 0.75000
aft avg: point:21 0.12500 0.87500 0.68750
#609
Отправлено 20 мая 2020 - 19:03
Ваша модель
Проверил. Тут я так понял точки и после первого и второго шага. Получается как у меня нарисовано. Значит нестыковка где-то в Average. Андрей говорит что может где то дробное число считаться как целое (или типа того) и выдавать не тот результат. Можно по шагам проверить на какую формулу пойдет код при вычислении вот этой точки (красная)? Четыре ее окружающие тоже обозначил. FFaces.Count для нее равно 4.
#610
Отправлено 21 мая 2020 - 03:24
точки до Averaging и после
вычисление заходит в 391 /home/mark/MyProjects/freeship-plus-in-lazarus/Units/FreeSubdivisionPoint.inc
Грань 1
на 400 Center = record T3DCOORDINATE { X = 0, Y = 0.8125, Z = 0.40625}
на 420 Result = record T3DCOORDINATE { X = 0, Y = 0.850848019, Z = 0.42542401}
Грань 2
Center = record T3DCOORDINATE { X = 0.1875, Y = 1, Z = 0.40625}
Result = record T3DCOORDINATE { X = 0.196349546, Y = 1.89804554, Z = 0.850848019}
Грань 3
Center = record T3DCOORDINATE { X = 0.1875, Y = 1, Z = 0.59375}
Result = record T3DCOORDINATE { X = 0.392699093, Y = 2.94524312, Z = 1.47262156}
Грань 4
Center = record T3DCOORDINATE { X = 0, Y = 0.8125, Z = 0.59375}
Result = record T3DCOORDINATE { X = 0.392699093, Y = 3.79609108, Z = 2.09439516}
на 426 TotalWeight = 4.18879032
на 430 Result = record T3DCOORDINATE { X = 0.09375, Y = 0.90624994, Z = 0.5}
на 438 a = 1.29166663
в конце Result = record T3DCOORDINATE { X = 0.12109375, Y = 0.87890619, Z = 0.5}
Сообщение отредактировал mm7: 21 мая 2020 - 03:44
#611
Отправлено 21 мая 2020 - 04:51
точки до Averaging и после
вычисление заходит в 391 /home/mark/MyProjects/freeship-plus-in-lazarus/Units/FreeSubdivisionPoint.inc
на 430 Result = record T3DCOORDINATE { X = 0.09375, Y = 0.90624994, Z = 0.5}
на 438 a = 1.29166663
в конце Result = record T3DCOORDINATE { X = 0.12109375, Y = 0.87890619, Z = 0.5}
Все сходится с моими кроме одного-почему из 5 / 3 - 8 / 3 * sqr(3 / 8 + 1 / 4 * cos(2 * Pi / 4)) получается 1.29
Сообщение отредактировал a_max: 21 мая 2020 - 04:51
#613
Отправлено 21 мая 2020 - 17:47
Я там ускорил, до 8 граней беру из массива констант. Почему-то берет следущий элемент, как для 5 граней.
Исправлю.
да это не суть, у меня 1.29 никак не получается из этих цифр.
P/S Разобрались!! Я sqr считал как корень, а не квадрат. Всех короче заморочил .
Ща буду корректор подбирать тогда.
Сообщение отредактировал a_max: 21 мая 2020 - 18:03
#615
Отправлено 22 мая 2020 - 22:51
Прикидывал разные варианты. Остался вопрос с условием if (Nq=0) and (Nt=3) then так и не смог сообразить что это за вариант граней.
В общем то зависимости для однотипных случаев уловил. Думается нахождение центров в корректоре схожее, а вот a можно любое сделать и двигать точки в нужную сторону.
Только как говорил персонаж ДМБ "жалко что от еды уходим" . Ибо все эти манипуляции нас к нормальной программе не приближают.
#617
Отправлено 23 мая 2020 - 03:01
if (Nq=0) and (Nt=3) - тетраэдр
Это же для вторичных граней условие, никакие тетраэдры там уже невозможны.
Не, точно, получилось с тремя гранями. Чет до этого как то не так пробовал .
Сообщение отредактировал a_max: 23 мая 2020 - 03:28
#618
Отправлено 24 мая 2020 - 18:40
Что то я никак все связать не могу. Пробовал идти от однотипных граней, но то что для них работает, не работает в смешанных сетках. Слишком много вариантов получается. Так с этим "обратным инжинирингом" можно очень долго провозиться. И самое главное с не очень понятной целью.
Думаю пока это дело отложу, и сделаю тестовые модели для обрезки и так же продолжу с элементной моделью. Как раз для нее алгоритм корректора сделать несложно (с однотипными гранями).
#620
Отправлено 25 мая 2020 - 21:20
ФШ 3.5 остановлен. Поддержки нет. Что работает - то работает. Что не работает - то исправлено не будет.
ДШ - платный. Только для Виндовз.
ФШЛ - бесплатный. открытый код. живой, развивающийся. Найденные ошибки исправляются. Добавляются всякие новые штуки...
Для Виндовз и Линукс. Теоретически портируется в любую ОС под которую есть Паскаль/Лазарус.
Убогие меню... В ДШ красивые меню занимают много экранного места. В ФШ3.5 меню еще более убогие.
В ФШЛ можно изменить размер иконок, и даже нарисовать свои.
Нарисуйте красивые иконки, создадим новую тему с Вашими иконками.
#621
Отправлено 26 мая 2020 - 01:09
Сформулировал задачу по обрезке. На примере УС для которой есть инструменты уже сейчас.
Даны сеть которая режется (синяя), и сеть которая режет(розовая).Первый шаг стандартный-пересечение синей о розовую. На ребрах синей появляются точки в местах пересечения с гранями розовой и все соединяется ребрами(шаг1). Далее такую же операцию нужно проделать в обратном порядке, только получившиеся точки пересечения ребер розовой с синей «переносятся» на грань с какой они пересеклись (шаг 2), а далее эта точка вставляется в ребро и вставляются новые ребра превращающие грани в треугольные (шаг 3 и 4).После этого какая то часть меша переводится в невидимый слой(шаг 5).
Посмотрите, можно ли попробовать этот алгоритм реализовать на существующих инструментах для контрольной сети. Если все получится, то можно и переносить на меш. С соответствующей записью разделенного меша.
Т.е. на сам меш сейчас внимание не обращайте, как бы его и нет.
Файлы приложил, правда делал в старом, ФШЛ последний чудит .
Прикрепленные файлы
#622
Отправлено 26 мая 2020 - 02:34
Сформулировал задачу по обрезке. На примере УС для которой есть инструменты уже сейчас.
Даны сеть которая режется (синяя), и сеть которая режет(розовая).Первый шаг стандартный-пересечение синей о розовую. На ребрах синей появляются точки в местах пересечения с гранями розовой и все соединяется ребрами(шаг1). Далее такую же операцию нужно проделать в обратном порядке, только получившиеся точки пересечения ребер розовой с синей «переносятся» на грань с какой они пересеклись (шаг 2), а далее эта точка вставляется в ребро и вставляются новые ребра превращающие грани в треугольные (шаг 3 и 4).После этого какая то часть меша переводится в невидимый слой(шаг 5).
Посмотрите, можно ли попробовать этот алгоритм реализовать на существующих инструментах для контрольной сети. Если все получится, то можно и переносить на меш. С соответствующей записью разделенного меша.
Т.е. на сам меш сейчас внимание не обращайте, как бы его и нет.
Файлы приложил, правда делал в старом, ФШЛ последний чудит .
Я не понял мы что пересекаем будем, контр сеть или меши?
В любом случае, пересечение с мешем уже есть, но только плоскости - ШП и тд.
Остальное надо делать. А это много работы. И мы еще не определились ни с функциналом ни с приоритетами.
Запись - это надо менять формат.
Что чудит? Надо описание бага.
#623
Отправлено 26 мая 2020 - 03:24
1.Я не понял мы что пересекаем будем, контр сеть или меши?
2.В любом случае, пересечение с мешем уже есть, но только плоскости - ШП и тд.
3.Остальное надо делать. А это много работы. И мы еще не определились ни с функциналом ни с приоритетами.
4.Запись - это надо менять формат.
5.Что чудит? Надо описание бага.
1.Ну в конечном итоге конечно меш. Но на данный момент все алгоритмы которые нужны работают с УС. Их только нужно последовательно запустить. Ну а заработает с Ус, можно переносить и на меш. Так кажется проще.
2.Надо код смотреть, пересечение с плоскостью намного проще, может просто браться координата и по ней искаться ребра которые ее пересекут.Хотя может и там нужное реализовано.
3. С приоритетами мы просто с вами несколько расходимся в мнениях . Я думаю как раз обрезка и нюрбс - из самых важных шагов вперед. Если они получатся-тогда имеет смысл и все остальные оптимизации прорисовок, опен жл и прочее. А если это окажется действительно очень трудоемко, то тогда лучше остановиться на доведении просто параметрического построителя обводов и функций ГС.
4.Ну это пока отдаленно, было бы че записывать, а уж как думаю придумается .
5.Да тут много всего, корректор, кривые, ребра своей жизнью живут. Нужно это пока отключить все на версию вниз, оставить только работающие функции окон.
Но если нужно опишу с скринами.
#625
Отправлено 26 мая 2020 - 05:12
корректор я уже отключил. это как раз не проблема.
а ребра... да, надо описание как воспроизвести баг.
Вот, при выключении видимости слоя ребра и точки остаются. Помнится мы обсуждали было бы неплохо сделать наоборот выключение УС видимого слоя, как для правого борта.
Ребра образуются при последовательном выборе точек. Наверное как часть рисования кривой.
Ответить
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 скрытых пользователей