Renamed initLocations method to constructLocations to more accurately reflect method process.
Renamed castVisibleRay to castVisibilityRay
Made castVisibleRay cleaner, removed excess duplicate code.
Fixed typo
Extracted addSpecialLocations method
Now requiring Location array in Zone constructor.