Получилось огорчение с указателями. "Рокировки" указателей внутри движка - много..
Запись от Hrethgir размещена 21.05.2023 в 18:51
Показов 1328
Комментарии 1
|
Оказывается достаточно "рокировать" размеры карты по осям. А при обработке изображения а не карты, от от угла больше 45 градусов рокировать координаты [B][I]x[/I][/B] и [B][I]y[/I][/B]. Такое получилось. А углы я "рокировал" в прошлой записи. Просто как-то не сразу получилось это понять, уже когда сделал и увидел что не то, понял что задача была намного проще чем я предполагал. Собственно указатели вообще оказывается не нужны. Нужно было только это [PASCAL] deg := StrToInt(Edit1.Text); RazmerX := StrToInt(Edit2.Text); RazmerY := StrToInt(Edit3.Text); if deg > 45 then begin deg := 45-(deg-45); RazmerX := StrToInt(Edit3.Text); RazmerY := StrToInt(Edit2.Text); end; StringGrid1.RowCount := RazmerY; StringGrid1.ColCount := RazmerX; x := RazmerX - 1; y := 0; TanDeg := Tan(DegToRad(deg));[/PASCAL] Ну а движок разумеется остаётся как был. То-есть внутри движка никаких указателей и не надо вовсе. Ну потратирл на понимание данного - пару вечеров на интеграцию указателей в движок, потом увидел что он делает и откатил назад всё, узменив только самый стартовый код на то, что вверху. Движок в прежнем виде и остался. [PASCAL] repeat {%REGION 'Engine'} asm JMP p end; p1: StringGrid1.Cells[x, y] := IntToStr(TracerX) + ',' + IntToStr(TracerY) + ',' + '1'; //запись правого столбца p := @p3; goto p4; p2: StringGrid1.Cells[x, y] := IntToStr(x+1) + ',' + IntToStr(y+1) + ',' + '0'; //автоматическое забивание координат в местах скоса трассы p := @p3; goto p4; p3: StringGrid1.Cells[x, y] := IntToStr(x+1) + ',' + IntToStr(y) + ',' + '0'; //автоматическое забивание координат трассы на прямых участках p4: Dec(x); {%ENDREGION} until x < Biger;[/PASCAL] В общем код сокращается и упрощяется и дальше. Но так-то основная проблема была только в формуле последней строки - там я потоптался. А на указатели я и не потратил время в общем почти. То есть вот так выглядит грид - "рокируются размеры" [IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8068&stc=1&d=1684687480[/IMG] А уже при обработке изображения должны будут "рокироваться" координаты по осям от угла большего чем 45 и даже точку входа в карту менять не надо на интервале 0-90 градусов. Вот оказывается насколько всё проще на самом деле чем я предполагал. Думал что сложнее надо делать. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Хотя вряд-ли. Всё таки рокировку переменных сожержащих информацию о координатах по осям - нужно делать, лучше пусть будет проще алгоритм рассчитывающий веса линий, чем генератор.Запись от Hrethgir размещена 24.05.2023 в 21:32


