![]() |
Программная анимация стрелки тахометра: как описать зависимость от нажатия педали газ
Вложений: 1
Всем привет. Сегодня мне не повезло наткнуться на проблему, для решения которой мне не хватает серого вещества... Зная наверняка, что обитатели флешера, в отличие от меня, недостатком оного не страдают, решил обратиться к вам, мои дорогие.
Передо мной стоит задача сделать программную анимацию стрелки тахометра. Нажимаем газ, стрелка с замедлением ползет до определенного уровня вверх. Отпускаем газ, стрелка с равной скоростью падает вниз. Для решения данной задачки, я вспомнил урок программной анимации эффекта скольжения/торможения. Взял константу(коэффициент) замедления = 0.95 И шаг, на который изменяется значение угла поворота стрелки. Получаем простейшую формулу: шаг = шаг * 0.95 угол стрелки = угол стрелки + шаг Каждый новый фрейм, стрелка возрастает, но различие в шаге снижается. Если мы не успели довести стрелку до максимума и босили — она будет падать до нуля с постоянной скоростью. Но что, если процесс бросания не доведен до конца? При нажатии газа, стрелка должна начать рости, постепенно замедляясь. Увы, я не могу понять как этот процесс реализовать. Вот если бы я знал, какой шаг соответствует текущему положению стрелки... Зависимость шага от положения стрелки... Помогите пожалуйста разобраться... Прилагаю исходник, иллюстрирующий уровень моих познаний в программировании на АС и знания физики... А может еще и мои умственные способности. Приведу тут же незамысловатый код, чтобы не качать исходник: Код AS1/AS2:
Заранее благодарен за помощь или наводящие ответы... Очень на вас надеюсь. |
Может не усложнять?
И просто: Код AS1/AS2:
|
Как знал, что ответ на мой вопрос последует вместе триумфальным появлением г-на Мункар =) Приветствую!
Цитата:
И раз уж Вы тут, можно задать еще один вопрос по теме? Дело в том, что свойство ротейшн работает достаточно неудобно: если угол острый вплоть до 180 градусов, значение его положительно. Если тупой — отрицательное. Очень сложно ловить нужный диапазон, если значение так изменяется. Например, если я хочу сделать так, чтобы стрелка доходила до 8000 об в мин. Тогда она пройдет путь от 0 градусов до 180 и дальше будет уходить в -179, -178 ... -1. Мне кажется очевидным завести переменную-счетчик градусов наклона и передавать её в виде 190 240 360 градусов. Но есть ли какой-то более изящный ход для решения данного вопроса? Огромное спасибо за ответ и еще более ОГРОМНОЕ, если ответите на текущие! Уже не первый год Вы отвечаете на мои глупые вопросы =) |
Цитата:
Зависимость тоже не сложно выразить. Например у вас максимальный угол отклонения стрелки = 150 градусов (100%). В км/ч 100% = 300км/ч. То есть максимальная цифра на тахометре 300км/ч. Значит 1 градус стрелки будет равен 300/150 = 2км/ч. А 1км/ч будет равен 150/300 = 0.5 градуса. |
Цитата:
|
greep
Какой другой подход? Стрелка должна лишь отображать нашу скорость, как она это делает это её проблемы. Мы ей говорим: "Вот сейчас у нас скорость 100км/ч, отобрази её нам", то есть выглядит это примерно так: Код AS1/AS2:
Вот в принципе и всё. То есть манипулируем мы скоростью в км/ч где то "наверху", а стрелка лишь отображает нашу скорость. |
Вложений: 2
Если говорить о тахометре, то упрощенно можно записать это как:
n = k*d n - частота вращения k - некий коэфф нагрузки d - процент нажатия на педальку K я бы задал например меняется от 0,2 до 4 4 - при отсутствии нагрузки - холостой 0.2 при с прицепом и на горку и на пятой передаче))) то бишь обороты расти почти не будут - они там даж падать будут при нажатии на педаль Вложение 28294 в букву K короч надо внести кучу коэффициентов всяких, но так чтоб она менялась тока от 0,2 до 4 ... типа туда вес, мощность, сопротивление качению (покрытие-асфальт песок, какая резина злая или лысая, как накачена), уклон - тут мож силу тяжесит вклинить от угла наклона - она может даже разгонять двигатель при отпущеной педали газа, сопроитвление водзуху - которое растет по диким законам. Сначла по прямой зависимости и начиная с большой скорости зависимости пропорциональна квадрату скорости. еще аэродинамический коээф - это к сопротивлению воздуха. все данные для разных форм и тачек примерно в инете можно найти. сопротивление трансмиссии - у нивы оно например просто неепическое - при отпускании педали газа тормозит сильна. То есть примерно 10-15% мозности уходит на трение в трансмисии. БМВ недавно хвасталось что потери в трансмиссии достигди у нее всего 1-2 л.с. то есть ваще почти никаких. если движок убит и плохо отрегулирован, то реакция на педаль газа будет замедленной - нажмешь , а двиг сначала "думает" пару секунд, потом набирает неспеша, потом срывается в резкий набор, либо ваще если резко нажать то проваливается и теряет обороты, а потом начинает набирать. При плавном нажатии плавно набирает. Вложение 28295 типа грубо говоря кривые мощности по передача и скорость тачки. Черные жирные это обычный спокойный дачниковый разгон тачки до 70 в час. Красные это типа *****стритрейсер форсит на повышеных оборотах и разгоняется резво до 80 в час. Кривые показывают и рост мощности от оборотов и рост момента силы и скорость изменения оборотов в этом месте на этой передаче. Они немного будут отличаться друг от друга по кривизне но в целом похожи. У чоперов например момент силы кривая оч сглажена – момент силы на низких и высоких оборотов достаточно высок и изменяется не сильно. У спортбайков момент силы на холостых ваще никакой но высокий только на пике оборотов – оч крутая кривая будет. По графику еще можно рассмотреть если все предсатвить (представит ькак тыв ездишь и переключаешься) в какие моменты выгодно например с четвертой переключиться на третью – чтоб перейти на более высокие обороты и более высокую мощность когда в гору едешь например. |
2 PsixokoT: Серьезный подход) Вы очень доходчиво объяснили сам принцип работы тахометра. Тем не менее в данном контексте не очень понятен подход в реализации... Не могли бы Вы интерполировать ваши выкладки в контексте поставленных условий?
|
Ну тут как бы итак все понятно. Вам не нужно запомнать там какие то промежуточные значения.
Выше вам уже написали, что тахометр это просто вьюха которая показывает обороты. Как оно показывает это элементарные преобразования угол = <значение оборотов>*<коэффициент деления тахометра>; А вот что бы вычислять значение оборотов в текущую единицу времени, выше я описал факторы влияющие на это значение. Пример электродвигателя которому наплевать на все окружающие факторы, работающий всегда на максимальной мощности. Код AS1/AS2:
|
То есть, вы предлагаете в коде тахометра описать реальный принцип работы двигателя?) Но мне вего лишь нужна анимация движения стрелки =) Принцип, которым я воспользовался — очень прост. Шаг движения стрелки в градусах, замедляющий коэффициент на который каждый раз мы умножаем шаг, тем самым укорачивая его и далее шаг суммируется с текущим углом поворота стрелки. Таким образом каждый фрейм, различие в изменении поворота стрелки все меньше.
Вопрос лишь в том, как при падении стрелки, рассчитать такое значение шага, которое бы соответствовало углу стрелки при возрастании. Кажется найти ответ на мой вопрос не получится и тут... =( |
| Часовой пояс GMT +4, время: 17:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.