この問題は私を悩ませてきました、そして私はこの問題を解決するための最良の方法への洞察を探しています。
Raphael.jsで生成した楕円の円周に沿って移動したいdiv$( "。sun")があります。これにより、楕円は画面と同じ幅で水平方向に中央に配置され、高さも同じになります。幅の半分として、絶対に0,0(左上)に配置されます。
//draw ellipse that is as wide as the window and half as tall as the width
var paper = Raphael(document.getElementById("ellipse"), Wwidth, halfIt);
var c = paper.ellipse(Wwidth/2, halfIt/2, Wwidth/2, halfIt/2);
c.attr({'fill': 'transparent', 'stroke': 'red'});
ここにjsfiddle(デモ用にjsfiddleの値を変更)
楕円は、天体が空を移動する経路を定型化したものです。これは、午前6時に、太陽が画面の左端の楕円の主軸にあることを意味します。正午には太陽が画面の上部中央にあり、午後6時に太陽は楕円の主軸の右端にあります。
度で表すと、午前6時= 180度、正午12時= 90度、午後3時=45度などです。基本的に、午前6時から午後6時までの各時間は15度離れています。分数の計算を追加します。
var hours = new Date().getHours();
(removed code that converts the numerical hour to my stylized degrees for brevity)
var mins = new Date().getMinutes();
var minsdegree = mins * .25;
var skyangle = hourdegree + minsdegree;
たとえば、午前11時39分だった場合、スカイアングルは114.75度になります。
課題: 時間に応じてカスタム角度に対応するように、楕円のパスに沿って太陽をアニメートするにはどうすればよいですか。技術的には、ページの読み込み時に正しい角度に対応するだけで、「アニメーション化」する必要はありません。ただし、ページを十分に長く開いたままにしておくと、パスに沿ってアニメーション化するのが適切です。