import type { Area, Shape } from "../fields.types.ts"; import type { AthleticsFigures } from "../leagues/athletics.ts"; import { type Oval } from "./track.ts"; /** A string of lane numbers painted on the track: the digits, how tall, where they are centred. They stand upright whatever way the page is turned. */ export interface Digits { id: string; feature: string; text: string; x: number; y: number; h: number; /** Drawn on a disc of the plate's colour, in the plate's ink, at a size that reads in a close-up (a tag), not painted on the track. */ tag?: boolean; /** For a number behind a start line: the point of the line in this lane and the unit vector the athlete runs along, so that a tag can be moved back to clear the line. */ from?: readonly [x: number, y: number, fx: number, fy: number]; } /** What a part of a plan adds: shapes and areas in painter's order, and digits. */ export interface Parts { areas: Area[]; shapes: Shape[]; digits: Digits[]; } export declare const emptyParts: () => Parts; /** Add `more` to `into`. */ export declare function addParts(into: Parts, more: Parts): void; /** The path of a stadium: two semicircles of radius `r` joined by straights of length `s`, about the origin. */ export declare const stadiumD: (s: number, r: number) => string; /** * A lane line of the oval, cut where the straight's surface lies over its bends (the straight runs on beyond the oval's, and the Marking Plan draws only the straight's own lines there): the bottom * straight between the bends, the east bend from where it leaves the straight's run-out round to the top, the top straight, and the west bend as far as the straight's starting area. */ export declare function laneLineD(o: Oval, r: number, straight: StraightPlan | undefined): string; /** The radius of the outer edge of an oval's last lane. */ export declare const outerRadius: (o: Oval) => number; /** The straight's geometry: its first and last x (the starting area before the longest race, the run-out beyond the finish line), its lanes and how wide each is. */ export interface StraightPlan { lanes: number; lane: number; x0: number; x1: number; /** The start of the longest race of the straight, in metres before the finish line. */ longest: number; /** The straight's inside edge (the top of lane 1) and its finish line, in the plan's frame: the oval's finish straight runs on, the covered track's lies inside it. */ y0: number; finish: number; } /** The straight that runs on beyond the oval's finish straight (Manual 2.2.2.1): at least six lanes, a starting area of 3 m before its longest race and a run-out of 17 m. */ export declare function straightOf(o: Oval, fig: AthleticsFigures, lanes: number, longest: number): StraightPlan; /** * The straight of a covered track (Rules 41 to 43; the Marking Plan for the Standard Short Track): lanes 1.22 m wide inside the oval, parallel to its straights, with a starting area of 3 m before a * 60 m start line and a run-out beyond the finish line. Its place in the infield is ours: the Rules and the plan give its lanes and its length, not where it lies. */ export declare function indoorStraightOf(o: Oval, fig: AthleticsFigures, lanes: number, length: number): StraightPlan; /** The infield straight of a covered track: its surface, its lane lines, its start area's and run-out's ends and its finish line, and the lane numbers before the finish. */ export declare function indoorStraightParts(st: StraightPlan, numbers: boolean, w: number): Parts; /** The surface of the oval and of the straight, the kerb, the lane lines, the finish line and the numbers before it. */ export declare function ovalParts(o: Oval, fig: AthleticsFigures, straight: StraightPlan | undefined, numbers: boolean, hole?: string): Parts;