Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
victorian
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 14
#1

реализация трения в физической симуляции - C++

20.12.2012, 18:45. Просмотров 331. Ответов 0
Метки нет (Все метки)

В общем есть у меня физ демка, в которой выпуклые тела сталкиваются, но трения нету, поэтому даже стенка из блоков просто разваливается со временем сама, блоки начинают разъезжаться.

Собсно релизовано все это по методу интегрирования Верле, где скорость у нас равна V = Pos - OldPos

Скорость в принципе можно заменить на -k*N+OldVelocity;

где N как я понял нормализованный вектор скорости (ну еще на -1 умноженный не?)
ну и еще добавить хак типа VelNew = max(-k*N+OldVelocity, 0.0f) - что бы тело внезапно не начало двигаться в другую сторону если трение = "бесконечности"

Но как это добавить в уже существующий код я не знаю, пробовал разные вариации, вот исходный метод:


C++
1
2
3
4
5
6
7
8
9
10
void Physics::UpdateVerlet() { //Обновляем положение вершин
    for( int I = 0; I < VertexCount; I++ ) {
        Vertex& V = *Vertices[ I ];
 
        Vec2 OldPosition = V.Position;
        V.Position += V.Position-V.OldPosition + V.Acceleration*Timestep*Timestep;
        V.OldPosition = OldPosition;
 
    }
}

А вот то, что я пытался сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Physics::UpdateVerlet() { //Обновляем положение вершин
    for( int I = 0; I < VertexCount; I++ ) {
        Vertex& V = *Vertices[ I ];
 
        Vec2 VelOld = V.Position-V.OldPosition;
        V.Position += V.Position-V.OldPosition + V.Acceleration*Timestep*Timestep;
        
        Vec2 VelOld2 = VelOld;
        VelOld2.Normalize();
        VelOld2=VelOld2*(-1);
 
        if (VelOld*CollisionInfo.Normal<0.0f)
            V.OldPosition=V.Position-VelOld*(VelOld2*(-0.001)+VelOld>0);
        else
            V.OldPosition=V.Position-VelOld;
    }
}
но получилось не очень, как мне доработать метод, что бы появилось трение?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос реализация трения в физической симуляции (C++):

Приложение для симуляции перехвата ракет - C++
Придумал себе задание для собственного проекта, и теперь думаю, как это сделать, так как даже теоретических знаний нету. В чем задание: ...

Моделирование физической задачи на Си/Си++ - C++
Люди, смоделировать задачу физическую на движение тела выпущеным под углом. Ну тоесть должно стрелять что-то пушки и вылетать снаряд. В...

Разбивка физической формулы на компоненты - C++
Задание - построить программу которая при вводе формулы будет раскладывать ее на величины, схема приведена ниже. В программировании полный...

По названию введенной физической величины вывести ее единицу измерения - C++
По названию введенной физической величины характеризующей движение тела (координата, скорость, ускорение, время, сила) вывести ее единицу...

Определить силу трения - C++
Всем доброго время суток. Написать программу определения силы трения {F}_{t}, которая действует на тело массой m, находящейся на наклонной...

Вычислить коэффициент трения - C++
Всем доброго время суток. Тело соскальзывает с наклонной плоскости (угол наклона \alpha) с ускорением a. Написать программу для определения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 18:45
Привет! Вот еще темы с ответами:

Решение физической задачи: рассчитать полет камня, брошенного под углом к горизонту - C++
День добрый! Есть проблемка изучаю c++ первый день, прошу помощи по данной задаче. Вот ее условие:Человек,находящийся на краю обрыва...

Найти силу трения, коэффициент трения и начальную скорость вагона. - Механика
Вагон массой 10 в 4 степени кг отцепился от движущегося состава и, двигаясь равнозамедленно, за 20 с прошел путь 20 м, после чего...

Опыты измерения и симуляции - Электроника
Мне нужно провести конкретные опыты, снять с приборов конктретные цифры. Я хотел бы сделать следующтй опыт: составить цепь электрическую,...

Ошибки симуляции в Proteus - Микроконтроллеры
Здравствуйте! Я создал проэкт на CodeVisionAVR (смотрите вложения). Он нормально компилируется. Так как до магазина радиодеталей я не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru