Всё-же опыт написания первого движка - полезен.
Запись от Hrethgir размещена 19.07.2023 в 22:17
Показов 1032
Комментарии 0
|
Это всё тот же движок генератора карт трассировок - такая хитрая вещь с лайфхаком, заблудившая, итак заблудившийся с помощью других не к тому ТЗ , алгоритм Брезенхема. Я им сразу говорил - в текущем ТЗ алгоритм Брезенхема заблудится в горах знаний (люди немного перечитали книг и возомнили себя знающими всё - наверное такое бывает...если не агностик). Разница в эффективности будет не заметна, только на генерируемой карте размером в один пиксел, ну это языком сухой статистики, на самом деле думаю что картам нужно набрать какой то размер, чтобы разница стала ощутимой, так как свой движок я пишу используя очень мало ресурсов от собственных - такова жизнь. Всё-же второй раз в этом движке я не стану применять математику для замены логических операторов. Я использовал её как костыль, потому что без неё структура проверки условий выглядела как-то сумбурно, тем более что вычислялась принадлежность определённой точки-шага, в цикле шагов, (один их которых может иметь, а может и не иметь изменённый размер) к интервалу являющемуся одним из параметров вычисления. Само устройство движка показывает на то, что усложнять всё далее математикой - не целесообразно. Будут написаны две изменённые формулы, одна из которых сложная - вычисляющая последнюю строку, и одна простая - вычиляющая столбец, причём вычисляющая столбец изменённая - разместится внизу [PASCAL] var Edge, logic, p, BSP, ESP, MSP: pointer; y, x, TracerX, TracerY, steps, stepRare, y1, x1, stepFrequent, stepsBig: integer; x1Inc,xInc__Doubl: integer; px1, py1,px, py: ^integer; pTracerX,pTracerY: ^integer; Biger, xRazmerX, yRazmerY, bigStep, runTime, steps1: integer; CaTanDeg, TanDeg: extended; StringDiv, StringDiv1: extended; znak: integer; label p1, p2, p3, p4; label logic1, logic2, logic3, logic4; label Edge1, Edge2, Edge3, Edge4; label BSP1, BSP2; label MSP1,MSP2; label ESP1,ESP2; [/PASCAL] метки [B][I]BSP1[/I][/B] и [B][I]BSP2[/I][/B] включатель простой формулы столбца вверху, где область меток [B][I]logic1, logic2, logic3, logic4[/I][/B]. Метки [B][I]MSP1,MSP2[/I][/B] - будут указывать на нужную сложную формулу вычисления последней строки: изменённую или неизменённую В области меток [B][I] Edge1, Edge2, Edge3, Edge4[/I][/B]. . Метки [B][I]ESP1,ESP2[/I][/B] - включатель модифицированной формулы внизу, там пока что нет области меток для формулы. Это самый простой способ и с математикой перебирать будет не правильно. Хотя может это из-за устройства движка - модифицированная формула столбца должна находится совсем в другой позиции в вложенных циклах. Ну и проект тут [url]https://github.com/Andrei-Y/A-trace-map-generator/blob/main/generator_0-90_deg3.zip[/url] , если кому интересно, [B][I]правда я не залил пока почищенный от лишних переменных и прочего проект[/I][/B], и пока до 90 градусов от 0. Сейчас заканчиваю - дорабатываю до 180. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


