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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как мне исправить код http://www.cyberforum.ru/cpp-beginners/thread740037.html
Здравствуйте! Помогите, не могу понять, в чем проблема. Условие задачи: преобразовать последовательность, добавив найменьшее количество символов так, чтобы последовательность стала палиндромом. Т.е. frfa -> frfafrf, или, например, abcdc -> abcdcba. Что мне нужно исправить в коде? Программа имеет ноль ошибок, но не работает.#include "stdafx.h" #include <string.h> #include <iostream> #include...
C++ На С++ вычисление значения функции вот такая вот функция, помогите пожалуйста на С++ ее написать http://www.cyberforum.ru/cpp-beginners/thread740030.html
C++ Найти среднее арифметическое положительных чисел
Помогите пожалуйста написать две программы! 2. С клавиатуры заданы три числа. Найти среднее арифметическое положительных чисел. Заранее большое спасибо!
Программа на С++ для вычисления арифметического выражения C++
помогите пожалуйста написать программу, для вычисления ниже приведенного выражения само выражение
C++ Непосредственно классы http://www.cyberforum.ru/cpp-beginners/thread740012.html
Имеется метод класса: void display() { gotoxy(0,5); cout << "\n"; cout << "Количество машин: " << passCount; cout << " Сумма денег: " << summ; } Данный метод выводит Количество машин, и сумму денег.
C++ Сформировать вектор Помогите, пожалуйста)) Сформировать вектор из самого отдаленного от 4-го столбика, при чем величина расстояния задается формулой подробнее

Показать сообщение отдельно
victorian
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 14

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

20.12.2012, 18:45. Просмотров 327. Ответов 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;
    }
}
но получилось не очень, как мне доработать метод, что бы появилось трение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru