CityTomato

Problem statement: You decided to start growing food in your balcony / top floor / window sill. You want to know: what can I grow, when should I plant it, how do I take care of it. The number one problem is to figure out how much sunlight and wind you have. You also want to boast about what you are growing to your friends. And perhaps find someone with a similar environment to compare to.

Proposed software solution:
 * Sunlight simulation using almanac and 3d structure of the house and neighbouring areas.
 * Knowledge base on plants per sunlight (e.g. tomatos require 4 hours of daily sunlight at least)

Some jumbled notes:
 * application for Eyal, for the home gardening. Information gathering, playful - maybe simgarden. Will provide real data, sort of mix with tamaguchi:
 * based on real 3d contour, incorporate a special purpose 3d editor, with some prebuilt types of homes so you can estimate sunlight
 * major problem is the houses next to you, especially if you are not on top floor
 * produce bounds instead of a single number
 * create smart inputing of the skyline.
 * contour like
 * take pictures
 * existing format for panorama?
 * create yet another panorama app (garden panorama app?)
 * do stiching here, just take a bunch of pictures.
 * assume this is hassle free or not a lot will do it
 * create pretty animations and all in 3d, but add real reports
 * schedule for planting
 * etc.

= MVP = Minimal Viable Product.


 * Map widget, title: "Where are you?"
 * User gives pin point on map of tel aviv
 * 3D widget: shows building, rotatable. Title: enter your location on the building
 * 2nd 3D widget: shows the building at that location, "Is that yours?"
 * 3rd 3D widget: "Select your first adanit location." - lets you rotate, shows balconies, high light the floor you wish (the one the mouse is over)
 * 4th screen: shows 3d in button, on top you choose plant. title "on February with 3 hours of sunlight you can plant the following" - question mark suggesting you can change the sunlight nunber.
 * tie in to simulation screen of sunlight across the year (plot).
 * 5th screen: Paypal button "Buy from one of your local suppliers" - contains already the seeds / complete package.

= Technical notes =

WebGL
Learning WebGL for doing a widget that will serve as a basis for a few features:
 * user input of location on building
 * simulate sun cycle for plant
 * simulate balcony

Actually the main problem is getting the buildings around and the building itself,
 * and then you have trees around, foliage, laundry.
 * perhaps measurement is a better solution - light sensor, camera, both on every phone. Measurement apps?

Frameworks

 * threejs
 * scenejs
 * looks nice, scenegraph, didn't check lighting but have ability to create my own nodes, pretty nice. (ok, make this item more explicit for comparison with threejs)
 * has a city object picking demo bug not working consistently (read: unusable) currently picking this based on the city demo with pickable cities (ray casting)
 * has a ball ray picking demo which works cool
 * to do a realistic city model I need to export blender to stl and take the stl and make a named node object around every surface. make a trapezoidal cross section, should work ok. (even if intersections between those objects in case non 90 degree angles between surfaces - but that's fine, ray picking should still be accurate. overhead of 3d should still be small for non big cities, and we only care about close neighbours relatively).
 * no stl loader. need to do stl->list of surfaces->scene graph of trapezoid named nodes via python/javascript extra library?
 * CubicVR
 * KickJS

Refileme
 * http://learningwebgl.com/blog/?p=28

Open Street map stuff (searched because they should be related to buildings)
 * http://www.openwebglobe.org/

= Tel Aviv Building 3D data = TODO - other cities. But concentrate on where we have it.

TODO - tel aviv data

Collection of 3D building data

 * open street map has it?
 * TODO

= Light measurements app = Existing:
 * TODO

= Some open building models / modelling software = BIMServer / BIMSurfer (both on github)

IFC models (loadable via BIMSurfer, usable only with BIMServer, surfer uses scenejs, but not sure how to get picking working there)
 * http://www.ifcwiki.org/index.php/Examples

= Json correctness / inspection tools =
 * http://json.parser.online.fr/

= Plant requirements =
 * https://docs.google.com/spreadsheet/ccc?key=0Al8WqeVj1jt_dGFtMEdIOVhXbTdRQVEyN0xhZTAtU1E&usp=sharing#gid=2 - מאגר צרכי צמחים