如何配置子弹引擎的速度,而不是物理精度?例如,是否可以增加摩擦力,使物体更快地静止?
目前,我只能跟踪速度优化:
btContactSolverInfo& info = dynamicsWorld->getSolverInfo();
info.m_numIterations = 4;
Run Code Online (Sandbox Code Playgroud) 我有一个3D矢量适合Boost几何作为2D点,并作为一个环:
BOOST_GEOMETRY_REGISTER_POINT_2D(Vector3, float, cs::cartesian, x, y)
BOOST_GEOMETRY_REGISTER_RING( std::vector< Vector3 > )
Run Code Online (Sandbox Code Playgroud)
然后:
结果是两个多边形,它们重叠并具有1个切线边缘.
然后我检查两个多边形的交叉点.在15%的情况下,交叉点结果是空的,这是一个惊喜(较小的多边形可以有1.0f..10.f区域,所以它不是一个角落的情况)
std::deque< Polygon > output;
bg::intersection(bigger_Polygon, mirrored_over_cutting_lineseg_Polygon, output);
// output.size() == 0 in 15% of cases
Run Code Online (Sandbox Code Playgroud)
可能是什么原因?我在调用intersection()之前尝试对每个多边形执行boost :: geometry :: correct(),但它没有帮助.我的想法已经不多了
编辑::
我测试过是否创建新环,使用Boost Geometry类型和双存储类型将有助于:
void my_intersection( std::vector<Vector3>& polyA, std::vector<Vector3>& polyB, std::deque< ... > & output ) {
typedef bg::model::d2::point_xy<double> point_type;
bg::model::ring< point_type > ringA;
bg::model::ring< point_type > ringB;
for( int i = 0; i < (int) polyA.size(); i ++ ) {
bg::append( …Run Code Online (Sandbox Code Playgroud)