Skip to content

GJK infinite loop #111

@not-fl3

Description

@not-fl3

Following test is always leading to infinite loop on my machine. Something with max_iterationsin intersection_time_of_impact went wrong I guess?

#[test()]
fn gjk_infinite_loop() {
    use cgmath::*;
    use collision::primitive::{Circle, Primitive2, Rectangle};
    use collision::{algorithm::broad_phase::DbvtBroadPhase, algorithm::minkowski::GJK2};

    let gjk: GJK2<f32> = GJK2::new();

    let rect_transform: Decomposed<Vector2<f32>, Basis2<f32>> = Decomposed {
        disp: Vector2::new(164.1754, -13.967552),
        rot: Rotation2::from_angle(Rad(std::f32::consts::PI / 2.)),
        ..Decomposed::one()
    };

    let start_transform: Decomposed<Vector2<f32>, Basis2<f32>> = Decomposed {
        disp: Vector2::new(158.0754, -5.287695),
        ..Decomposed::one()
    };
    let end_transform: Decomposed<Vector2<f32>, Basis2<f32>> = Decomposed {
        disp: Vector2::new(159.39767, -6.6099815),
        ..Decomposed::one()
    };

    let circle = Circle::new(1.);
    let rect = Rectangle::new(50., 10.);

    let contact = gjk.intersection_time_of_impact(
        &circle,
        &start_transform..&end_transform,
        &rect,
        &rect_transform..&rect_transform,
    );
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions