import { vec3 } from "./Vector";
import { Bounds } from "./Bounds";
/** A line, consisting of an origin and a direction */
export interface Line {
    point: vec3;
    direction: vec3;
}
/** Convenience function for creating a Line, cloning the parameters */
export declare function createLine(point: vec3, direction: vec3): Line;
/** Convenience function for cloning a Line */
export declare function cloneLine(line: Line): Line;
/** An alias for Line for limited lines */
export interface LineSegment {
    point: vec3;
    border: vec3;
}
/**
 * Get the line that is given by the line segment
 * @param segment
 * @returns {Line}
 */
export declare function convertLineSegmentToLine(segment: LineSegment): Line;
/** A plane, described by its normal and a point that lies in it */
export interface Plane {
    normal: vec3;
    point: vec3;
}
/** Convenience function for creating a Plane, cloning the parameters */
export declare function createPlane(point: vec3, normal: vec3): Plane;
/** Convenience function for cloning a Plane */
export declare function clonePlane(plane: Plane): Plane;
/** A plane segment, described by a point locating the start and two directions */
export interface PlaneSegment {
    point: vec3;
    borderU: vec3;
    borderV: vec3;
}
/**
 * Get the plane that the segment resides in. The normal of the plane is the cross product of the two border vectors.
 * @param segment
 * @returns {Plane}
 */
export declare function convertPlaneSegmentToPlane(segment: PlaneSegment): Plane;
/**
 * Create a planar (in the xz-plane) plane segment that is given by the lower part of the cube given by the bounds.
 * @param bounds
 * @returns {PlaneSegment}
 */
export declare function convertBoundsToXZPlaneSegment(bounds: Bounds): PlaneSegment;
/** The transformation of an object consists of a position and 3 rotations in radians */
export interface Transformation {
    position: vec3;
    /** given in radians! */
    rotation: vec3;
}
/** Convenience function for creating a Transformation, cloning the parameters, rotation must be radinas already */
export declare function createTransformation(position: vec3, rotation: vec3): Transformation;
/** Convenience function for cloning a Transformation */
export declare function cloneTransformation(transformation: Transformation): Transformation;
