The pages are in English; this contents, the search and the buttons are in Japanese.
Gallery: the athletics stadium
The 400 m track of World Athletics' Facilities Manual with its staggers, curved starts, relay zones and hurdles, the steeplechase's water jump, every field event, a close-up of each start and the finish, the covered 200 m track and the data: lane draws, results, a race replay and the marks of throws and jumps. The pictures share one stylesheet, which is left out of each one's SVG here; drawKyogijo puts it in every drawing unless style: "none" says not to.
The stadium#
sport: "athletics": eight lanes of 1.22 m, a grass infield with the soccer pitch inside it, and each field event where the Marking Plan puts it.
The stadium
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics" });The stadium, tall
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", orientation: "portrait" });A blue track, nine lanes
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { track: "blue", lanes: 9 } });Grass inside, no pitch
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { infield: "grass" } });A stadium that has a track
The pitch is the ground's own size.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", ground: "stade-de-france" });A relay final, with a score
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({
sport: "athletics",
away: { name: "Harbour City Gulls", abbr: "HCG", score: 27, color: "#1d4f91" },
home: { name: "Prairie Ridge Bison", abbr: "PRB", score: 24, color: "#a8452c" },
status: "final",
competition: "Relay final",
});Line drawing, for a printer
Black lines on white, with no colour on the track.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", look: "line-drawing", athletics: { races: "all" } });Night
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", look: "night" });Staggers, hurdles and relays#
races marks the start lines, the breakline, the exchange zones and the hurdles of the races you name, or of "all".
200 m: the stagger is half of 400 m's
Lane 8 starts 26.515 m ahead of lane 1 (Table 2.2.1.6a).
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["200m"] } });400 m: a stagger of 7.037 to 53.030 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["400m"] } });800 m: the breakline
The runners keep their lanes to the line across the track at the end of the first bend.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["800m"] } });4 x 100 m: the exchange zones
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["4x100m"] } });4 x 400 m: zones and breakline
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["4x400m"] } });The hurdles: 100 m, 110 m and 400 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["100m-hurdles", "110m-hurdles", "400m-hurdles"] } });1500 m: the curved start line
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["1500m"] } });Every race at once
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: "all" } });A ten-lane straight
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["100m"], straightLanes: 10 } });The steeplechase#
waterJump puts the pit inside the bend or outside it; the lap, the hurdles and the start of the 3000 m follow.
Water jump inside
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["3000m-steeplechase"], waterJump: "inside" } });Water jump outside
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { races: ["3000m-steeplechase"], waterJump: "outside" } });The water jump
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "water-jump", athletics: { races: ["3000m-steeplechase"] } });A close-up of each start, and the finish#
range: "start" with athletics.start turns the track so that the athletes run to the right (up the page in portrait), with the lane numbers painted behind the line.
100 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "100m" } });110 m hurdles
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "110m-hurdles" } });200 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "200m" } });400 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "400m" } });800 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "800m" } });1500 m: the waterfall
The curved line is an involute of lane 1's circle, so every runner is as far from the finish by the shortest way.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", athletics: { start: "1500m" } });400 m, tall
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", orientation: "portrait", athletics: { start: "400m" } });A start in ink
The same close-up in `look: "line-drawing"`.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "start", look: "line-drawing", athletics: { start: "400m" } });The finish
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "finish" });The finish, tall
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "finish", orientation: "portrait" });The field events#
events switches each one on or off; layout draws one alone at a large scale.
Two events only
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { events: ["shot-put", "high-jump"] } });The track alone
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { events: false } });High jump
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "high-jump" } });Pole vault
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "pole-vault" } });Long jump
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "long-jump" } });Triple jump
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "triple-jump" } });Shot put
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "shot-put" } });Discus throw
The cage, and the 34.92 degree sector.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "discus-throw" } });Hammer throw
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "hammer-throw" } });Javelin throw
The runway, the 8 m arc and the 28.96 degree sector.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", athletics: { layout: "javelin-throw" } });The covered track#
league: "world-athletics-short": a 200 m banked track of six lanes with a 60 m straight.
The covered track
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", league: "world-athletics-short" });The covered 400 m
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", league: "world-athletics-short", athletics: { races: ["400m"] } });60 m hurdles
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", league: "world-athletics-short", athletics: { races: ["60m-hurdles"] } });A part of the track#
range crops to a named part.
A bend
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "bend" });The home straight
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "home-straight" });The infield
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "athletics", range: "infield" });The data#
@johnmorrisdotca/kyogijo-stadiums/athletics: the lane draw, the results, a replay and the marks of throws and jumps.
A lane draw
Names and flags behind the start line; the caller passes the flags as SVG.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { laneDraw } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
const flag = (a, b, c) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 2"><rect width="1" height="2" fill="${a}"/><rect x="1" width="1" height="2" fill="${b}"/><rect x="2" width="1" height="2" fill="${c}"/></svg>`;
const field = [
{ lane: 1, name: "Bromell", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 2, name: "Hughes", country: "GBR", flag: flag("#012169", "#fff", "#c8102e") },
{ lane: 3, name: "Jacobs", country: "ITA", flag: flag("#009246", "#fff", "#ce2b37") },
{ lane: 4, name: "Kerley", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 5, name: "Thompson", country: "JAM", flag: flag("#009b3a", "#000", "#fed100") },
{ lane: 6, name: "Simbine", country: "RSA", flag: flag("#007749", "#e03c31", "#001489") },
];
const svg = laneDraw(field, { race: "100m" }).draw();A lane draw, 400 m
Each athlete stands at the stagger of the lane.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { laneDraw } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
const flag = (a, b, c) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 2"><rect width="1" height="2" fill="${a}"/><rect x="1" width="1" height="2" fill="${b}"/><rect x="2" width="1" height="2" fill="${c}"/></svg>`;
const field = [
{ lane: 1, name: "Bromell", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 2, name: "Hughes", country: "GBR", flag: flag("#012169", "#fff", "#c8102e") },
{ lane: 3, name: "Jacobs", country: "ITA", flag: flag("#009246", "#fff", "#ce2b37") },
{ lane: 4, name: "Kerley", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 5, name: "Thompson", country: "JAM", flag: flag("#009b3a", "#000", "#fed100") },
{ lane: 6, name: "Simbine", country: "RSA", flag: flag("#007749", "#e03c31", "#001489") },
];
const svg = laneDraw(field, { race: "400m" }).draw();Results
The medals, the times, the reaction times and the splits.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { raceResults } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
const flag = (a, b, c) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 2"><rect width="1" height="2" fill="${a}"/><rect x="1" width="1" height="2" fill="${b}"/><rect x="2" width="1" height="2" fill="${c}"/></svg>`;
const field = [
{ lane: 1, name: "Bromell", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 2, name: "Hughes", country: "GBR", flag: flag("#012169", "#fff", "#c8102e") },
{ lane: 3, name: "Jacobs", country: "ITA", flag: flag("#009246", "#fff", "#ce2b37") },
{ lane: 4, name: "Kerley", country: "USA", flag: flag("#b22234", "#fff", "#3c3b6e") },
{ lane: 5, name: "Thompson", country: "JAM", flag: flag("#009b3a", "#000", "#fed100") },
{ lane: 6, name: "Simbine", country: "RSA", flag: flag("#007749", "#e03c31", "#001489") },
];
const results = field.map((entry, i) => ({ ...entry, place: [4, 5, 2, 1, 3, 6][i], time: 9.8 + [3, 5, 1, 0, 2, 6][i] * 0.03, reaction: 0.13 + i * 0.01, splits: [{ distance: 50, time: 5.6 + i * 0.01 }] }));
const svg = raceResults(results, { race: "100m" }).draw();A race replay, the 400 m
Each runner is on the curve of the lane, starting at its stagger; at 20 seconds the field is on the back straight.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { raceReplay } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
import { drawFrame } from "@johnmorrisdotca/kyogijo-stadiums/replay";
const runners = Array.from({ length: 8 }, (_, i) => ({ lane: i + 1, name: "Runner " + (i + 1), time: 44.2 + i * 0.25, reaction: 0.14 }));
const replay = raceReplay(runners, { race: "400m" });
const svg = drawFrame(replay.options, replay.timeline, 20, replay.look);Throws: the best mark
A foul is marked where it was thrown; the best valid mark is picked out.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { fieldMarks } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
const attempts = [{ athlete: "A", distance: 84.2, across: 2 }, { athlete: "A", distance: 88.1, across: -4 }, { athlete: "A", valid: false }, { athlete: "A", distance: 90.7, across: 6 }, { athlete: "A", distance: 86, across: -1 }];
const svg = fieldMarks("javelin-throw", attempts, { surface: { athletics: { layout: "javelin-throw" } } }).draw();Jumps in the pit
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { fieldMarks } from "@johnmorrisdotca/kyogijo-stadiums/athletics";
const jumps = [{ athlete: "B", distance: 8.1 }, { athlete: "B", distance: 8.46, across: 0.3 }, { athlete: "B", distance: 8.28, across: -0.2 }];
const svg = fieldMarks("long-jump", jumps, { surface: { athletics: { layout: "long-jump" } }, labels: true }).draw();