Tangent length
tangent_length_m
Tangent length T (m)
Scores if within ±3% of the reference value.
Computes the geometric elements of a simple horizontal circular curve given the radius, deflection angle, and intersection-point chainage, per AGRD Part 3. Derives tangent length (T = R tan(delta/2)), arc length, external distance, mid-ordinate, and PC/PT chainages. Used in road and rail alignment design to set out curve geometry in the field.
with-tool: The model is given an executable Python calculator script.
Standards
One template produces many comparable benchmark tasks while keeping the scoring contract fixed.
01
The reusable contract shown on this page.
02
An archetype and site context are sampled.
03
Inputs may be hidden at harder tiers.
04
The model responds with the declared outputs.
Inputs the model receives, and the outputs it is scored on.
3 inputs
Included directly in every task prompt.
Curve radius
curve_radius_m
Horizontal curve radius R
Deflection angle deg
deflection_angle_deg
Deflection (intersection) angle Δ between tangents
Visible in easier tasks and withheld in one or more harder tiers.
Ip chainage
ip_chainage_m
Chainage of the intersection point (IP)
Hidden at hard difficulty.
6 outputs
tangent_length_m
Tangent length T (m)
Scores if within ±3% of the reference value.
arc_length_m
Arc length L (m)
Scores if within ±3% of the reference value.
external_distance_m
External distance E (m)
Scores if within ±3% of the reference value.
mid_ordinate_m
Mid-ordinate M (m)
Scores if within ±3% of the reference value.
pc_chainage_m
Chainage of the point of curvature PC (m)
Scores if within ±3% of the reference value.
pt_chainage_m
Chainage of the point of tangency PT (m)
Scores if within ±3% of the reference value.
Each template is sampled at three tiers. Harder tiers may hide inputs, forcing the model to infer them from the scenario description.
All inputs given
All parameters given, gentle curve on a rural highway
All inputs given
All parameters given, any road type and curve geometry
Some inputs hidden
IP chainage hidden — agent must back-calculate from PC chainage and tangent length
Hidden inputs
Prompt replacement text
The PC (point of curvature) is at chainage {{ pc_chainage_m }} m
The exact instruction and parameter contract used to generate this task, pinned to the published library source.
/workspace
Teal lines show Jinja input conditions, not task visibility policy. A line renders only when that input or tool is visible.
1You are a senior civil engineer specializing in road geometry and horizontal alignment design.2 3## Problem4 5Calculate the full set of horizontal curve elements for a simple circular curve.6 7## Given8 9| Parameter | Value | Unit |10|-----------|-------|------|11| Curve radius (R) | {{ curve_radius_m }} | m |12| Deflection angle (Δ) | {{ deflection_angle_deg }} | degrees |13{% if ip_chainage_m is defined %}14| IP chainage | {{ ip_chainage_m }} | m |15{% endif %}16{% if pc_chainage_m is defined and ip_chainage_m is not defined %}17 18### Additional Information19 20{{ replacement_text }}21{% endif %}22{% if archetype_description is defined %}23 24### Site Conditions25 26{{ archetype_description }}27{% endif %}28 29{% if tool_available %}30## Available Tool31 32A curve elements calculation tool is available at `/workspace/{{ meta.name }}_calc.py`. Run it with:33 34```bash35python3 /workspace/{{ meta.name }}_calc.py --help36```37 38You may use this tool to verify your calculations or compute values directly.39{% endif %}40 41## Required42 43Calculate the following:44 451. Tangent length T (m)462. Arc length L (m)473. External distance E (m)484. Mid-ordinate M (m)495. PC chainage (m) — chainage of the point of curvature506. PT chainage (m) — chainage of the point of tangency51 52## Applicable Standards53 54- Austroads Guide to Road Design Part 3 (AGRD Part 3)55 56## Constraints57 58- No internet access is available. Work from engineering knowledge and the provided tool.59- Use the following standard horizontal curve formulas:60 - Tangent length: T = R × tan(Δ/2)61 - Arc length: L = R × Δ (where Δ is in radians)62 - External distance: E = R × (1/cos(Δ/2) − 1)63 - Mid-ordinate: M = R × (1 − cos(Δ/2))64 - PC chainage = IP chainage − T65 - PT chainage = PC chainage + L66{% if ip_chainage_m is not defined %}67 - IP chainage = PC chainage + T (back-calculate from the given PC chainage)68{% endif %}69- Convert the deflection angle from degrees to radians before applying trigonometric functions.70 71## Output Format72 73Show your step-by-step working in Markdown. At the end of your solution, include a JSON block with your final answers in exactly this format:74 75```json76{77 "tangent_length_m": <numeric_value>,78 "arc_length_m": <numeric_value>,79 "external_distance_m": <numeric_value>,80 "mid_ordinate_m": <numeric_value>,81 "pc_chainage_m": <numeric_value>,82 "pt_chainage_m": <numeric_value>83}84```85 86Write your complete solution to `/workspace/output.md`.87 Each generated task is drawn from one of these realistic scenario bands.
Site contexts ground each scenario in a real locale the model can use to infer hidden values.
urban_intersection
Urban intersection approach with tight curve radius and large deflection angle
rural_highway
Rural two-lane highway with large-radius sweeping curves
motorway_ramp
Motorway on/off ramp with moderate radius and variable deflection
residential_street
Low-speed residential street with tight geometry
sydney-cbd-intersection-urban-intersection-preview — hard difficulty, some inputs hidden.
Urban intersection approach with tight curve radius and large deflection angle. sydney-cbd-intersection. Required outputs: tangent_length_m, arc_length_m, external_distance_m, mid_ordinate_m, pc_chainage_m, pt_chainage_m
Scenario context and visible inputs.
Executable tool: curve-elements_calc.py
Inputs withheld at this difficulty.
Ip chainage
ip_chainage_m
Stand-in text in the prompt
The PC (point of curvature) is at chainage {{ pc_chainage_m }} m
The scored JSON answer schema.
{
"tangent_length_m": <number>,
"arc_length_m": <number>,
"external_distance_m": <number>,
"mid_ordinate_m": <number>,
"pc_chainage_m": <number>,
"pt_chainage_m": <number>
}