CircleWerk is a small-ish program that does all the work for you in finding the right sized circle that will intersect an arbitrary line through said circle in order to form an arch at the intersection points. The math behind this is actually very simple basic trigonometry, but it is too much of a hassle to manually run these calculations every single time you want to figure this kind of thing out. I wrote this program to save time when designing Starbright, since that map needed quite a few of these unknown circles.
While I did write this with the source engine in mind, this is actually a useful tool for pretty much any design software. The snapping settings are focused on the source engine but can be toggled off. Most design software cannot find these kinds of circles automatically, with the exception of dimension weighted CADD software like fusion360.
Using CircleWerk is very easy. Simply enter a distance and an angle. The distance can either be point to point or the distance from the centerline to one point, The angle is the angle at which the line of the circle will intersect your point(s) . The program will then give you the diameter of the circle, the radius, the distance from the center of the circle to the line, and the distance from the line to the edge of the circle. The angle and distance fields only support 3 decimals of floating point input, but the result supports 6. There are actually invisible ‘radio’ wheels next to both text input boxes you can click and drag up or down to increase or decrease the value. There is also a handy slider at the bottom for adjusting your angle.
I wrote this software using godot 3, thinking I could put together a nice simple, resizeable, gui for this kind of thing. While I was able to do that, using godot came with some drawbacks. One is size, the program is 8MB, which I think is quite large for something so basic. Another issue is the inability to pack files in while retaining a windows icon, meaning the program must run from within it’s own folder that contains it’s content. And the final, major issue is the fact that godot does not run on windows XP. I try to target windows XP as the minimal requirement for all my software, but godot 3 I believe requires windows 7. This puts me at a bit of a crossroads for what the future of this software will be. I am strongly considering re-writing this from scratch in something like visual c++, in order to target windows xp and drastically reduce the size. If I ever do do this, I will add the non godot version below.