-1

Given a geodetic location on the earth, I'm trying to find the normal vector to the surface at that point in ECEF coordinates. I've found the equations to convert from geodetic to ECEF (a vector from the center of the earth to the point) and vice verse, but I'm not quite sure how to find the normal vector. Thanks!

John Smith
  • 1,027
  • 15
  • 31
EagerIntern
  • 113
  • 1
  • 5
  • 2
    I don't understand "normal vector to that point relative to the center of the earth". Do you want the normal to the ellipsoid at the point? Or are you assuming a spherical earth, in which case the vector from the centre to the point is normal to the sphere. – dmuir Aug 15 '15 at 09:37
  • I’m voting to close this question because is not about programming – Vega May 31 '22 at 17:09

2 Answers2

1

Any vector on the earth surface is perpendicular to the earth radius (vector from the center of the earth to the point). Tangent is always normal to the radius-vector to the point of tangency.

MBo
  • 77,366
  • 5
  • 53
  • 86
  • How is *any* vector on the earth surface perpendicular to the earth radius? – EagerIntern Aug 14 '15 at 21:31
  • Tangent plane is normal to radius. Any vector in this plane is normal too.The same is true for 'spherical' vectors. But your question looks strange - probably, it's formulation is incorrect... – MBo Aug 15 '15 at 14:38
  • That is wrong. In geodetic coordinates model the Earth is not a sphere, therefore radius vector is only approximately perpendicular to the surface. – John Smith May 31 '22 at 13:56
1

finding normal vector:

  1. cross product

    • cross product returns vector perpendicular to its operands so:
    • take your point A and 2 close points to it B,C (not on single line)
    • so you got geodetic position A(lon,lat) so let B(lon+d,lat) and C(lon,lat+d)
    • convert A,B,C to ECEF or Cartessian
    • create vectors u=B-A , v=C-A
    • normal = cross(u,v);
    • you should normalize the normal vector to unit size normal=normal/|normal|
    • this approach works on any kind of surface (not just for sphere and ellipsoid)
    • the smaller the d is the more precise normal you get (but must be d>0)
  2. sphere

    • normal to any surface point A on a sphere with center C is easy
    • because normal lies on line going through the point A and center C
    • both points should be in ECEF or Cartessian
    • normal=A-C;
    • normalize if your sphere is not with radius=1.0
    • normal=normal/|normal|
    • if you have ellipsoid very close to sphere and do not need extreme precision you can compute the normal this way too
  3. if you have geodetic(lon,lat,alt) to ECEF or Cartessian equations at disposal

    • then normal vector points up so:
    • let A(lon,lat,alt) be your point
    • let B(lon,lat,alt+d) be point a bit above A
    • let d=1 so the points are distant 1 unit between each other so:
    • convert A,B to ECEF or Cartessian
    • normal=B-A
    • as d=1 you do nt need to normalize

[notes]

Community
  • 1
  • 1
Spektre
  • 49,595
  • 11
  • 110
  • 380