GithubHelp home page GithubHelp logo

lucky-bai / watisrain Goto Github PK

View Code? Open in Web Editor NEW
30.0 3.0 10.0 43.52 MB

Mobile app to get around campus without going outside

License: MIT License

Java 48.89% Objective-C 46.82% C 0.31% Python 3.98%
waterloo android ios map campus

watisrain's People

Contributors

lucky-bai avatar spratt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

watisrain's Issues

Refactor debug_location.py

The current script to generate location data is not very well written. Refactor this to be a coherent standalone tool.

Some nice to have features:

  • Toggle between straight line paths and waypointed paths
  • Toggle display names

Rain / Sunshine toggle

Have some way of toggling between rain (stay inside at all cost) and sunshine (ok to go outside)

Clarify user interface

The initial instructions are to "touch the map to select destination" but actually the first touch selects start location.

Obtain or create new campus map

Didn't expect this to be a problem, but there is no campus map with STC in it anywhere online. I am emailing UW helpdesk about this.

If that doesn't work, the backup plan is photoshop STC into current map.

Some buildings have misleading locations

ie, the location of the red circle does not correspond with the center of the building. This is a problem because the route is always drawn to the center of the red circle.

Major offenders: B1, TC
Minor offenders: ML, SCH

Port WATisRain to iOS

Optimistic time estimate: 6-8 weeks

Backend Tasks

  • Stub all the classes - DONE
  • Read from file - DONE
  • Waypoint, Location, Building classes - DONE
  • Path, Route, RouteStep classes - DONE
  • Map, MapFactory classes - DONE
  • Implement Dijkstra's - DONE
  • Implement route merging - DONE
  • Parsing input file - DONE
  • Generate HTML - DONE

Frontend Tasks

  • Setup project - DONE
  • Icons - DONE
  • Map with zoom and pan - DONE
  • Drawing locations on map - DONE
  • Tap on map to select - DONE
  • Draw path on map - DONE
  • Display text instructions - DONE
  • Collapsing instructions - DONE
  • Clear button - DONE
  • Settings - DONE

Other Tasks

  • Get apple developer account - DONE
  • Test on physical devices
  • Submit to app store - DONE
  • ?????
  • Profit

Dijkstra's algorithm should not be O(n^2)

While studying for the cs341 final, it occurred to me that my implementation of Dijkstra is bad and runs in quadratic time. It should be O(n log n) if we use priority queue like we're supposed to. Not super high priority to fix because performance is fast enough in most cases, but adding to to-do list.

Also iOS should be updated as well, of course.

Investigate way to deal with special case (with DWE and CPH)

When going from CPH to DWE something weird happens: you have to go up to floor 3 of CPH, cross over to DWE (you're on the eastern half of DWE) and immediately go down to floor 2 of DWE to continue. The way I'll probably handle this (for now) is link CPH:3 to DWE:2 but this solution is not entirely satisfactory (note also you can't go from CPH:2 to DWE:2)

Problem is, we don't have a node for the eastern half of DWE, only for DWE as a whole. So where does the stair-descending take place? Not in CPH for sure, because CPH:2 is not connected to DWE:2. Doing it in DWE is confusing due to the way stair climbing is drawn on the map. So best for now is to leave out the stair-descending and link CPH:3 to DWE:2.

Later maybe we can investigate more complicated infrastructure to handle cases like this but this will do for now.

More pathing! (ugh)

Every path must have a natural set of waypoints between them. This is about 50% done.

WATISRAIN

Hey, I'm not sure if you have it for ios or not.. but it seems like you do and whenever i click to download it it says it isn't available in Canada.

Encourage taking multiple stairs at a time

When we find a path between MC:4 and DC:1, there are three potential paths:

  1. climb down, cross, climb down
  2. cross, climb down, climb down
  3. climb down, climb down, cross

Right now, they are weighted all the same and the algorithm picks one at random. It should prefer 2,3 over 1 because it climbs down 2 stairs at once.

Instructions panel should not block the map

A common complaint is that the directions panel tends to block the map. This is because the app was initially intended for tablets, and I didn't realize this would be a problem for phones. Now that most of the users are using phones, this is a pretty important improvement.

I'm not sure what's the best way to fix this. Some possibilities:

  • Make the map scrollable beyond the boundaries, so if the instructions panel is covering the map, they can scroll so the relevant portion of the map is not being covered by the instructions
  • Limit the size of the directions pane and make it scrollable
  • Place the directions pane above or below the map, so it's not overlapping any part of the map

This needs some more investigation to determine the best solution. Make sure that the solution works for phones and tablets, for portrait and landscape modes.

Need to take climbing stairs into account

Currently the best route from MC to EIT is MC-C2-ESC-EIT. But the MC-C2 tunnel is at level -1 so this requires traversing at least 3 sets of stairs.

Better is MC-QNC-B2-ESC-EIT which can be done with 1 set of stairs.

Add OPT to the list of valid points on the map

I installed this app so that I could find the shortest route from MC to OPT, but it seems like it's cut off by the map (I'm not able to find OPT and click on it).
There also may be other locations that also have been cut off or simply not included.

Images to replace location circles

I'm thinking of 2 states:

  1. Unselected location. Need to signify which locations are supported, so represent it with an unobtrusive circle or something.
  2. Selected location. After being selected, this state should be highlighted above the rest. Represent it with a pin icon like in Google Maps maybe.

Campus excursion 2

Things to investigate:

(connecting floor numbers)
ESC-EIT
ESC-C2
EIT-PHY

And of course, SW corner

Android icon

Need an android icon, currently using the default robot

Add new building STC and update map

A new building STC (Science Teaching Complex) is under construction right now. It is connected to B1 and NH, but I'm not sure which floors exactly. Also there seems to be a one-way underground tunnel from STC to ring road (this definitely requires a code change to the pathfinding algorithm to support one-way paths but I think it's not difficult).

The current map doesn't even have the STC building labelled, so we need to swap in a new map. Make sure that the new map is calibrated correctly, and look for any building labels that has shifted as well.

Further differentiate between different types of connections

Currently, the only differentiation between edges of the graph is inside vs outside. We should differentiate at least between the following:

  • connecting building (no tunnel, like when 2 buildings are just separated by a door)
  • regular (overhead) tunnel
  • underground tunnel
  • outside
  • half-indoors-ish, don't know what to call it. Like ESC:1 to EIT:2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.