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

我可以在后面放一张地图吗?右键单击->背景地图->SimpleEarth...

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


螺旋示例生成的 Y 值略大于 90。 尖尖投影的最尖端开始出现异常。 别去那里。
回到日/夜图:我尝试了几种变化,这是最令人满意的。 使螺旋线的宽度变宽,但不要太宽。 并使螺旋圈的数量变大,但不要太大。 将线条颜色设置为黑色,或者透明(对于 JMP 的未来版本)。螺旋循环的数量在一段时间后开始减慢图形的速度; 20 是快,200 是慢。 使用 20 时,您需要一条较粗的线来遮蔽之间的所有内容,但较粗的线会使边缘更加粗糙。 JMP 正在即将发布的版本中更改其底层绘图工具,在此示例中透明度看起来很棒,但对于 JMP 12,螺旋中的透明度会在粗线自身重叠处产生伪影。
另一个难题是:使用 JMP 地图背景,您实际上会获得两个背景、一个位图图像和一个边界线图。

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

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

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

公平地说,对于具有复杂示例的网站:它们可能很复杂,因为它们正在进行投影并弄清楚如果被分成多个区域则在哪里进行着色。 此代码使用内置支持将数据坐标转换为地图空间。
附加文件可能仍设置为在 $temp 目录中生成 24 帧动画。 您可以使用 GIF 实用程序来制作动画,也可以更改 JSL 以不循环或不关闭 24 个单独的报告。
下次:添加一些夜灯......
Projected circle of sunlightProjected circle of sunlightProjected circle of sunlightProjected 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() );
低点为 356,高点为 173;它们代表太阳位于极南和极北的日子。 LowPoint-365 是上一年的 12 月,HighPoint+365 是下一年的 6 月。 现在插值有机会获得全年不缺失的结果。