{"shas":[["20e336afc15b3926701e790f253917f52aa2d9f9","b457796504aec35cdc81190c4a6f0bb334375ae6@gmail.com","Separate the \"shape\" logic from the \"representation\" logic.\n\nprocess_frame() has to answer two questions about each shape\nreturned from find_shapes_in_image():\n\n    - What shape is this? (Circle, line segment,...)\n\n    - What does this kind of shape represent in terms of\n      the pattern itself? (Juggler, exchange-pass,...)\n\nThe old process_frame() mixed the two types of logic together,\nand so it was kind of a mess --- in particular, the \"what shape\nis this\" logic was very sketchy and fragile.\n\nThe new process_frame() shoves all of the former logic into a\nnew routine called copy_and_classify(), which ensures that\nfind_shapes_in_image() returns a vector of Shapes which have\nalready been completely classified as Circles, LineSegments,\nor UnknownShapes. process_frame() itself can now concentrate on\nthe latter logic, and there is a logical place to put additional\ncode if we decide e.g. that the current definition of \"line\nsegment\" is too loose.","Arthur O'Dwyer"]],"ref":"refs/heads/master","size":1,"head":"20e336afc15b3926701e790f253917f52aa2d9f9","push_id":39186808}