Перейти к содержимому

Фотография
- - - - -

Фришип (Лазарус). Ошибки программы, исправления и улучшения.

FreeShip Lazarus

Сообщений в теме: 825

#601 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 19 мая 2020 - 20:16

в отладке можно притормозить и увидеть координаты точек, как цифры.
но чтобы нарисовать на экране, это надо писать код дополнительно. Просто это или нет надо смотреть ...

 


  • 0

#602 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 19 мая 2020 - 21:03

в отладке можно притормозить и увидеть координаты точек, как цифры.
но чтобы нарисовать на экране, это надо писать код дополнительно. Просто это или нет надо смотреть ...

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


  • 0

#603 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 19 мая 2020 - 21:31

 давайте модель. и что надо вывести...

 


  • 0

#604 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 19 мая 2020 - 23:50

 давайте модель. и что надо вывести...

 

Вот, тот что у меня на схеме.Вывести надо точки после первого шага (до average) в интерации Low (т.е. просто одно разделение УС).

Прикрепленные файлы


  • 0

#605 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 20 мая 2020 - 00:19

так они должны быть такие же как у грани. + срединные точки ребер, + срединная точка грани.

 

Вот, тот что у меня на схеме.Вывести надо точки после первого шага (до average) в интерации Low (т.е. просто одно разделение УС).

так они должны быть такие же как у грани. + срединные точки ребер, + срединная точка грани.


  • 0

#606 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 20 мая 2020 - 00:50

так они должны быть такие же как у грани. + срединные точки ребер, + срединная точка грани.

 

Должны быть. Вот хочется проверить. Где то же не сходится .


  • 0

#607 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 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

 


  • 0

#608 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 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

 


  • 0

#609 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 20 мая 2020 - 19:03

Ваша модель

Проверил. Тут я так понял точки   и  после первого и второго шага. Получается как у меня нарисовано. Значит нестыковка где-то в Average. Андрей говорит что может где то дробное число считаться как целое (или типа того)  и выдавать не тот результат.  Можно по шагам проверить на какую формулу пойдет код при вычислении вот этой точки (красная)? Четыре ее окружающие тоже обозначил. FFaces.Count для нее равно 4.

Прикрепленные изображения

  • point_excel.JPG
  • point_acad.JPG

  • 0

#610 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 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

  • 0

#611 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 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

  • 0

#612 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 21 мая 2020 - 17:26

Я там ускорил, до 8 граней беру из массива констант. Почему-то берет следущий элемент, как для 5 граней.

Исправлю.


  • 0

#613 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 21 мая 2020 - 17:47

Я там ускорил, до 8 граней беру из массива констант. Почему-то берет следущий элемент, как для 5 граней.

Исправлю.

да это не суть, у меня 1.29 никак не получается из этих цифр.

P/S Разобрались!!  Я sqr считал как корень, а не квадрат. Всех короче заморочил :) .

Ща буду корректор подбирать тогда.


Сообщение отредактировал a_max: 21 мая 2020 - 18:03

  • 0

#614 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 21 мая 2020 - 20:03

понятно. у меня значит все правильно :)


  • 0

#615 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 22 мая 2020 - 22:51

Прикидывал разные варианты. Остался вопрос с условием if (Nq=0) and (Nt=3) then так и не смог сообразить что это за вариант граней.

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

Только как говорил персонаж ДМБ "жалко что от еды уходим" :) . Ибо все эти манипуляции нас к нормальной программе не приближают.


  • 0

#616 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 23 мая 2020 - 02:22

if (Nq=0) and (Nt=3)  - тетраэдр

 


  • 0

#617 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 23 мая 2020 - 03:01

if (Nq=0) and (Nt=3)  - тетраэдр

 

Это же для вторичных граней условие, никакие тетраэдры там уже невозможны.

Не, точно, получилось с тремя гранями. Чет до этого как то не так пробовал :) .

Прикрепленные изображения

  • Tetr.JPG

Сообщение отредактировал a_max: 23 мая 2020 - 03:28

  • 0

#618 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 24 мая 2020 - 18:40

Что то я никак все связать не могу. Пробовал идти от однотипных граней, но то что для них работает, не работает в смешанных сетках. Слишком много вариантов получается. Так с этим "обратным инжинирингом" можно очень долго провозиться. И самое главное с не очень понятной целью. 

Думаю пока это дело отложу, и сделаю тестовые модели для обрезки и так же продолжу с элементной моделью. Как раз для нее алгоритм корректора сделать несложно (с однотипными гранями).


  • 0

#619 Konkurent

Konkurent

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 809 сообщений
  • Из:Kassel

Отправлено 24 мая 2020 - 23:47

Честно говоря не понял смысла этого проекта. В чем его преимущество от фришипа 3,50? В убогой графике меню? Или тем паче от delfshipa?
  • 1

#620 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 25 мая 2020 - 21:20

ФШ 3.5 остановлен. Поддержки нет. Что работает - то работает. Что не работает - то исправлено не будет.
ДШ - платный. Только для Виндовз.
ФШЛ - бесплатный. открытый код. живой, развивающийся. Найденные ошибки исправляются. Добавляются всякие новые штуки...
Для Виндовз и Линукс. Теоретически портируется в любую ОС под которую есть Паскаль/Лазарус.

