The tropic of cancer is the farthest north you can be and still have
the sun be directly overhead at some time during the year (in the
middle of northern hemisphere summer). This is approximately 22.5
degrees latitude. See also:
http://www.geog.ucsb.edu/~joel/g110_w08/lecture_notes/sun_angle/sun_angle.html
for a lot more detail on this and related issues.

This is relevant, for example, when building a home. Depending on the
latitude and the time of the year, the noon sun will range from
90-latitude+22.5 to 90-latitude-22.5 degree. This means that if you
build your house right (with south facing insulated glass and the
right kind of south facing roof overhang) you can have solar heat in
the winter while mostly getting shade in the summer.

(Deciduous trees can achieve similar effects. And, of course, not
everyone is in a position to have trees, nor is everyone in a position
to build a house. And there are other issues to consider. But there's
only so much material I'm going to cover in one email message.)

So let's draw a picture of this.

require 'plot'
plot j./1 2 o./o.0.001*i.2002

Note that I'm using j./ to get a parametric curve. and the numbers
give me a range from 0 to approximately 2*pi. Also, of course 1 o. is
sine and 2 o. is cosine (since sine is an odd function and cosine is
an even function. See:
https://en.wikipedia.org/wiki/Even_and_odd_functions)

That plot supposed to be a circle, representing the earth. You'll have
to manually adjust the size of the window so that my circle is
circular.

Now, let's draw in the angle of the equator.

require'plot'
pd 'reset'
pd j./1 2 o./o.0.001*i.2002
pd (0.001*i:2002)*j./2 1 o. 22.5%180p_1
pd 'show'

You'll have to make my circle be circular again.

Also, %180p_1 converts from degrees (the typical treatment for
latitude) to radians (the math used by plot).

You can imagine the sun being off to one side, and light coming in
horizontally. In fact, it might be nice to draw some arrows.

So, how do I draw horizontal lines?

A horizontal line has y=0 and x ranging over the range of values we
want to display. This is a bit odd to think about because plot is
sensitive to data type in a non-mathematical fashion. But before I can
show what that means, I've a bug to report:

require'plot'
pd 'reset'
pd j./1 2 o./o.0.001*i.2002
pd (0.001*i:2002)*j./2 1 o. 22.5%180p_1
pd (_1.6+0.001*i.100)j.0.1-0.001*i.100
pd (_1.6+0.001*i.100)j._0.1+0.001*i.100
pd (_2+0.001*i.500)j.0
pd 'show'

That last line gives me a domain error in J6, and silently does
nothing in J8. It's supposed to be a horizontal line - I'm trying to
draw an arrow. But for whatever reason that fails. (This is where
someone is supposed to loudly assert how wonderful data types are
because of how they make things fail. And, in fact, those failure
modes can be put to good use. But they are not exactly a universal
good.)

The workaround is to make the line be not quite horizontal (but not so
much that it's visible. For example:

require'plot'
pd 'reset'
pd j./1 2 o./o.0.001*i.2002
pd (0.001*i:2002)*j./2 1 o. 22.5%180p_1
pd (_1.6+0.001*i.100)j.0.1-0.001*i.100
pd (_1.6+0.001*i.100)j._0.1+0.001*i.100
pd (_2+0.001*i.500)j.1e_12*i.500
pd 'show'

Actually, it might be nice to have several arrows:

require'plot'
pd 'reset'
pd j./1 2 o./o.0.001*i.2002
pd (0.001*i:2002)*j./2 1 o. 22.5%180p_1
pd (_1.6+0.001*i.100)j.0.6-0.001*i.100
pd (_1.6+0.001*i.100)j.0.4+0.001*i.100
pd (_2+0.001*i.500)j.0.5+1e_12*i.500
pd (_1.6+0.001*i.100)j.0.1-0.001*i.100
pd (_1.6+0.001*i.100)j._0.1+0.001*i.100
pd (_2+0.001*i.500)j.1e_12*i.500
pd (_1.6+0.001*i.100)j._0.4-0.001*i.100
pd (_1.6+0.001*i.100)j._0.6+0.001*i.100
pd (_2+0.001*i.500)j._0.5+1e_12*i.500
pd 'show'

Or maybe that's getting to be too much?

Anyways... to take this further, I should probably pick a latitude and
draw a side view of a house and draw in the noon-time extreme sun
angles for winter and summer (along with the more typical
autumn/spring sun angles). And then maybe do some architectural
drawings. But this is probably enough for one message.

Thanks,

-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to