Advanced C++ API

Advanced functions, detailed intrinsics, error handling, and utility classes for C++ developers.

Functions

Detailed Intrinsics Estimation

Result<IntrinsicsDetailed> alice_lri::estimateIntrinsicsDetailed(const PointCloud::Float &points) noexcept

Estimate detailed sensor intrinsics from a float point cloud.

Parameters:

points – Input point cloud (float precision).

Returns:

Result containing detailed Intrinsics or error status.

Result<IntrinsicsDetailed> alice_lri::estimateIntrinsicsDetailed(const PointCloud::Double &points) noexcept

Estimate detailed sensor intrinsics from a double point cloud.

Parameters:

points – Input point cloud (double precision).

Returns:

Result containing detailed Intrinsics or error status.

JSON Serialization

Result<Intrinsics> alice_lri::intrinsicsFromJsonStr(const AliceString &json) noexcept

Parse Intrinsics from a JSON string.

Parameters:

json – JSON string.

Returns:

Result containing Intrinsics or error status.

AliceString alice_lri::intrinsicsToJsonStr(const Intrinsics &result, int32_t indent = -1) noexcept

Serialize Intrinsics to a JSON string.

Parameters:
  • resultIntrinsics to serialize.

  • indent – Indentation for pretty printing (-1 for compact).

Returns:

JSON string.

Result<Intrinsics> alice_lri::intrinsicsFromJsonFile(const char *path) noexcept

Parse Intrinsics from a JSON file.

Parameters:

path – Path to JSON file.

Returns:

Result containing Intrinsics or error status.

Status alice_lri::intrinsicsToJsonFile(const Intrinsics &result, const char *outputPath, int32_t indent = -1) noexcept

Write Intrinsics to a JSON file.

Parameters:
  • resultIntrinsics to write.

  • outputPath – Output file path.

  • indent – Indentation for pretty printing (-1 for compact).

Returns:

Status of the operation.

Data Structures

Detailed Intrinsics

struct IntrinsicsDetailed

Detailed intrinsic parameters, including scanline details and statistics.

Public Functions

inline explicit IntrinsicsDetailed(const int32_t scanlineCount) noexcept

Construct with a given number of scanlines.

Parameters:

scanlineCount – Number of scanlines.

inline IntrinsicsDetailed(const int32_t scanlineCount, const int32_t verticalIterations, const int32_t unassignedPoints, const int32_t pointsCount, const EndReason endReason) noexcept

Full constructor with all statistics.

Parameters:
  • scanlineCount – Number of scanlines.

  • verticalIterations – Number of vertical iterations.

  • unassignedPoints – Number of unassigned points.

  • pointsCount – Total number of points.

  • endReason – Reason for ending the iterative algorithm.

Public Members

AliceArray<ScanlineDetailed> scanlines

Array of detailed scanlines.

int32_t verticalIterations = 0

Number of vertical iterations performed.

int32_t unassignedPoints = 0

Number of unassigned points.

int32_t pointsCount = 0

Total number of points.

EndReason endReason = EndReason::MAX_ITERATIONS

Reason for ending the process.

struct ScanlineDetailed

Detailed scanline information with uncertainty and voting statistics.

Public Members

ValueConfInterval verticalOffset

Vertical spatial offset with confidence interval.

ValueConfInterval verticalAngle

Vertical angle with confidence interval.

double horizontalOffset

Horizontal spatial offset.

double azimuthalOffset

Azimuthal offset.

int32_t resolution

Horizontal resolution of the scanline.

double uncertainty

Estimated uncertainty.

int64_t houghVotes

Number of Hough transform votes.

uint64_t houghHash

Hash value for Hough voting.

uint64_t pointsCount

Number of points assigned to this scanline.

ScanlineAngleBounds theoreticalAngleBounds

Theoretical angle bounds for the scanline.

bool verticalHeuristic

Whether vertical heuristic was used.

bool horizontalHeuristic

Whether horizontal heuristic was used.

struct ScanlineAngleBounds

Angle bounds for a scanline.

Public Members

Interval lowerLine

Lower angle interval.

Interval upperLine

Upper angle interval.

Mathematical Utilities

struct Interval

Represents a numeric interval [lower, upper].

Public Functions

inline double diff() const noexcept

Get the width of the interval.

Returns:

Difference upper - lower.

bool anyContained(const Interval &other) const noexcept

Check if any part of another interval is contained in this interval.

Parameters:

other – The other interval.

Returns:

True if any part is contained.

void clampBoth(double minValue, double maxValue) noexcept

Clamp both bounds to [minValue, maxValue].

Parameters:
  • minValue – Minimum value.

  • maxValue – Maximum value.

Public Members

double lower

Lower bound of the interval.

double upper

Upper bound of the interval.

struct ValueConfInterval

Value with associated confidence interval.

Public Members

double value

The value.

Interval ci

Confidence interval for the value.

Error Handling

Status and Error Codes

struct Status

Status of an operation, including error code and message.

Public Functions

inline explicit operator bool() const noexcept

Check if status is OK (no error).

Returns:

True if no error.

Public Members

ErrorCode code = ErrorCode::NONE

Error code.

AliceString message = AliceString()

Error message.

Public Static Functions

static inline Status buildOk() noexcept

Build a successful status.

Returns:

Status with no error.

static inline Status buildError(const ErrorCode c) noexcept

Build an error status from code.

Parameters:

c – Error code.

Returns:

Status with error code and message.

static inline Status buildError(const ErrorCode c, const AliceString &msg) noexcept

Build an error status from code and custom message.

Parameters:
  • c – Error code.

  • msg – Custom message.

Returns:

Status with error code and custom message.

enum class alice_lri::ErrorCode

Error codes for Alice LRI operations.

Values:

enumerator NONE

No error.

enumerator MISMATCHED_SIZES

Input arrays have mismatched sizes.

enumerator EMPTY_POINT_CLOUD

Point cloud is empty.

enumerator RANGES_XY_ZERO

At least one point has a range of zero in the XY plane.

enumerator INTERNAL_ERROR

Internal error occurred.

AliceString alice_lri::errorMessage(ErrorCode code)

Get a human-readable error message for an ErrorCode.

Parameters:

code – Error code.

Returns:

Error message string.

Enums

enum class alice_lri::EndReason

Reason for ending the iterative vertical fitting process.

Values:

enumerator ALL_ASSIGNED

All points assigned. This is the normal termination condition.

enumerator MAX_ITERATIONS

Maximum number of iterations reached.

enumerator NO_MORE_PEAKS

No more peaks found in the Hough accumulator.