ForHosting KIT · Developer Utilities

Course Over Ground from Vectors

This course-over-ground calculator adds a heading velocity vector to a current or wind velocity vector and reports the resulting motion across the ground.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Enter both speeds in one unit and both directions as true bearings measured clockwise from north. The result includes course over ground, speed over ground, east and north velocity components, and speed converted to knots. It is a transparent, deterministic calculation for navigation exercises, vehicle-motion estimates, and any problem where two planar velocity vectors combine.

Describe both velocity vectors consistently

Start with the velocity associated with the object's heading: its magnitude goes in heading_speed and its true direction goes in heading_degrees. Then describe the environmental velocity in environment_speed and environment_direction_degrees. The second vector may represent water current, moving air, or another uniform motion of the reference medium. Both direction fields use navigational bearings, so zero degrees is north, 90 degrees is east, 180 degrees is south, and 270 degrees is west. The environmental direction must be the direction toward which the vector moves. This matters for wind data because meteorological reports commonly name the direction from which wind arrives; convert that value by adding 180 degrees and wrapping it into the zero-to-360-degree range before using it. Both magnitudes must use the selected speed_unit. Mixing knots with kilometers per hour produces a numerically valid but physically meaningless sum, so convert the source values first. Bearings should also share the same true-north reference rather than mixing true and magnetic directions. A value of 360 degrees is accepted as an alternative notation for north.

Understand how COG and SOG are calculated

The calculation resolves each input velocity into east and north components. For a navigational bearing, the east component equals speed multiplied by the sine of the bearing, while the north component equals speed multiplied by its cosine. Corresponding components are added to create the ground-relative velocity vector. Its magnitude, found with the Euclidean hypotenuse, is speed over ground. Its direction, found with a two-argument arctangent and normalized to the zero-to-360-degree interval, is course over ground. The response also exposes east_velocity and north_velocity so you can audit the result or reuse the components in another calculation. Positive east and north values indicate motion toward those directions; negative values indicate west or south. speed_over_ground remains in the selected unit, while speed_over_ground_knots supplies a convenient normalized value for marine and aviation workflows. Outputs are rounded to six decimal places for stable results across the API and browser execution. If the two vectors cancel exactly, speed is zero and no course field is returned because a stationary resultant has no defined direction.

Apply the result with realistic limits

Use course over ground as the direction of the combined motion, not automatically as a steering instruction. The calculator answers a forward vector-addition question: given these two velocities, where and how fast does the object move over the ground? It does not solve the inverse problem of choosing a heading to achieve a desired track. The model also assumes that both vectors remain constant throughout the interval being considered. Real currents vary with tide, depth, river flow, and location, while winds vary with altitude, terrain, gusts, and time. A vessel or aircraft may experience leeway, aerodynamic effects, waves, or control changes that are not represented by a single supplied heading vector. For planning, split a long route into legs with locally appropriate inputs and recalculate whenever conditions change. For operational navigation, compare estimates with current charts, forecasts, instruments, position fixes, and applicable professional procedures. The deterministic result is especially useful for instruction, scenario comparison, and short-interval estimates because every reported value follows directly from the two supplied vectors and can be independently checked from the component fields.

Estimate a vessel's ground track

Add a boat's through-water heading velocity to a tidal-current vector to estimate COG and SOG for one route leg.

Study wind effect on motion

Represent a vehicle's air-relative velocity and a wind-toward vector to inspect their combined east and north movement.

Teach navigational vector addition

Show how bearings become components and how those components produce a resultant speed and direction.

What does an API request cost?

Each API request costs $0.002. The same deterministic calculation can also run in the browser.

Are directions measured from north or east?

Directions are true bearings measured clockwise from north: north is 0 degrees and east is 90 degrees.

Should wind direction be entered as from or toward?

Enter the direction toward which the wind velocity moves. Add 180 degrees to a meteorological from-direction and wrap the result to the normal bearing range.

Can the two input speeds use different units?

No. Convert both magnitudes to the unit selected in speed_unit before calculating.

Why can course over ground be omitted?

When equal opposing vectors cancel, speed over ground is zero and a stationary vector has no defined course.

Does this calculate the heading needed for a desired course?

No. It computes the resultant ground motion from a known heading vector and environmental vector; it does not solve backward for a required heading.

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.

POSThttps://api.kit.forhosting.com/geo/course-over-ground

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.

curl -X POST https://api.kit.forhosting.com/geo/course-over-ground \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"heading_speed":12,"heading_degrees":90,"environment_speed":3,"environment_direction_degrees":180}'
{
  "heading_speed": 12,
  "heading_degrees": 90,
  "environment_speed": 3,
  "environment_direction_degrees": 180
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "geo.course_over_ground",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →