I finally got down to analyzing this rather than making guesses. I find
that the problem involves 2 dimensional geometry where the only thing
that changes when looking at the center of the "ruler" vs the end of the
ruler is the horizontal distance to the ruler. No spherical trig and use
of similar triangles. The results are the same but the capability of J
to efficently manipulate complex numbers (and I have a lot of experience
with these) leads to the following
In this dh, dv are the horizontal and vertical distance to the horizon
with respect to the observer.
cdtr=:1p1%180
Re=:6.378e6
alpha=: 30 NB. half of angle subtended by ruler
findel =: dyad define NB. angles in radians
'dh dv'=.+. (%:y*y+2*Re)r. a=._2 o. Re%Re+y
del=: (-a)+_3 o. dv%dh*2 o. x
)
] del10=: 30r180p1 findel 10
0.000273945 (radians)
del10%cdtr
0.0156959 (degrees) -same as what you got
] del400k=: 30r180p1 findel 4e5
0.0483724
del400k%cdtr
2.77154 (same as your value)
]del400k90 =:45r180p1 findel 4e5
0.125281
del400k90 %cdtr
7.17807 (again agreed)
You got it right first- I just used a different approach in part
Don
On 2018-02-27 1:04 PM, J. Patrick Harrington wrote: Someone once told me
that the only phrase an academic needs in any language is "Well, it's
not that simple ..." If the height of the observer is 0, then the
horizon is the plane through the observer perpendicular to the zenith
direction - it's a great circle and there is no curvature. But if you're
above the surface, the horizon is at the distance d where your
line-of-sight is tangent to the earth's surface. The distance to the
horizon is then d=sqrt[2Rh+h^2], from the Pythagorean triangle d^2 + R^2
= (R+h)^2 where R=Earth's radius. In J NB. The angle from the zenith to
the horizon will exceed NB. 90 degrees by an amount depending upon the
height h NB. of the observer above the ocean surface. This excess NB. is
called the "dip" of the horizon. (This formula NB. neglects atmospheric
refraction which isn't justified!) NB. Usage: hdip h --> angle to
horizon in excess of 90 deg hdip=: monad define R_E=. 6378e3 NB. Earth's
equatorial radius in meters h=. y NB. height of observer in
meters d=: %: (2*R_E*h)+ h*h NB. distance to horizon NB. dip=: asin d%
R_E+ h dip=: atan d%R_E dip%cdtr ) cdtr=: 1p1%180 NB. convert degrees
to radians E.g., If you're 10m above the surface hdip 10 0.10146 and
d 11294.3 So the horizon is 11.3 km away and appears 0.1 degree
below the horizontal plane." At this point, we must do some spherical
trig. (I've taught observational astronomy, so it's no problem for me
Imagine you are at the center of the celestial sphere. Your
staright-edge will project on to the sphere as a *great circle*. But
your horizon is *not* a great circle, it is a "small circle" cut into
the celestial sphere by a plane that does not pass through the center
(you). (A small circle is like a circle of constant latitude on the
globe away from the equator.) So if your straight-edge touches the
horizon at two points, it will pull away from the horizon it the middle.
(Just like your plane doesn't fly along a line of constant latitude when
it takes a great circle route from NY to Spain.) I've tried to impliment
the spherical trig here (I'm sure it's worked out carefully somewhere.)
NB. arc of horizon = the angular extent of the straight-edge NB. Usage:
(arc of horizon) curve (dip of horizon) ===> Z NB. Z = angle of horizon
above straight edge at its midpoint NB. all angles in degrees curve=:
dyad define alpha=: cdtr*x a=: 0.5p1 - cdtr*y s=: acos (*: cos a)+ (*:
sin a)*cos alpha chs=: cos -:s c=: acos (cos a)%chs del=: a - c del%cdtr
) So for a straight-edge the subtends 60 degrees of the horizon and an
observer 10 meters above the sea, we find 60 curve (hdip 10)
0.0156959 The horizon is ~0.016 degree above the mid-point of the ruler,
about a minute of arc. For the space station at h= 400 km, we get 60
curve (hdip 400e3) 2.77154 an easily noticed ~3 degrees. Or with a wider
ruler, spanning 90 deg 90 curve (hdip 400e3) 7.17807 I think this
makes sense, but I offer no guarantees. Patrick
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm