В настоящее время я пишу пользовательский интерфейс для небольшого проекта ОК.Возникли проблемы с вычислением положения вертикальной линии.Идея состоит в том, чтобы переместить красную линию вдоль оси x к концу прямоугольника.
Значение, которое увеличивается с помощью бесконечного поворотного энкодера и имеет диапазон от 0 до 800 с шагом 1. Левая сторона прямоугольника - это начало оси x, а также x = 0.диапазон 0–800 представляет 0–100,00 в нотации с фиксированной точкой Q13.3 с типом данных uint16_t.
Прямоугольник в настоящее время имеет ширину 300 пикселей, я гибок с этим, но он должен быть не менее 240 пикселей,Ширина строки составляет 1 пиксель.
Суть в том, что из-за ограничений производительности я могу использовать только математику с фиксированной запятой, вообще не должно быть доступа к модулю с плавающей запятой.
![enter image description here](https://i.stack.imgur.com/jDCbU.jpg)
То, что я сейчас делаю, - это счетчик, который увеличивается с каждым щелчком кодера.СТГ.например:
if(direction) counter++; //Running forwards
if(!direction) counter--; //Running backwards
if((counter % 8 ) == 0){
if(direction) line.x += 3;
if(!direction) line.x -= 3;
}
, что меньше оптимального, поскольку интервал составляет 3 пикселя.
В идеале, если бы вычисление с плавающей запятой было опцией, я бы просто увеличил счетчик на 0,375
Приветствую любые советы по этому вопросу.
ура