phys-collision 2.0.1-beta.0

Provides collision detection ability
// Copyright (C) 2020-2025 phys-collision authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use glam_det::nums::f32x4;
use glam_det::{UnitQuatx4, Vec3x4};
use paste::paste;
use test::Bencher;

use crate::collision_tasks::benches::common::{BenchShapePairTest, WithContainer};
use crate::collision_tasks::tests::common::{ConvexHullInput, TestInput};
use crate::collision_tasks::ShapeWideTester;
use crate::convex_contact_manifold::Convex4ContactManifoldWide;
use crate::shapes::{ConvexHullWide, CylinderWide};
use crate::traits::PairWideTest;
use crate::{ConvexHullId, Cylinder, ShapeContainer};

struct CylinderConvexHullBench;

impl_bench!(
    CylinderConvexHullBench,
    CylinderWide,
    ConvexHullWide,
    Convex4ContactManifoldWide,
    4
);

//cargo +nightly bench  --features serde,unstable  --package phys_collision --lib
// collision_tasks::benches::cylinder_convex_hull

type InputType = TestInput<Cylinder, ConvexHullInput>;
type BenchType = TestInput<Cylinder, ConvexHullId>;
bench!(InputType , BenchType,CylinderConvexHullBench,"cylinder_convex_hull/",
    <0,input01_cylinder_cap_close_to_convex_face>,
    <1,input02_cylinder_cap_tangent_to_convex_face>,
    <2,input03_cylinder_cap_penetrate_convex_face>,
    <3,input04_cylinder_x_90_edge_close_to_convex_face>,
    <0,input05_cylinder_x_90_edge_tangent_to_convex_face>,
    <0,input06_cylinder_x_90_edge_penetrate_convex_face>,
    <0,input07_cylinder_edge_penetrate_convex_face>,
    <0,input08_no_contact>,
    <0,input09_cylinder_bottom_cap_close_to_convex_face>,
    <0,input10_cylinder_cap_close_to_big_convex_face>,
    <0,input11_cylinder_cap_close_to_convex_vertex>,
    <0,input12_cylinder_cap_tangent_convex_vertex>,
    <0,input13_cylinder_cap_penetrate_convex_vertex>,
    <0,input14_cylinder_edge_penetrate_convex_vertex>,
    <0,input15_create_min_contact>,
    <0,input16_near_zero_angle_between_axis_and_edge_plane>,
    <0,input17_cylinder_face_and_convex_face_one_contact_point>,
    <0,input18_center_overlap>
);