use thiserror::Error;
#[cfg(any(
feature = "nalgebra-0_32",
feature = "nalgebra-0_33",
feature = "nalgebra-0_34"
))]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Error)]
pub enum PointConversionError {
#[error("point is at infinity (w ≈ 0)")]
PointAtInfinity,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Error)]
pub enum MotorConstraintError {
#[error("motor violates geometric constraint: s·e₀₁₂₃ ≠ -v·m")]
GeometricConstraintViolation,
#[error("motor has zero weight norm")]
ZeroWeightNorm,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Error)]
pub enum LineConstraintError {
#[error("line violates Plücker condition: direction·moment ≠ 0")]
PluckerConditionViolation,
#[error("line has zero direction")]
ZeroDirection,
}