
( 提醒我Cover the Earth Sherwin Williams 油漆 (XXH0284) - RC Maxwell Company 户外广告 - Duke Libraries )
附加的 JSL 文件(下方)不使用来自上一篇. (但它很快就会出现在帖子中。)现在,只需捕获一组图像来制作动画。
有很多网站描述了如何做到这一点。 它们看起来都很复杂,所以我尝试了一些简单的东西。 它似乎产生了相当正确的结果。 上图代表 10 月下旬的 24 小时时段。 太阳已经向南移动;南半球白昼长,北半球白昼短。 那个迷人的形状从何而来?
太阳照耀着半个地球。 另一半是黑暗的。 这有点违反直觉,但上图使用反太阳(因为缺少更好的名称)将黑暗投射到与太阳相对的地球的一半。
根据一天中的时间和一年中的时间,找到地球上位于太阳正下方的点非常简单。 太阳在 6 月 21 日左右向北移动 23.5 度,在 12 月 21 日向南移动 23.5 度。 在这个简化模型中,太阳遵循对称的正弦形时间线,虽然我认为实际上它在赤道以下花费更多时间. 而且,在 24 小时的过程中,太阳穿过 360 度经度。 所以这是光的中心,或者在这种情况下是黑暗的。
边缘在哪里?这终结者是暮光之线。它在每个方向上都与光中心成 90 度角。 在地图上画一个圆圈,与地图表面的太阳中心成 90 度角,并在内部或外部涂上颜色。 我找到了我需要的数学这里,以方程式的形式回答“如果我从纬度、经度开始,以 B 度方位行驶 X 英里,我将到达什么纬度、经度?”在我们的地球上,90 度大约是 6000 英里。
拼图的下一部分是脚本索引中使用 XY 函数绘制螺旋线的示例。

我可以在后面放一张地图吗?右击->BackgroundMap->SimpleEarth...

完美的!它不再是圆形螺旋线,它被地图的投影扭曲了......这正是将太阳照明的圆圈投影到平面地图上所需要的。 稍微移动轴(释放鼠标以刷新地图)并观察螺旋形状的变化以保持在相同区域上。


螺旋示例生成略微超过 90 的 Y 值。 尖尖的投影的尖端开始出现异常。 不要去那里。
回到昼夜图:我尝试了几种变化,这是最令人满意的。 使螺旋的线宽变宽,但不要太宽。 并使螺旋圈的数量变大,但不要太大。 使线条颜色为黑色,并且可能是透明的(对于 JMP 的未来版本)。螺旋循环的数量开始使图形变慢; 20是快,200是慢。 对于 20,您将需要一条更粗的线来遮蔽中间的所有内容,但更粗的线会产生更多参差不齐的边缘。 JMP 将在即将发布的版本中更改其底层绘图工具,本例中的透明度看起来很棒,但对于 JMP 12,螺旋线中的透明度会在粗线自身重叠处产生伪影。
另一块拼图:使用 JMP 地图背景,您实际上得到了两个背景,一个位图图像和一个边界线图。

如果您查看自定义图形对话框,这两个部分将显示为单独的层。

它们有自己的属性,但更重要的是,它们在列表中有自己的位置,即第 1 项和第 2 项。 这很重要,因为“夜间阴影”需要绘制在背景地图图像之上,然后需要在其之上绘制边界形状(以获得本文顶部的效果)。 因此,螺旋脚本将被插入到位置 2。

它显示在背景和形状之间的自定义图形对话框中。 (另一个脚本是空的,当您看到下面附上的 JSL 时,这会很有意义。)

公平地对待具有复杂示例的网站:它们可能很复杂,因为它们正在进行投影并确定如果它被分成多个区域则在哪里进行着色。 此代码使用内置支持将数据坐标转换为地图空间。
附加文件可能仍设置为在 $temp 目录中为动画生成 24 帧。 您可以使用 GIF 实用程序制作动画,或者您可以将 JSL 更改为不循环或不关闭 24 个单独的报告。
下一次:添加一些夜灯......
Projected circle of sunlight太阳光的投影圈
编辑 2017 年 1 月 4 日:附加的 JSL 中至少有一个错误。 正如所写,由于当天数字的插值,它只会在 6 月 21 日和 12 月 21 日之间运行。 这样的事情应该做得更好:
currentangle = Interpolate( currentpoint, lowpoint-365, 2 * Pi(), highpoint, Pi(), lowpoint, 2 * Pi(), highpoint+365, Pi() );
LowPoint为356,HighPoint为173;它们代表太阳在遥远的南方和遥远的北方的日子。 LowPoint-365是上一年的12月份,HighPoint+365是次年的6月份。 现在,插值法有机会全年获得不丢失的结果。