Movatterモバイル変換


[0]ホーム

URL:


Loading - please wait...

This page requires a reasonably modernHTML5 browser
with bothJavascript andWebGL enabled.

If this message is not soon replaced by an interactive 3D model,
then it is likely that your browser does not support this web app.
Check yourJavaScript Console for specific error messages.

0.00, 0.00
GEOGRAPHIC LOCATION
Latitude:
Longitude:
Timezone:
DATE AND TIME
Date:
Time:
SOLAR INFORMATION
Azi / Alt: /
Rise / Set: /
Daylight: Hrs
TWILIGHT TIMES
Civil:
Nautical:
Astronom.:

ANIMATION



Speed

3D VIEW SETTINGS

Projection(Shortcut keys: 1 to 6)

DISPLAY SETTINGS

SUN-PATH SETTINGS

Indicators

Path Lines


DATE AND TIME


Ordinal day of the year:

Sunrise:,   Sunset:

GEOGRAPHIC LOCATION


Time Zone

INFORMATION

Overview

The aim of this app is to demonstrate the relationship between geographic location and solar position throughout the year. You can use the map to drag the location around and interactively see how the Sun-path diagram and shadow projections change. You can also directly relate the 3D Sun-path and day-length, as well as a range of different 2D Sun-path projections.

Background

This started out as an experiment to see just how responsive I could make the generation and display of 3D Sun-path diagrams and shadow projections using JavaScript and WebGL. I'm actually quite stunned as, even before any optimisation whatsoever, I found that I could build and rebuild the entire Sun-path mesh on every change in pretty well real time. Sure this was on an i7 processor, but it meant that the core technologies were not going to be the kind of bottleneck that I thought they'd be.

As it turned out, there was scope for some pretty fundamental optimisations, so now it's even quick enough on an iPad as well as most of my old Android tablets.

SVG and WebGL

The marriage of WebGL for 3D visualisation and SVG for 2D data presentation also turns out to be a pretty happy one. The core ideas when working in both are actually pretty similar - building up a set of visual components that are cached and rendered separately (OpenGL vertex buffer objects and SVG elements respectively). Any complex calculations in Javascript need only be done once to build up each visual component, or to rebuild if it physically changes. The actual rendering of that cached element is then done by a much faster lower-level process (OpenGL/GPU and the SVG engine respectively).

Optimsation Potential

Thus, for the kinds of animated 2D charts I need, SVG seems to have much more optimisation potential than using a HTML5 canvas element. As the canvas element is pixel-based, any content change usually requires a full redraw of all chart components, each being re-described and/or re-generated in your own Javascript code. If any components require complex calculation or involve detailed curves, you have to devise your own caching system as this all has to be redone for every redraw.

With SVG charts, you only need to re-describe and/or re-generate those components that actually change on each redraw. All other previously defined components are automatically re-rendered by the SVG engine, which is a core part of the browser itself (running as native code) so is significantly faster than working in Javascript.

Thus, the key to fast animations is to offload as much work as possible onto the SVG engine, or even the browser rendering engine. This can be done by, for example, transforming components instead of regenerating them, using CSS3 animations and transitions, interpolating between pre-built elements instead of regenerating new elements each time, etc. For me, this is the really fun bit as you often have to completely rethink how to do things before you finally get that vital Eureka moment.

© Dr. Andrew J. Marsh, 2014.

View Manipulation

You can interactively adjust the 3D view of the model using amouse,pen orstylus, or bytouch on a tablet or phone. You can also use the items in the3D View Settings popup.

Rotation:
Drag with theleft/right button or asingle finger,
or use thearrow keys.
Panning:
Drag with themiddle button ortwo/three fingers,
or use theA andD keys.
Zooming:
Use thescroll wheel orpinch with two fingers,
or use theW andS keys.

NOTE: You can use theShift andCtrl/Meta keys to adjust the increment of each scroll event or key press.

Keyboard Modifiers

TheShift andCtrl/Meta keys are used pretty extensively to modify interactive data entry. This applies to all increment buttons, scroll wheel motion, slider controls and input elements.

Shift Key:
Increases input to larger values, usually by ten times or significantly larger increments such as 1 month for dates and 1 hour for times.
Ctrl or Meta Key:
Decreases input to smaller values, usually by one tenth or the smallest reasonable increment such as 1 day for dates or 1 minute for times.

NOTE: You can use thescroll wheel to edit a data value when hovering over any slider, numeric input or even table rows that indicate their editibility.

Credits

This page uses the following frameworks/components:

Bootstrap  v3.3.2
Copyright © 2011-2015 Twitter, Inc. - github.com/twbs,
http://getbootstrap.com/   (LICENSE)

Bootstrap-popover-x  v1.4.0
Copyright © 2014, Kartik Visweswaran, Krajee.com,
https://github.com/kartik-v/bootstrap-popover-x   (LICENSE)

D3.js
Copyright © 2010-2015, Michael Bostock
http://d3js.org   (LICENSE)

jQuery  v1.11.2
Copyright ©jQuery Foundation and other contributors,
https://jquery.com/   (LICENSE)

JSON Editor
Copyright © 2015 Jos de Jong - github.com/josdejong
https://github.com/josdejong/jsoneditor/   (LICENSE)

JSURL
Copyright © 2011 Bruno Jouhier - github.com/Sage
https://github.com/Sage/jsurl/   (LICENSE)

KnockoutJS  v3.2.0
Copyright © Steven Sanderson and the Knockout.js team,
http://knockoutjs.com/   (LICENSE)

Knockstrap  v1.2.0
Copyright © 2013 Artem Stepanyuk - github.com/faulknercs,
http://faulknercs.github.io/Knockstrap/   (LICENSE)

Leaflet Maps API  v1.4.0
Copyright © Cloudmade, Vladimir Agafonkin - github.com/Leaflet,
https://leafletjs.com/   (LICENSE)

OpenStreetMap Map Data
Copyright © OpenStreetMap contributors - openstreetmap.org,
https://www.openstreetmap.org/about   (LICENSE)

SnackbarJS
Copyright © 2014 Federico Zivolo - github.com/FezVrasta
http://fezvrasta.github.io/snackbarjs/   (LICENSE)

split-pane.js
Copyright © 2014 Simon Hagström - github.com/shagstrom
https://github.com/shagstrom/split-pane/   (LICENSE)

Unfortunately most browsers automatically download remotely generated files into a default location, typically a 'Downloads' folder in your user area, and do not let you overwrite existing files. This is why a new filename appears above every time you see this dialog.

If you would like to see a File Save As dialog, you need to specifically set your browser to prompt you for the location of each download within its advanced settings.


[8]ページ先頭

©2009-2025 Movatter.jp