Cord/crates/cord-decompile/src/crawler/mod.rs

48 lines
1.3 KiB
Rust

pub mod oracle;
pub mod state;
pub mod scheduler;
pub mod cpu;
use crate::mesh::Vec3;
/// Surface sample collected by a crawler.
#[derive(Debug, Clone, Copy)]
pub struct SurfaceHit {
pub position: Vec3,
pub normal: Vec3,
pub face_id: u32,
}
/// Configuration for the crawler-based decompiler.
#[derive(Debug, Clone)]
pub struct CrawlerConfig {
/// Number of initial probes deployed around the bounding sphere.
pub initial_probes: usize,
/// Number of crawlers deployed per contact point in patrol phase.
pub crawlers_per_contact: usize,
/// Step size as fraction of bounding sphere radius.
pub step_fraction: f64,
/// Distance threshold for surface detection.
pub surface_epsilon: f64,
/// Angle tolerance (radians) for face boundary detection.
pub edge_angle_threshold: f64,
/// Maximum steps before a crawler gives up.
pub max_steps: u32,
/// Scan row spacing as fraction of bounding radius.
pub scan_spacing: f64,
}
impl Default for CrawlerConfig {
fn default() -> Self {
Self {
initial_probes: 128,
crawlers_per_contact: 4,
step_fraction: 0.005,
surface_epsilon: 1e-4,
edge_angle_threshold: 0.3,
max_steps: 10000,
scan_spacing: 0.01,
}
}
}