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

Трение и Bullet - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ OpenMP Код работает не совсем адекватно! http://www.cyberforum.ru/cpp/thread1595123.html
Здраствуйте, у меня така вот задачка: Напишите параллельную программу, которая заполняет массив из 100000 чисел случайными числами из диапазона и находит минимальное и максимальное значение чисел из массива. Заполнение массива числами и нахождения минимального и максимального значений должны проводиться в параллельных секциях кода. Код: #include "stdafx.h"
C++ Предложить эффективный алгоритм умножения числа на дробь в длинной арифметике Нам дано длинное натуральное число, представленное в виде динамического массива: 1) разряды числа записываются от старшего к младшему; 2) нули до первого значащего элемента не изменяют число (т.е. массивы 52957172582 и 00052957172582 представляют одно и то же число). Также нам даны числитель и *знаменатель несократимой обыкновенной дроби. Задача: предложить эффективный алгоритм... http://www.cyberforum.ru/cpp/thread1592976.html
Программа,выводящая список запущенных процессов в порядке присвоенного им ID (по убыванию) C++
Нужна программа с++, выводящая список запущенных процессов в порядке присвоенного им ID (по убыванию)
C++ Программирование Winlogon (создание своего варианта входа в windows)
Добрый вечер, такое вопрос: как создать свой вариант входа в систему windows, т.е. свой winlogon вход будет осуществляться по RFID карте, хочу написать приложение, которое при входе в систему считывает карту, подключается к БД (будет сервер авторизации в локальной сети), получает разрешение на запуск системы. Искал про userinit.exe, winlogon.exe, не могу понять, как своему приложению...
C++ C++ С вставкой подпрограммы асемблера http://www.cyberforum.ru/cpp/thread1591491.html
Добрый день. Есть задание написать программу используя ввод и вывод С++, а расчеты выполнить с помощью ассемблера. Решил начать с малого и рассчитать часть программы. Y=MAX(A,A+B) Вводим А и В В регистр 0 заносим А в регистр 1 заносим А+В вызываем подпрограмму МАХ. сравниваем р0 и р1 регистры выполняем переход если р0-р1 больше нуля. меняем регистры местами (нужное число будет лежать в...
C++ Сканирование и ввод капчи Нужна программа, которая способна считывать и вводить капчу в определенное поле. Капча всегда в одном формате, одним шрифтом. Возможно ли реализовать подобное с помощью С++, если нет, то с помощью какого? подробнее

Показать сообщение отдельно
Lilim
6 / 6 / 0
Регистрация: 24.12.2011
Сообщений: 53

Трение и Bullet - C++

28.11.2015, 17:34. Просмотров 294. Ответов 0
Метки (Все метки)

Возникла проблема с трением Кинетического тела.


Исходные условия таковы:

Имеется большая сфера (к примеру R=1000) символизирующая планету. На небольшом расстоянии от её поверхности (100) помещено динамическое тело – куб небольшой массы. Вектор гравитации определяю сам с таким расчетом, что на поверхности сила притяжения равна земной. Сама планета как btCollisionShape не является сферой, а разбита на прямоугольные области-чанки которые и задаются фигурами столкновения. Так же планета вращается вокруг своей оси.


Что я хочу получить:

Куб под действием силы притяжения падает на вращающуюся планету, пару раз кувыркается и прикованный гравитацией вращается вмести с ней лежа на её поверхности.


Что я имею:

Куб падает, подскакивает и под действием гравитации остаётся в контакте с поверхностью но не вращается вместе с ней вокруг оси планеты. Это выглядит как будто планета «проезжает» под кубом не вступая с ним в зацепление за счет трения.(Вспомнился анекдот – «Если земля действительно вертится то мой дом должен проехать где-то рядом»)


Теперь код:

C++
1
2
3
4
5
6
7
8
9
10
11
// Инициализация мира
m_pCollisionConfiguration = new btDefaultCollisionConfiguration();
m_pCollisionDispatcher = new btCollisionDispatcher(m_pCollisionConfiguration);
m_pBroadphase = new btDbvtBroadphase();
m_Solver = new btSequentialImpulseConstraintSolver();
m_pWorld = new btDiscreteDynamicsWorld( m_pCollisionDispatcher, 
                        m_pBroadphase, 
                        m_Solver, m_pCollisionConfiguration);
/*m_pWorld->getSolverInfo().m_solverMode |=
SOLVER_USE_2_FRICTION_DIRECTIONS|SOLVER_RANDMIZE_ORDER;*/ // нашел в одном из примеров но не помогло
m_pWorld->setGravity( btVector3(0.0, 0.0, 0.0) );
C++
1
2
3
4
5
6
7
8
9
10
11
// Создание куба
btCollisionShape* shape = new btBoxShape( btVector3(5.0,5.0,5.0) );
btVector3 localInertia(0,0,0);
float mass = (float)m_designs.size();//каждая конструкция весит по одной единицы массы
shape->calculateLocalInertia(mass,localInertia);
btRigidBody::btRigidBodyConstructionInfo info(mass, nullptr, shape, localInertia);
info.m_friction = btScalar(0.5);
info.m_rollingFriction = btScalar(0.3);
info.m_restitution = 0.5f;
m_physic_object= new btRigidBody(info);
m_physic_object->forceActivationState(DISABLE_DEACTIVATION);
C++
1
2
3
4
5
6
7
8
9
10
//Так я добавляю новые чанки-поверхности планеты
btRigidBody* ptr_body = new btRigidBody(0,nullptr,new_obj->ptr_shape);
ptr_body->setWorldTransform( btTransform(new_obj->basis_quat, new_obj->pos_surface) );
ptr_body->setCollisionFlags(btCollisionObject::CF_KINEMATIC_OBJECT);
ptr_body->setFriction(80.0f); // Явно перебор но я в отчаяние
ptr_body->setRollingFriction(50.0f);
ptr_body->setRestitution(0.5f);
ptr_body->setActivationState(DISABLE_DEACTIVATION);
AddObject(ptr_body);//добавляем твердое тело в физ. мир
m_surfaces.emplace_back(new_obj->ptr_shape, ptr_body);//добавляем пару тело-форма в m_surfaces
C++
1
2
//Планета вертится и так я меняю положение чанков
surface->setCenterOfMassTransform( btTransform(new_basis_quat, new_pos_surface) );
Пробовал разобраться в исходниках Bullet но там все как-то неявно и непонятно где в расчеты вступает трение.
Подскажите кто что знает, помогите кто чем может.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru