реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как бы сделать так же ?, разобраться с алгоритмом
zombi
сообщение Nov 12 2012, 09:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Есть подпрограмма написанная давным давно и не мной.
На вход ей поступают два параметра START-END (к примеру 10-100, 100-1000, 500-5000 ...) эти параметры могут быть любыми целыми числами.
При каждом следующем вызове на выходе получаем промежуточное значение, тоже целое число которое больше предыдущего на некую величину (на картинке красная).
Можно ли на основании приведённых таблиц понять каким образом (по какой функции) вычисляется эта дельта.
Исходников нет. Дизассеблировать нет возможности.
Нужно написать что то своё что будет работать также, ну или очень похоже.
Пока только вижу что первое число равно примерно половине STARTа и дельта вдвое меньше него.
А дальше ...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 12 2012, 10:32
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Может быть, это алгоритм Брезенхема?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
arttab
сообщение Nov 13 2012, 01:34
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



муторно, но можно из прошивки выковырять.
приходилось ковырять прошивки из-за отсутствия исходников и документации на протоколы


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Snaky
сообщение Nov 13 2012, 02:28
Сообщение #4


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Имя функции ничего не подсказывает?
Что будет если задать диапазон отличный от декадного как у вас? 1-2, 1-1000, 10-20 например


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 13 2012, 04:06
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Из таблицы как-то так видно , что если из 6-4=2 Из 9-6=3 из 11-9=2 ... из 423-396=27 ну и так далее....


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Snaky
сообщение Nov 13 2012, 04:07
Сообщение #6


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(ILYAUL @ Nov 13 2012, 15:06) *
Из таблицы как-то так видно , что если из 6-4=2 Из 9-6=3 из 11-9=2 ... из 423-396=27 ну и так далее....

Так автор именно так и вычислил красные цифры, если вы не поняли :>

Более интересен вопрос как функция выбирает первое значение и количество шагов до максимума.


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 13 2012, 04:37
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
если вы не поняли :>

Да не врубился, утро ....
Цитата
как функция выбирает первое значение и количество шагов до максимума

Цитата
ей поступают два параметра START-END.....
Очень похоже , что задается диапазон
Цитата
каждом следующем вызове на выходе получаем промежуточное значение... которое больше предыдущего....

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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Snaky
сообщение Nov 13 2012, 04:54
Сообщение #8


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(ILYAUL @ Nov 13 2012, 15:37) *
Получается , что значения могут только расти. Может график по таблице нарисовать, у меня под рукой миллимитровки нет..

ну да, растут, от начала диапазона до конца. Практически с постоянным приращением. Как тут заметили, смахивает на Брезенхэма. Гораздо любопытнее как определяется первая точка ИЛИ количество шагов. Почему чтобы пройти от 10 до 100 надо 34 шага, а от 500 до 5000 - 49?

А миллиметровку заменил Excel уже с конца прошлого века примерно ;>


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 13 2012, 05:54
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
ИЛИ количество шагов
так может оно и задаётся диапазоном т.е изначально известно
Цитата
А миллиметровку заменил Excel уже с конца прошлого века примерно ;>

Не люблю я его с детства


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Flexz
сообщение Nov 13 2012, 06:07
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



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

PS и это не Брезенхем, во-первых рост нелинейный, во-вторых последняя дельта выбивается из ряда, Брезенхем такого себе не позволяет.
Go to the top of the page
 
+Quote Post
редактор
сообщение Nov 13 2012, 07:38
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
последняя дельта выбивается из ряда

Это может быть из-за того, что бы не выйти за диапазон при очередном приращении.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
zombi
сообщение Nov 13 2012, 10:45
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Еще заметил что нету ни одной дельты с нулевым значением в последнем разряде. (после 29 может быть 28,31 но не 30; 99 - 101; 109 -111).
Видать хотят что бы младший разряд каждого следующего значения обязательно менялся.
По моему дельта с каждым шагом увеличивается на некую не целую константу и округляется до целого перед сложением.
Величина начального значения вполне может по таблице выбираться.
Параметр START может быть любым целым числом но в реальном изделии их не так уж и много.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th August 2025 - 00:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.02335 секунд с 7
ELECTRONIX ©2004-2016