{
  "_id": "6a10345dacfb0bcc41c98fd9",
  "Type": "Package",
  "Package": "nvctr",
  "Title": "The n-vector Approach to Geographical Position Calculations\nusing an Ellipsoidal Model of Earth",
  "Version": "0.1.7",
  "Authors@R": "c(person(given = \"Enrico\",\nfamily = \"Spinielli\",\nrole = c(\"aut\", \"cre\"),\nemail = \"enrico.spinielli@eurocontrol.int\",\ncomment = c(ORCID = \"0000-0001-8584-9131\")),\nperson(given = \"EUROCONTROL\",\nrole = c(\"cph\", \"fnd\")))",
  "Maintainer": "Enrico Spinielli <enrico.spinielli@eurocontrol.int>",
  "Description": "The n-vector framework uses the normal vector to the Earth\nellipsoid (called n-vector) as a non-singular position\nrepresentation that turns out to be very convenient for\npractical position calculations.  The n-vector is simple to use\nand gives exact answers for all global positions, and all\ndistances, for both ellipsoidal and spherical Earth models.\nThis package is a translation of the 'Matlab' library from FFI,\nthe Norwegian Defence Research Establishment, as described in\nGade (2010) <doi:10.1017/S0373463309990415>.",
  "License": "MIT + file LICENSE",
  "URL": "https://nvctr.ansperformance.eu,\nhttps://github.com/euctrl-pru/nvctr",
  "BugReports": "https://github.com/euctrl-pru/nvctr/issues",
  "VignetteBuilder": "knitr",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "RoxygenNote": "7.3.3",
  "Repository": "https://euctrl-pru.r-universe.dev",
  "Date/Publication": "2025-12-13 14:18:57 UTC",
  "RemoteUrl": "https://github.com/euctrl-pru/nvctr",
  "RemoteRef": "HEAD",
  "RemoteSha": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-12 07:48:54 UTC",
    "User": "root"
  },
  "Author": "Enrico Spinielli [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-8584-9131>),\nEUROCONTROL [cph, fnd]",
  "MD5sum": "a7f9ad5058ff8ffd9e5299c3f5f53421",
  "_user": "euctrl-pru",
  "_type": "src",
  "_file": "nvctr_0.1.7.tar.gz",
  "_fileid": "dc674f84316ecbb49ba0b0ace130791b5ffb339500544afc41ef5e9d21697a2f",
  "_filesize": 499212,
  "_sha256": "dc674f84316ecbb49ba0b0ace130791b5ffb339500544afc41ef5e9d21697a2f",
  "_created": "2026-05-12T07:48:54.000Z",
  "_published": "2026-05-22T10:47:57.587Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77364572350,
      "time": 119,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6938562317"
    },
    {
      "job": 77364572566,
      "time": 126,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6938562615"
    },
    {
      "job": 77364572416,
      "time": 104,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6938555756"
    },
    {
      "job": 77364572407,
      "time": 95,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6938553180"
    },
    {
      "job": 77364572151,
      "time": 215,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6938523736"
    },
    {
      "job": 77364572103,
      "time": 108,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7158684529"
    },
    {
      "job": 77364572990,
      "time": 90,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6938551722"
    },
    {
      "job": 77364572662,
      "time": 88,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6938550815"
    },
    {
      "job": 77364572543,
      "time": 66,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6938544694"
    }
  ],
  "_buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/euctrl-pru/nvctr",
  "_commit": {
    "id": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
    "author": "Enrico Spinielli <enrico.spinielli@eurocontrol.int>",
    "committer": "Enrico Spinielli <enrico.spinielli@eurocontrol.int>",
    "message": "submission finally\n",
    "time": 1765635537
  },
  "_maintainer": {
    "name": "Enrico Spinielli",
    "email": "enrico.spinielli@eurocontrol.int",
    "login": "espinielli",
    "mastodon": "@espinielli@mstdn.social",
    "bluesky": "@espinielli.bsky.social",
    "linkedin": "in/espinielli",
    "orcid": "0000-0001-8584-9131",
    "uuid": 891692
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "pracma",
      "role": "Imports"
    },
    {
      "package": "bookdown",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "geosphere",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    }
  ],
  "_owner": "euctrl-pru",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-47",
      "n": 5
    },
    {
      "week": "2025-50",
      "n": 10
    }
  ],
  "_tags": [],
  "_topics": [
    "geographical-positions",
    "n-vector"
  ],
  "_stars": 12,
  "_contributors": [
    {
      "user": "espinielli",
      "count": 123,
      "uuid": 891692
    }
  ],
  "_userbio": {
    "uuid": 10348651,
    "type": "organization",
    "name": "Aviation Intelligence Unit - EUROCONTROL",
    "description": "The Aviation Intelligence Unit / Performance Review Unit of EUROCONTROL."
  },
  "_downloads": {
    "count": 175,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/nvctr"
  },
  "_devurl": "https://github.com/euctrl-pru/nvctr",
  "_searchresults": 32,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/nvctr.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/euctrl-pru/nvctr",
  "_realowner": "euctrl-pru",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2019-03-08"
    },
    {
      "version": "0.1.4",
      "date": "2020-10-28"
    },
    {
      "version": "0.1.7",
      "date": "2025-12-13"
    }
  ],
  "_exports": [
    "%>%",
    "along_track_distance",
    "altitude_azimuth_distance",
    "cross_track_distance",
    "cross_track_intersection",
    "deg",
    "lat_lon2n_E",
    "n_E_and_wa2R_EL",
    "n_E2lat_lon",
    "n_E2R_EN",
    "n_EA_E_and_n_EB_E2p_AB_E",
    "n_EA_E_and_p_AB_E2n_EB_E",
    "n_EB_E2p_EB_E",
    "p_EB_E2n_EB_E",
    "R_Ee",
    "R_EL2n_E",
    "R_EN2n_E",
    "R2xyz",
    "R2zyx",
    "rad",
    "unit",
    "xyz2R",
    "zyx2R"
  ],
  "_help": [
    {
      "page": "along_track_distance",
      "title": "Compute the along-track distance from a great circle arc",
      "concept": [
        "utilities"
      ],
      "topics": [
        "along_track_distance"
      ]
    },
    {
      "page": "altitude_azimuth_distance",
      "title": "Calculate the altitude, azimuth and distance of B from A",
      "concept": [
        "utilities"
      ],
      "topics": [
        "altitude_azimuth_distance"
      ]
    },
    {
      "page": "cross_track_distance",
      "title": "Compute the cross-track distance from a great circle arc",
      "concept": [
        "utilities"
      ],
      "topics": [
        "cross_track_distance"
      ]
    },
    {
      "page": "cross_track_intersection",
      "title": "Calculate cross-track intersection",
      "concept": [
        "utilities"
      ],
      "topics": [
        "cross_track_intersection"
      ]
    },
    {
      "page": "deg",
      "title": "Convert angle in radians to degrees",
      "concept": [
        "helpers"
      ],
      "topics": [
        "deg"
      ]
    },
    {
      "page": "lat_lon2n_E",
      "title": "Convert (geodetic) latitude and longitude to n-vector",
      "topics": [
        "lat_lon2n_E"
      ]
    },
    {
      "page": "n_E_and_wa2R_EL",
      "title": "Find 'R_EL' from n-vector and wander azimuth angle",
      "topics": [
        "n_E_and_wa2R_EL"
      ]
    },
    {
      "page": "n_E2lat_lon",
      "title": "Convert n-vector to latitude and longitude",
      "topics": [
        "n_E2lat_lon"
      ]
    },
    {
      "page": "n_E2R_EN",
      "title": "Find the rotation matrix R_EN from n-vector",
      "topics": [
        "n_E2R_EN"
      ]
    },
    {
      "page": "n_EA_E_and_n_EB_E2p_AB_E",
      "title": "Find the delta position from two positions A and B",
      "topics": [
        "n_EA_E_and_n_EB_E2p_AB_E"
      ]
    },
    {
      "page": "n_EA_E_and_p_AB_E2n_EB_E",
      "title": "Find position B from position A and delta",
      "topics": [
        "n_EA_E_and_p_AB_E2n_EB_E"
      ]
    },
    {
      "page": "n_EB_E2p_EB_E",
      "title": "Convert n-vector to cartesian position vector in meters",
      "topics": [
        "n_EB_E2p_EB_E"
      ]
    },
    {
      "page": "nvctr",
      "title": "nvctr: non-singular geographical position calculations",
      "topics": [
        "nvctr-package",
        "nvctr"
      ]
    },
    {
      "page": "p_EB_E2n_EB_E",
      "title": "Convert cartesian position vector in meters to n-vector",
      "topics": [
        "p_EB_E2n_EB_E"
      ]
    },
    {
      "page": "R_Ee",
      "title": "Select the axes of the coordinate frame E",
      "topics": [
        "R_Ee"
      ]
    },
    {
      "page": "R_EL2n_E",
      "title": "Find n-vector from the rotation matrix (direction cosine matrix) 'R_EL'",
      "topics": [
        "R_EL2n_E"
      ]
    },
    {
      "page": "R_EN2n_E",
      "title": "Find n-vector from R_E",
      "topics": [
        "R_EN2n_E"
      ]
    },
    {
      "page": "R2xyz",
      "title": "Find the three rotation angles about new axes in the xyz order from a rotation matrix",
      "topics": [
        "R2xyz"
      ]
    },
    {
      "page": "R2zyx",
      "title": "Find the three angles about new axes in the zyx order from a rotation matrix",
      "topics": [
        "R2zyx"
      ]
    },
    {
      "page": "rad",
      "title": "Convert angle in degrees to radians.",
      "concept": [
        "helpers"
      ],
      "topics": [
        "rad"
      ]
    },
    {
      "page": "unit",
      "title": "Make input vector unit length, i.e. norm == 1",
      "concept": [
        "helpers"
      ],
      "topics": [
        "unit"
      ]
    },
    {
      "page": "xyz2R",
      "title": "Create a rotation matrix from 3 angles about new axes in the xyz order.",
      "topics": [
        "xyz2R"
      ]
    },
    {
      "page": "zyx2R",
      "title": "Create a rotation matrix from 3 angles about new axes in the zyx order.",
      "topics": [
        "zyx2R"
      ]
    }
  ],
  "_pkglogo": "https://github.com/euctrl-pru/nvctr/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/euctrl-pru/nvctr/raw/HEAD/README.md",
  "_rundeps": [
    "magrittr",
    "pracma"
  ],
  "_vignettes": [
    {
      "source": "position-calculations.Rmd",
      "filename": "position-calculations.html",
      "title": "Simple and Exact Solutions to Position Calculation",
      "author": "Enrico Spinielli",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Example 1: A and B to delta",
        "Solution",
        "Example 2: B and delta to C",
        "Example 3: ECEF-vector to geodetic latitude",
        "Example 4: Geodetic latitude to ECEF-vector",
        "Example 5: Surface distance",
        "Spherical model",
        "Elliptical model (WGS-84 ellipsoid)",
        "Example 6: Interpolated position",
        "Example 7: Mean position (center/midpoint)",
        "Example 8: A and azimuth/distance to B",
        "Example 9: Intersection of two paths",
        "Example 10: Cross track distance (cross track error)",
        "Example 11: Cross track intersection",
        "References"
      ],
      "created": "2019-02-07 17:12:24",
      "modified": "2025-12-11 12:38:04",
      "commits": 25
    }
  ],
  "_score": 5.584331224367531,
  "_indexed": true,
  "_nocasepkg": "nvctr",
  "_universes": [
    "euctrl-pru",
    "espinielli"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.7",
      "date": "2026-05-12T07:51:05.000Z",
      "distro": "noble",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "1b35ec0e5b1910be294f194a065e3ec49f05f8719d6e797d85d4e26cb40f04ff",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.7",
      "date": "2026-05-12T07:51:05.000Z",
      "distro": "noble",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "7225e66355ae3766828ea3d0999ddd81b4833e0645a906d9114031047955acda",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.7",
      "date": "2026-05-12T07:50:45.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "ffa6b45ba40bc0d0bf941db8484044172f2f6931bd18ed5757d02d1426381ca1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.7",
      "date": "2026-05-12T07:50:37.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "f316c464a51d10bce12a94be848163ea3d6bd82648954c8bb61d3ea9633627e3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.7",
      "date": "2026-05-12T07:50:27.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "aeaaf33098a2ebf6ee5af492ce200c820239a3a373f18a808649643a99267b10",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.7",
      "date": "2026-05-12T07:50:24.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "b6cfd281737e7882e1821754fbfb89f009d09bba6c55dcf3845034812311e791",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.7",
      "date": "2026-05-12T07:50:03.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "2f614b555f7d96e5098074112d0647fc67fb4a41b84729b48664efab7cef2dcb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.7",
      "date": "2026-05-22T10:47:43.000Z",
      "commit": "0a8092e2b66e332fee0c1525b659cb7ab2fc54f4",
      "fileid": "5e903fcfb025954265616121e7c5f35f786b33415a162e768fd3f3bcbd339a13",
      "status": "success",
      "buildurl": "https://github.com/r-universe/euctrl-pru/actions/runs/25720799638"
    }
  ]
}