-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement #82: Add an arc method #206
Conversation
They block on corresponding AsyncTurtle methods. Signed-off-by: Paul Mabileau <[email protected]>
They call the circular_arc method of ProtocolClient with adapted values. Signed-off-by: Paul Mabileau <[email protected]>
Classical implementation for now: splits the arc in many forward movements and rotations. Signed-off-by: Paul Mabileau <[email protected]>
They go in the `turtle::tests::ignores_nan_inf_zero` function and check that all the possible combinations of those do not make the turtle move. Signed-off-by: Paul Mabileau <[email protected]>
It should provide good explanations of both methods with dedicated and thourough examples. Signed-off-by: Paul Mabileau <[email protected]>
Signed-off-by: Paul Mabileau <[email protected]>
It draws a simple flower only using arcs, rotations and fills. Signed-off-by: Paul Mabileau <[email protected]>
Codecov Report
@@ Coverage Diff @@
## master #206 +/- ##
==========================================
+ Coverage 60.81% 61.51% +0.70%
==========================================
Files 40 40
Lines 2636 2697 +61
==========================================
+ Hits 1603 1659 +56
- Misses 1033 1038 +5
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work @PaulDance! I've left some comments for you to address. This should be good to merge after those are resolved. 🎉
We'll do further work in future PRs but I just want to get this merged as quickly as possible since it's been open for a while. 😄
As a general comment, the overall structure should be satisfying, it is quite simple after all. However, the current implementation interestingly performs very poorly: it is imprecise, very slow, laggy and gets worse over time. That could be caused by a mistake or just by the simplistic algorithm used that generates hundreds of IPC requests. Either way, it is definitely not the intended final state.
You are 100% correct that this is slow because it "generates hundreds of IPC requests". That's totally expected for now. We'll fix that in Part 2!
Please also rebase this branch when you get a chance. :) |
Add a compile-time error indicating the need to use `features unstable`. Rephrase some documentation and tweak minor things here and there. Co-authored-by: Sunjay Varma <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work @PaulDance! Appreciate you quickly resolving all my review comments. It should be ready to go!
This is part of #82 by following the mentoring instructions. However, only the part 1 is covered in the current state, hence the draft. Part 2 will be implemented when the intermediate review is finished and adequate instructions completed.
Steps of the issue that have been covered:
arc_left
andarc_right
that block on corresponding methods onAsyncTurtle
.arc_left
andarc_right
asynchronous methods onAsyncTurtle
thatawait
on a newcircular_arc
method onProtocolClient
.circular_arc
method onProtocolClient
.TurtleId
.move_forward
androtate_in_place
methods.Radians
.flower
example illustrating arcsturtle::tests::ignores_nan_inf_zero
."unstable"
.The documentation looks like this for now:
As a general comment, the overall structure should be satisfying, it is quite simple after all. However, the current implementation interestingly performs very poorly: it is imprecise, very slow, laggy and gets worse over time. That could be caused by a mistake or just by the simplistic algorithm used that generates hundreds of IPC requests. Either way, it is definitely not the intended final state.