2.13 几何部分物体不动蓝箭头正常动

我这个实验有两个问题:
1.不太清楚一开始把物体更改到 -5 0 0 是通过 translation 更改吗?而且我改这个物体位置仍然在 0 0 0,没有反应。


这难道是和之前 1.几必做实验有关系吗 :thinking:因为当时我对这个实验提交不理解,做了一半就做别的去了导致后面截止了也就都没做。
还有我写了 Scene::simulation_update Object::update forward_euler_step,里面有更新物体位置的部分:

    // 将物体的位置移动到下一步状态处,但暂时不要修改物体的速度。
    center = next_state.position;
    // 遍历 all_objects,检查该物体在下一步状态的位置处是否会与其他物体发生碰撞。
    for (auto object : all_objects)
    {
        (void)object;

        // 检测该物体与另一物体是否碰撞的方法是:
        // 遍历该物体的每一条边,构造与边重合的射线去和另一物体求交,如果求交结果非空、
        // 相交处也在这条边的两个端点之间,那么该物体与另一物体发生碰撞。
        // 请时刻注意:物体 mesh 顶点的坐标都在模型坐标系下,你需要先将其变换到世界坐标系。
        for (size_t i = 0; i < mesh.edges.count(); ++i)
        {
            array<size_t, 2> v_indices = mesh.edge(i);
            (void)v_indices;
            // v_indices 中是这条边两个端点的索引,以这两个索引为参数调用 GL::Mesh::vertex
            // 方法可以获得它们的坐标,进而用于构造射线。
            if (BVH_for_collision)
            {
            } 
            else
            {
            }
            // 根据求交结果,判断该物体与另一物体是否发生了碰撞。
            // 如果发生碰撞,按动量定理计算两个物体碰撞后的速度,并将下一步状态的位置设为
            // current_state.position,以避免重复碰撞。
        }
    }
    // 将上一步状态赋值为当前状态,并将物体更新到下一步状态。
    prev_state = current_state;
    velocity = next_state.velocity;  // 更新速度

可以看到 center 和 velocity 都有更新


// 更新所有物体状态
    while (remaining_time >= time_step)
    {
        for (auto& object : all_objects)
        {
            object->update(all_objects);
        }
        remaining_time -= time_step;
    }

update 确实被调用了,前向欧拉写的没问题,这是什么原因呢?导致物体不动,箭头的轨迹倒是正常的,箭头可以正常移动。 :fearful: :cold_sweat:

是需要先完成必做实验的