Убогие меню... В ДШ красивые меню занимают много экранного места. В ФШ3.5 меню еще более убогие.
В ФШЛ можно изменить размер иконок, и даже нарисовать свои.
Нарисуйте красивые иконки, создадим новую тему с Вашими иконками.

 


  • 0

#621 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 26 мая 2020 - 01:09

Сформулировал задачу по обрезке. На примере УС для которой есть инструменты уже сейчас.

Даны сеть которая режется (синяя), и сеть которая режет(розовая).Первый шаг стандартный-пересечение синей о розовую. На ребрах синей появляются точки в местах пересечения с гранями розовой и все соединяется ребрами(шаг1). Далее такую же операцию нужно проделать в обратном порядке, только получившиеся точки пересечения ребер розовой с синей «переносятся» на грань с какой они пересеклись (шаг 2), а далее эта точка вставляется в ребро и вставляются новые ребра превращающие грани в треугольные (шаг 3 и 4).После этого какая то часть меша переводится в невидимый слой(шаг 5).

Посмотрите, можно ли попробовать этот алгоритм реализовать на существующих инструментах для контрольной сети. Если все получится, то можно и переносить на меш. С соответствующей записью разделенного меша.

Т.е. на сам меш сейчас внимание не обращайте, как бы его и нет.

Файлы приложил, правда делал в старом, ФШЛ последний чудит :) .

Прикрепленные изображения

  • Intersec_1step.JPG
  • Intersec_step_2.JPG
  • Intersec_step_3.JPG
  • Intersec_step_4.JPG
  • Surf_complit.JPG

Прикрепленные файлы


  • 0

#622 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 26 мая 2020 - 02:34

 

Сформулировал задачу по обрезке. На примере УС для которой есть инструменты уже сейчас.

Даны сеть которая режется (синяя), и сеть которая режет(розовая).Первый шаг стандартный-пересечение синей о розовую. На ребрах синей появляются точки в местах пересечения с гранями розовой и все соединяется ребрами(шаг1). Далее такую же операцию нужно проделать в обратном порядке, только получившиеся точки пересечения ребер розовой с синей «переносятся» на грань с какой они пересеклись (шаг 2), а далее эта точка вставляется в ребро и вставляются новые ребра превращающие грани в треугольные (шаг 3 и 4).После этого какая то часть меша переводится в невидимый слой(шаг 5).

Посмотрите, можно ли попробовать этот алгоритм реализовать на существующих инструментах для контрольной сети. Если все получится, то можно и переносить на меш. С соответствующей записью разделенного меша.

Т.е. на сам меш сейчас внимание не обращайте, как бы его и нет.

Файлы приложил, правда делал в старом, ФШЛ последний чудит :) .

 

Я не понял мы что пересекаем будем, контр сеть или меши?

В любом случае, пересечение с мешем уже есть, но только плоскости - ШП и тд.

Остальное надо делать. А это много работы. И мы еще не определились ни с функциналом ни с приоритетами.

 

Запись - это надо менять формат.

 

Что чудит? Надо описание бага.


  • 0

#623 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 26 мая 2020 - 03:24

1.Я не понял мы что пересекаем будем, контр сеть или меши?

2.В любом случае, пересечение с мешем уже есть, но только плоскости - ШП и тд.

3.Остальное надо делать. А это много работы. И мы еще не определились ни с функциналом ни с приоритетами.

4.Запись - это надо менять формат.

5.Что чудит? Надо описание бага.

1.Ну в конечном итоге конечно меш. Но на данный момент все алгоритмы которые нужны работают с УС. Их только нужно последовательно запустить. Ну а заработает с Ус, можно переносить и на меш. Так кажется проще.

2.Надо код смотреть, пересечение с плоскостью намного проще, может просто браться координата и по ней  искаться ребра которые ее пересекут.Хотя может и там нужное реализовано.

3. С приоритетами мы просто с вами несколько расходимся в мнениях :) . Я думаю как раз обрезка и нюрбс - из самых важных шагов вперед. Если они получатся-тогда имеет смысл и все остальные оптимизации прорисовок, опен жл и прочее. А если это окажется действительно очень трудоемко, то тогда лучше остановиться на доведении просто параметрического построителя обводов и функций ГС. 

4.Ну это пока отдаленно, было бы че записывать, а уж как думаю придумается :) .

5.Да тут много всего, корректор, кривые, ребра своей жизнью живут. Нужно это пока отключить все на версию вниз, оставить только работающие функции окон.

Но если нужно опишу с скринами.


  • 0

#624 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 26 мая 2020 - 03:54

корректор я уже отключил. это как раз не проблема.

а ребра... да, надо описание как воспроизвести баг.


  • 0

#625 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 26 мая 2020 - 05:12

корректор я уже отключил. это как раз не проблема.

а ребра... да, надо описание как воспроизвести баг.

Вот, при выключении видимости слоя ребра и точки остаются. Помнится мы обсуждали  было бы неплохо сделать наоборот выключение УС видимого слоя, как для правого борта.

Ребра образуются при  последовательном выборе точек. Наверное как часть рисования кривой.

Прикрепленные изображения

  • lay_off.JPG
  • Select_point.JPG

  • 0



Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей