ComplexSolver uses SFML library, so you need it to be installed. There is a Find_SFML.cmake script (took from here)
that may find installed SFML (for example, if you use MSYS2 to install libraries), but if it didn't, try to add -DSFML_ROOT=C:/.. to CMake configure command
(check this).
Now, if you have MinGW and CMake:
cd .../ComplexSolver
cmake -G "MinGW Makefiles" -S "" -B "build"
If everything went fine, CMake will create a build directory and write its files here.
cmake --build build
You have built ComplexSolver! Now just
cd build
sfml.exe
Open project with Visual Studio
Edit paths to SFML in Project->Properties->C/C++->General for headers and Project->Properties->Linker->General for libraries
(check this for more info)
If everything went fine, you can compile a project.
After compilation and running you would probably see a message:
sfml-graphics-2.dll was not found
You need to put bin files (These files can be found in <sfml-install-path/bin>) near .exe
-
Start
.exe -
Set the settings
Max framerate:
60- Fps is limited to 60Vertical Sync- Vertical SynchronizationUnlimited- Fps has no limits
Presets:
Empty- Nothing is presetted (only O-point and unit circle)Triangle- Creates TriangleABCinscribed into unit circleIncenter- Creates TriangleABCinscribed into unit circle,incenterI, and centers of arcs:Da,Db,DcOrthocenter- Creates TriangleABCinscribed into unit circle and orthocenterH
-
Press
Enter -
Build the problem with instruments at the top of the screen
- To prove the theorem use this button:
- Choose what you need to prove
- Wait until the box on the bottom right gives you the result
You can compile files such as Pascal's theorem.txt
Just drag them onto the .exe
Saving picture isn`t in project now. But if you want, you can write this file yourself.
In first line you need to write settings
Settings 60 Empty
Syntax is: Settings <FPS> <Presets>
FPS:
Unlimited- Fps has no limitsVS- Vertical Synchronization60- Fps is limited to 60
Presets:
Empty- Nothing is presetted (only O-point and unit circle)Triangle- Creates TriangleABCinscribed into unit circleOrthocenter- Creates TriangleABCinscribed into unit circle and orthocenterHIncenter- Creates TriangleABCinscribed into unit circle, incenterI, and centers of arcs:Da,Db,Dc
Chord AB ByTwoUnitPoints A B
Syntax is <Type> <Name> <Contruction> <Args...>
Type:
PointUnitPointLineChord
Name: make it up yourself!
But be careful with redefenition, also don`t forget about objects in presets
Construction:
OnPlane
Creates a point on a plane.
Args: coords of point (x,y) (float)
Point <Name> OnPlane 10 50
This point isn`t pinned to plane, you can move it. Args are just to init point.
IntersectionOfTwoLines
Creates a point which is intersection of two lines (chords are lines too)
Args: name of two lines (chords are lines too)
Line AB ...
Chord CD ...
Point <Name> IntersectionOfTwoLines AB CD
OnLine
Creates a point which lies on line (chords are lines too)
Args: name of line, name of two points (which are on this line) and coords of point (they will be casted to the nearest point on line)
If you will write points that are not on the line, compiler will not say anything about that and program will have undefined behavior
Line AB ...
Point C ... //Must be on the AB
Point D ... //Must be on the AB
Point <Name> OnLine AB C D 4 7
This point isn`t pinned, you can move along the line it. Coords are just to init point.
Projection
Creates a point which is projection of point on a line (chords are lines too)
Args: name of point and a line
Point A ...
Line BC ...
Point <Name> Projection A BC
byTwoPointsFixedRatio
Creates a point which is a center of two point with masses
Args: names of two points and their masses Masses must be integer numbers
Point A ...
Point B ...
Point <Name> byTwoPointsFixedRatio A B 2 3
Rotation90
Rotates a point by 90 degrees
Args: names of two points and sign (sign is -1 or 1)
If sign isn`t 1 or -1, compiler will not say anything about that, programm will have undefined behavior
Point center ...
Point preimage ...
Point <Name> Rotation90 center preimage 1
Orthocenter
Creates an orthocenter of three UnitPoints
Args: names of three UnitPoints
UnitPoint A ...
UnitPoint B ...
UnitPoint C ...
Point <Name> Orthocenter A B C
Barycenter
Creates an barycenter of three points
Args: names of three points
Point A ...
Point B ...
Point C ...
Point <Name> Barycenter A B C
OnCircle
Creates a point on circle
Args: (float) coordinates (x,y) Coord will be normilized (x^2 + y^2 = 1)
UnitPoint <Name> OnCircle 3 2
This point isn't pinned, you can mive it along the circle
CentralProjection
Creates a point on circle which is central projection of first through second (it must be UnitPoint)
Args: name of point and UnitPoint
Point A ...
UnitPoint B ...
UnitPoint <Name> CentralProjection A B
IntersectionPerpendicularChord
Creates a point wihch is intersection of UnitCircle and chord which goes throug UnitPoint and perpendicular to another chord
Args: name of chord and name of UnitPoint
Chord AB ...
UnitPoint C ...
UnitPoint <Name> IntersectionPerpendicularChord AB C
IntersectionParallelChord
Creates a point wihch is intersection of UnitCircle and chord which goes throug UnitPoint and parallel to another chord
Args: name of chord and name of UnitPoint
Chord AB ...
UnitPoint C ...
UnitPoint <Name> IntersectionParallelChord AB C
ByTwoPoints
Creates a line through two points
Args: names of two points
Point A ...
Point B ...
Line <Name> ByTwoPoints A B
Tangent
Creates a tangent to UnitCircle though a UnitPoint
Args: names UnitPoint
UnitPoint A ...
Line <Name> Tangent A
Parallel
Creates a parallel line to another line through another point
Args: names of line and point
Line AB ...
Point C ...
Line <Name> Parallel AB C
Perpendicular
Creates a perpendicular line to another line through another point
Args: names of point and line
Point A ...
Line BC ...
Line <Name> Perpendicular A BC
ByTwoUnitPoints
Creates a chord through two UnitPoints
Args: names of two UnitPoints
UnitPoint A ...
UnitPoint B ...
Chord <Name> ByTwoUnitPoints A B



