Geometry software I have some computer graphics programming experience, not so long ago, I understood that I haven't grwat experience in math and there is some problem. So, im learning math and coding at the same time. The problems that I have to solve is geometry and linear algebra problems. So, I need some program that can help me to interactively draw some geometric primitives and retrieve formulas from it. For example, imagine that you draw circle and to tangent lines to that circle, the problem is to find center and radius of that circle. This is not so hard and just example. 
So, the question: is there some program for the such purposes? It is better if it will be opensource, may be with source code)
Thanks in advance!
 A: You can take a look at Dr. Geo. It is an interactive geometry software I wrote with a programming API. You can design your sketch then ask for the equations. You can do it with code (as in the screenshot) or with mouse and clic.
Extrapolating from your example, to get the equation of a tangente to a circle, you describe a sketch as bellow:
| sketch circle radius tangent|
sketch := DrGeoCanvas new.
circle := sketch circleCenter: 2@3 radius: 5.
(sketch equationOf: circle) show.
radius := sketch segment: 2@3 to: (sketch pointOnCurve: circle at: 0.2).
tangent := sketch perpendicular: radius at: (sketch pointOnCurve: circle at: 0.2).
(sketch equationOf: tangent) show

Select all the code then execute it with [Alt]+d.
Of course you can do it by mouse and clic but it is not practical to describe it there. In the resulting sketch, dragging any element updates the equations.

And as you are mentioning access to the source code, I guess you want to learn from it and if possible modify and test it. Dr. Geo is the only interactive geometry software you can modify from itself: from its background menu select Tools>System Browser, from this tool you browse the source code, edit it and recompile it. It can be done while you have an instance of your geometric canvas running: it is the Pharo Smalltalk effect.
