Обратный волновой алгоритм с указателями
Запись от Hrethgir размещена 25.08.2015 в 15:20
Показов 3644
Комментарии 0
|
* * Эскизы по алгоритму, определяющему расположение вершин треугольника, на сетке координат. Все вершины имеют свой ID и расположены по направлению вращения часовой стрелки. Треугольники, по данной системе,* делятся на два типа: идеальные и не идеальные, которые в свою очередь делятся на прямые и обратные, но суть не в том, как они делятся. Суть в отношениях вершин: если вершины имеют одну координату на оси Y, то отношение равно 0, если вершина имеет меньший координат, чем следующая, то её отношение равно -1, и 1 соответственно, если больший координат по Y. Имя треугольника записано как три отношения вершин, где к каждому прибавлено2, например 3, 1, 2, но тот-же тип треугольника может иметь имя 1,2,3 и 2,3,1 (обычное смещение). Далее таблица с типами треугольников, но в таблице всё прибавлено на 2, потому что 0 недопустим в таблице, он просто означает, что данная позиция в типе отсутвтует. [url]https://www.cyberforum.ru/blog_attachment.php?attachmentid=3277&stc=1&d=1440505314[/url] Вход в идентификационную таблицу осуществляется по первому отношению в имени, в строку с номером из имени. Так если имя треугольника 2,3,1, то программа войдёт в вторую строку первого и второго столбца, других вариантов у неё нет, и сравнит значение ячеек с следующим отношением из имени. Так если следующее отношение из имени будет 3, то программа уже определит тип треугольника как второй, по значениям столбца. * *В общем, этот алгоритм получается волновой, но с указателями, он в общем определяет путь, но по указателям. И дерева не получается, потому что в общем допускается смещение в именах треугольников, вместо дерева получается что-то напоминающее поля. Вот вчера я нарисовал для двух типов треугольников, не идеальных: прямых и обратных, синие и красные стрелки, или наоборот (не помню). Но суть в том-что принцип один - волновой алгоритм, но у меня идентифицирующий волновой алгоритм с указателями, и выглядит он больше как поля из физики, чем деревья из биологии. [img]https://www.cyberforum.ru/blog_attachment.php?attachmentid=3278&stc=1&d=1440505131[/img] Сейчас этот алгоритм я пытаюсь в тиснуть в систему "условия", данная система мной была придумана (совсем недавно) из принципа и нежелания считать постулаты программирования за идеалы * Вот код системы "условия", который проверяет расположение вершин: по часовой стрелке или против. [url]http://pastebin.com/kehFADTa[/url] Но в общем, если взять ветку дерева и перевести в волнойвой с указателями, то она и останется веткой, потому что ветвь имеет чётко обозначенное начало. А начало - оценка субъекта, на самом деле объективного начала нету, ну или абсолютного. Ветка - субъективная стректура, воспринимаемая субъектом, на самом деле всё намного сложнее и далеко от замыслов субъекта. Древо-каскад [url]https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Shaki_Waterfall2.jpg/1280px-Shaki_Waterfall2.jpg[/url] * *Вот "портяночка"кода, которая работает по принципу обратного волнового алгоритма (в учебниках нет, возможно нет и нигде, но думаю, что где-то должно быть). [PASCAL]procedure calcTypeTreangl; var naVylet : array [0..3] of byte; counter1, counter2, counter3 : byte; proctonnoe : byte; i,k,t:integer; begin FillByte ( naVylet , 4 , 1 ) ; for i := 0 to 2 do begin counter1:=i; if counter1 > 2 then counter1 := 0; counter2 := i+1; if counter2 > 2 then counter2 := 0; for k :=0 to 3 do begin if naVylet[k] = 1 then begin * *for t := 0 to 1 do * *begin * *if posledovatelnostVobrazah[0,k,copyTimeBoxMaxY.PropsTreangl.nameTreangle[counter1],t]= copyTimeBoxMaxY.PropsTreangl.nameTreangle[counter2] then * *begin * ** naVylet[k] := 1; * ** break; * ** end; * *naVylet[k] := 0; * *end; end; end; end; for i := 0 to 3 do begin if naVylet[i] = 1 then begin copyTimeBoxMaxY.PropsTreangl.typeTreangle := i; copyTimeBoxMaxY.PropsTreangl.sequence := posledovatelnostVobrazah[1,copyTimeBoxMaxY.PropsTreangl.typeTreangle,counter1,t]; end; end; end;[/PASCAL] В портянке скорее всего есть ошибки, но нет резона их исправлять - лучше переписать всё под систему. Вообще системы делаются для избежания ошибок, система - как навигационные приборы. Вот этот код нужно переписать под систему "условия", код которой приведён по линку. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


