Скажите, что у меня есть объект рядом со мной за моим столом прямо сейчас и объект java в программе, над которой я работаю. Если бы я должен был сбросить реальный объект, он ускорялся бы вниз со скоростью 9,81 м/с (без учета сопротивления ветра), таким образом, скорость была бы 9,81 м/с/с, а общее положение было бы (-) 9,81 м/с/s/s относительно того, с чего он начался.Simulating Gravity
Теперь, если я написал программу Java с моим объектом Java моделирования этого я хотел бы сделать это как такой
public class HypotheticalObjectClass(){
double position = 0, velocity = 0;
tick(){
velocity += 9.81;
position += velocity;
}
}
Эта программа является точной до тех пор, как я его вызова клеща() один раз в секунду, но если это называется несколько раз в секунду, когда позиция взлетает из-за исчисления или что-то еще ... Я намерен использовать эту программу несколько раз в секунду, поэтому как бы исправить расчет, учитывая только мгновенные значения (такие как скорость, положение, вращение и т. д. ...) и, если это невозможно, какую систему мне нужно добавить, чтобы это стало возможным?
Извините, если этот вопрос уже был адресован на этом сайте, я понятия не имею, как я его найду, и спасибо за вашу помощь.
У меня есть система для синхронизации вызовов в другом месте программы, но актуальная проблема гораздо более запутанна и ее трудно увидеть. Если бы у меня было это галочкой 30 раз в секунду, то в первый раз он добавит 1/30-й из 9,81 м/с к скорости, а затем добавит скорость в положение, что отлично. Но во второй раз, когда он называется, он добавляет 1/30-й из 9.81 к скорости, затем 2/30 в позицию, которая тогда уже составляет 3/30 секунды 9,81, на 8-м тике он уже достиг правильной позиции и будет продолжать резко превышать. Он теряет свою точность из-за того, насколько быстро положение накапливается. – jotnova
Числовая интеграция никогда не бывает на 100% точнее. Прочтите данную статью, если вам нужно что-то лучше. – Rames
О, извините, я полностью пропустил последнюю часть. – jotnova