Vertical sextant angle distance
An object 100 metres tall seen at a vertical angle of 45° is 100 metres away. Enter the known height and the sextant angle between its top and its base, and get the distance off in the same unit as the height. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Height
- 100
- Vertical angle degrees
- 45
- Decimal places
- 4
- Distance
- 100
Distance off = height / tan(vertical angle). Search intent: vertical sextant angle calculator. No network calls or random seeds are required. Failed jobs are not billed.
What a vertical sextant angle tells you
When you can see an object whose height you know, such as a lighthouse, a tower or a cliff, a sextant lets you measure the vertical angle between its top and its base. The closer you are, the larger that angle becomes; the farther away, the smaller. Distance off is the height divided by the tangent of that angle, which is exactly what the calculator works out. With a height of 100 and an angle of 45°, the distance is also 100, because at that angle the object is as far away as it is tall.
Getting a distance you can trust
Keep the height and the distance in the same unit: the result simply follows the unit of the height. Enter the angle in decimal degrees, converting any minutes first. Use the height of the object you actually measured, not of a nearby one. Small angles call for extra care, because when the object is far away a tiny reading error changes the distance a lot. You can choose how many decimals to show, and the result is rounded only once, half up. It also works well for teaching and practising coastal navigation.
What you can do with it
Teaching
Pinned goldens.
FAQ
How do I find my distance from a lighthouse with a sextant?
Measure the vertical angle between the top of the lighthouse and its base, then enter that angle and the lighthouse height. The calculator divides the height by the tangent of the angle and gives your distance off.
What unit is the distance given in?
The same unit you used for the height. Enter the height in metres and the distance comes out in metres; enter it in feet and you get feet, with no conversion in between.
Why does a 45° angle give a distance equal to the height?
Because the tangent of 45° is exactly 1, so dividing the height by it changes nothing. That is why a height of 100 with an angle of 45° returns a distance of 100.
How do I enter an angle read in degrees and minutes?
Convert it to decimal degrees first: divide the minutes by 60 and add the result to the whole degrees. Typing the minutes straight after a decimal point gives a different angle and a wrong distance.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/geo/vertical-sextant-angle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"height":100,"angle_deg":5}'const res = await fetch("https://api.kit.forhosting.com/geo/vertical-sextant-angle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"height": 100,
"angle_deg": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/vertical-sextant-angle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"height": 100,
"angle_deg": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/vertical-sextant-angle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"height":100,"angle_deg":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"height":100,"angle_deg":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/vertical-sextant-angle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"height": 100,
"angle_deg": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.vertical_sextant_angle",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
How it works
Distance off = height / tan(vertical angle). d = h / tan(α). No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
Inputs, limits and rounding
Optional decimals use half-up once. Outputs echo inputs. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
When to use it
Use when search intent matches. Distance off = height / tan(vertical angle). No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
Integration use cases
Quick check
Free widget.
Automation
Same JSON via API.
Technical questions
Free?
Yes tier A.
Network?
No.
Bad input?
invalid_input.
API?
Yes.
Locales?
EN-only; Nitro hydrates.