小编Dtr*_*uck的帖子

配置Bullet Physics以获得速度

如何配置子弹引擎的速度,而不是物理精度?例如,是否可以增加摩擦力,使物体更快地静止?

目前,我只能跟踪速度优化:

btContactSolverInfo& info = dynamicsWorld->getSolverInfo();
info.m_numIterations = 4;
Run Code Online (Sandbox Code Playgroud)

performance bulletphysics

11
推荐指数
1
解决办法
1753
查看次数

Boost Geometry/intersection()似乎返回不一致的结果

我有一个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. 绘制一些非凸多边形()
  2. 绘制线段,切割非凸多边形并将其分为2(较小的多边形通常为三角形)
  3. 在线段上镜像较小的新2个多边形

结果是两个多边形,它们重叠并具有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)

c++ debugging boost boost-geometry

6
推荐指数
1
解决办法
1915
查看次数