Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a right triangle ABC with vertices A, B, C. There is a parallelogram DEFG with vertices D, E, F, G. There is a line segment BD. There is a line segment CF. There is a line segment AC. B lies on line segment BD. F lies on line segment CF. Line segment BD and line segment CF intersect at point C. Line segment BD is perpendicular to line segment CF. Further, length of line AC equals length of line BD. Further, angle BAC is 45 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

triangleABC = scene.add.right_triangle(A, B, C)
parallelogramDEFG = scene.add.parallelogram(D, E, F, G)
line_BD = scene.add.line_segment(B, D)
line_CF = scene.add.line_segment(C, F)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.point_lies_on(B, line_BD)
scene.relate.point_lies_on(F, line_CF)
scene.relate.lines_intersect_at(line_BD, line_CF, C)
scene.relate.perpendicular(line_BD, line_CF)

### Extra relationships

scene.constraint.eq(line_AC.length, line_BD.length)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('A'), scene.get_object('C')), 45)

scene.solver.numerical()
scene.plot()

point_lies_on(B, line_BD)
point_lies_on(F, line_CF)
lines_intersect_at(line_BD, line_CF, C)
perpendicular(line_BD, line_CF)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a circle with center A. There is a circle with center B. There is a line segment CD. There is a line segment EF. There is a line segment GH. circle with center B is a scaled version of the circle with center A with a scale factor of 2. line segment CD is parallel to line segment EF. line segment GH is a diameter of the circle with center A. point C lies on the circle with center A.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
line_CD = scene.add.line_segment(C, D)
line_EF = scene.add.line_segment(E, F)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.scale(circle1, circle2, 2)
scene.relate.parallel(line_CD, line_EF)
scene.relate.is_diameter(line_GH, circle1)
scene.relate.point_lies_on(C, circle1)

scene.solver.numerical()
scene.plot()

scale(circle1, circle2, 2)
parallel(line_CD, line_EF)
is_diameter(line_GH, circle1)
point_lies_on(C, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F. There is a major arc with center A and endpoints B and C. There is a semicircle with center D and endpoints E and F. There is a line segment BE. There is a line segment CF. There is a line segment DE. Point B lies on the major arc with center A and endpoints B and C. Point C lies on the major arc with center A and endpoints B and C. Point E lies on the semicircle with center D and endpoints E and F. Point F lies on the semicircle with center D and endpoints E and F. Further, the radius of the major arc is equal to the radius of the semicircle and angle BAC is 90 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F = scene.add.points(["A", "B", "C", "D", "E", "F"])

major_arc1 = scene.add.major_arc(A, B, C)
semicircle1 = scene.add.semicircle(D, E, F)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.point_lies_on(B, major_arc1)
scene.relate.point_lies_on(C, major_arc1)
scene.relate.point_lies_on(E, semicircle1)
scene.relate.point_lies_on(F, semicircle1)

### Extra relationships

scene.constraint.eq(major_arc1.radius, semicircle1.radius)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('A'), scene.get_object('C')), 90)

scene.solver.numerical()
scene.plot()

point_lies_on(B, major_arc1)
point_lies_on(C, major_arc1)
point_lies_on(E, semicircle1)
point_lies_on(F, semicircle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a major arc with center A, start point B, and end point C. There is a trapezoid with vertices D, E, F, G. There is a line segment DF. There is a line segment EG. There is a line segment DE. There is a line segment FG. Angle DFG is a right angle. Line DE is parallel to line FG. Line DF is perpendicular to EG. Point D lies on the major arc with center A, start point B, and end point C.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

major_arc1 = scene.add.major_arc(A, B, C)
trapezoid1 = scene.add.trapezoid(D, E, F, G)
line_DF = scene.add.line_segment(D, F)
line_EG = scene.add.line_segment(E, G)
line_DE = scene.add.line_segment(D, E)
line_FG = scene.add.line_segment(F, G)

### relationships

scene.relate.right_angle(D, F, G)
scene.relate.parallel(line_DE, line_FG)
scene.relate.perpendicular(line_DF, line_EG)
scene.relate.point_lies_on(D, major_arc1)

scene.solver.numerical()
scene.plot()

right_angle(D, F, G)
parallel(line_DE, line_FG)
perpendicular(line_DF, line_EG)
point_lies_on(D, major_arc1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a right isosceles triangle BCD. There is a line segment AC. There is a line segment BC. There is a line segment CD. Line AC and line BC intersect at point C. Angle ACD is acute. Line BC is a chord of the circle. Line AC is a radius of the circle. Further, the area of the circle equals the perimeter of the triangle and angle ACD is 45 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D = scene.add.points(["A", "B", "C", "D"])

circle1 = scene.add.circle(A)
triangle1 = scene.add.right_isosceles_triangle(B, C, D)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.lines_intersect_at(line_AC, line_BC, C)
scene.relate.acute_angle(A, C, D)
scene.relate.is_chord(line_BC, circle1)
scene.relate.is_radius(line_AC, circle1)

### Extra relationships

scene.constraint.eq(circle1.area, triangle1.perimeter)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('C'), scene.get_object('D')), 45)

scene.solver.numerical()
scene.plot()

lines_intersect_at(line_AC, line_BC, C)
acute_angle(A, C, D)
is_chord(line_BC, circle1)
is_radius(line_AC, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is a triangle with vertices A, B, C. There is an acute triangle with vertices D, E, F. There is a line segment AG. There is a line segment BH. There is a line segment IJ. Line AG is an altitude of triangle ABC from vertex A. Line BH is a median of triangle ABC from vertex B. Line AG intersects line BH at G. Line IJ is the perpendicular bisector of line BH.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

triangleABC = scene.add.triangle(A, B, C)
acute_triangleDEF = scene.add.acute_triangle(D, E, F)
line_altitude = scene.add.line_segment(A, G)
line_median = scene.add.line_segment(B, H)
line_perp_bisector = scene.add.line_segment(I, J)

### relationships

scene.relate.is_altitude(line_altitude, triangleABC, A)
scene.relate.is_median(line_median, triangleABC, B)
scene.relate.lines_intersect_at(line_altitude, line_median, G)
scene.relate.perpendicular_bisector_at(line_median, line_perp_bisector)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F. There is a circle with center A. There is a major arc BC. There are line segments BD and CE. The extensions of line BD and line CE intersect at point F. Line BD is parallel to line CE. Point B lies on the circle. Point C lies on the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F = scene.add.points(["A", "B", "C", "D", "E", "F"])

circle1 = scene.add.circle(A)
major_arc1 = scene.add.major_arc(A, B, C)
line1 = scene.add.line_segment(B, D)
line2 = scene.add.line_segment(C, E)

### relationships

scene.relate.line_extensions_intersect_at(line1, line2, F)
scene.relate.parallel(line1, line2)
scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F. There is a circle with center A. There is a circle with center B. There is a line segment CD. There is a line segment AB. There is a line segment EF. Point C lies on the circle with center A. Point D lies on the circle with center A. Line CD is a chord of the circle with center A. Line AB is perpendicular to line CD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F = scene.add.points(["A", "B", "C", "D", "E", "F"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
line_CD = scene.add.line_segment(C, D)
line_AB = scene.add.line_segment(A, B)
line EF = scene.add.line_segment(E, F)

### relationships

scene.relate.point_lies_on(C, circle1)
scene.relate.point_lies_on(D, circle1)
scene.relate.is_chord(line_CD, circle1)
scene.relate.perpendicular(line_AB, line_CD)

scene.solver.numerical()
scene.plot()

point_lies_on(C, circle1)
point_lies_on(D, circle1)
is_chord(line_CD, circle1)
perpendicular(line_AB, line_CD)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a minor arc with center A from B to C. There is a rhombus with vertices D, E, F, G. There is a line segment DF. There is a line segment GE. There is a line segment AC. Line DF and line GE intersect at H. H is the midpoint of line AC. Line DF is perpendicular to line GE. Point B lies on the minor arc with center A from B to C. Further, the perimeter of the rhombus is equal to four times the length of line DF and the inscribed angle of the minor arc is 45 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

arc1 = scene.add.minor_arc(A, B, C)
rhombus1 = scene.add.rhombus(D, E, F, G)
line_DF = scene.add.line_segment(D, F)
line_GE = scene.add.line_segment(G, E)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.lines_intersect_at(line_DF, line_GE, H)
scene.relate.is_midpoint(H, line_AC)
scene.relate.perpendicular(line_DF, line_GE)
scene.relate.point_lies_on(B, arc1)

### Extra relationships

scene.constraint.eq(rhombus1.perimeter, 4 * line_DF.length)
scene.constraint.eq(arc1.inscribed_angle, 45)

scene.solver.numerical()
scene.plot()

lines_intersect_at(line_DF, line_GE, H)
is_midpoint(H, line_AC)
perpendicular(line_DF, line_GE)
point_lies_on(B, arc1)

scene.constraint.eq(scene.get_object('rhombus1').perimeter, 4 * scene.get_object('line_DF').length)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a circle with center A. There is a circle with center B. There is a line segment CD. There is a line segment AB. There is a line segment EF. The extensions of line segment CD and line segment AB intersect at point G. Line segment AB is the perpendicular bisector of line segment CD. Line segment CD is a chord of the circle with center A. Line segment EF is tangent to the circle with center B at point H.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
line_CD = scene.add.line_segment(C, D)
line_AB = scene.add.line_segment(A, B)
line EF = scene.add.line_segment(E, F)

### relationships

scene.relate.line_extensions_intersect_at(line_CD, line_AB, G)
scene.relate.perpendicular_bisector_at(line_CD, line_AB)
scene.relate.is_chord(line_CD, circle1)
scene.relate.tangent_to_circle(line EF, circle2, H)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, O. There is a right triangle with vertices A, B, C. There is a circle with center O. There is a line segment AB. There is a line segment BC. There is a line segment AC. There is a line segment OA. There is a line segment OC. Line AC is a diameter of the circle. The extension of line AB intersects the circle at points A and B. Line OA is a radius of the circle. Line OC is a radius of the circle. Further, length of line AB is equal to length of line BC. Further, the angle ABC is 90 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, O = scene.add.points(["A", "B", "C", "O"])

right_triangle_ABC = scene.add.right_triangle(A, B, C)
circle_O = scene.add.circle(O)
line_AB = scene.add.line_segment(A, B)
line_BC = scene.add.line_segment(B, C)
line_AC = scene.add.line_segment(A, C)
line_OA = scene.add.line_segment(O, A)
line_OC = scene.add.line_segment(O, C)

### relationships

scene.relate.is_diameter(line_AC, circle_O)
scene.relate.line_extension_intersects_circle_at(line_AB, circle_O, A, B)
scene.relate.is_radius(line_OA, circle_O)
scene.relate.is_radius(line_OC, circle_O)

### Extra relationships

scene.constraint.eq(line_AB.length, line_BC.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('B'), scene.get_object('C')), 90)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, O. There is a right triangle ABC with vertices A, B, C. There is a circle with center O. There is a line segment AC. There is a line segment BC. There is a line segment AB. There is a line segment OA. There is a line segment OC. Line AC is a diameter of the circle. Point A lies on the circle. Point C lies on the circle. Line OA is a radius of the circle. Further, the area of triangle ABC is equal to 6 and the inradius of triangle ABC is equal to 1.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, O = scene.add.points(["A", "B", "C", "O"])

triangleABC = scene.add.right_triangle(A, B, C)
circleO = scene.add.circle(O)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)
line_AB = scene.add.line_segment(A, B)
line_OA = scene.add.line_segment(O, A)
line_OC = scene.add.line_segment(O, C)

### relationships

scene.relate.is_diameter(line_AC, circleO)
scene.relate.point_lies_on(A, circleO)
scene.relate.point_lies_on(C, circleO)
scene.relate.is_radius(line_OA, circleO)

### Extra relationships

scene.constraint.eq(triangleABC.area, 6)
scene.constraint.eq(triangleABC.inradius, 1)

scene.solver.numerical()
scene.plot()

is_diameter(line_AC, circleO)
point_lies_on(A, circleO)
point_lies_on(C, circleO)
is_radius(line_OA, circleO)


Diagram description: The diagram contains points A, B, C, D, E. There is a kite ABCD. There is a circle with center E. There are line segments AC, BD, AB, CD. Line AB is tangent to the circle at point A. Line AC and line BD intersect at point E. Line AC is a diameter of the circle. Line AC is perpendicular to line BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E = scene.add.points(["A", "B", "C", "D", "E"])

kite1 = scene.add.kite(A, B, C, D)
circle1 = scene.add.circle(E)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_AB = scene.add.line_segment(A, B)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.tangent_to_circle(line_AB, circle1, A)
scene.relate.lines_intersect_at(line_AC, line_BD, E)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)

scene.solver.numerical()
scene.plot()

tangent_to_circle(line_AB, circle1, A)
lines_intersect_at(line_AC, line_BD, E)
is_diameter(line_AC, circle1)
perpendicular(line_AC, line_BD)


Diagram description: The diagram contains points A, B, C, D, E. There is a rectangle with A, B, C, D. There is a circle with center E. There is a line segment AC. There is a line segment BD. There is a line segment AB. There is a line segment BC. Line AC intersects the circle at points A and C. Line BD extends to intersect the circle at points B and D. Line AC is a diameter of the circle. Line AB is perpendicular to line BC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E = scene.add.points(["A", "B", "C", "D", "E"])

rectangle1 = scene.add.rectangle(A, B, C, D)
circle1 = scene.add.circle(E)
line_AC = scene.add.line_segment(A, C)
line BD = scene.add.line_segment(B, D)
line_AB = scene.add.line_segment(A, B)
line_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.line_intersects_circle_at(line_AC, circle1, A, C)
scene.relate.line_extension_intersects_circle_at(line BD, circle1, B, D)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AB, line_BC)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F. There is a major arc with center A, start point B, end point C. There is an isosceles triangle with vertices D, E, F. There is a line segment DE. There is a line segment DF. There is a line segment EF. There is a line segment AD. Point D lies on the major arc. Line segment DE and line segment AD intersect at point D. Line segment DF is an altitude of the isosceles triangle DEF originating from vertex D. Line segment DE is perpendicular to line segment DF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F = scene.add.points(["A", "B", "C", "D", "E", "F"])

major_arc1 = scene.add.major_arc(A, B, C)
isosceles_triangle1 = scene.add.isosceles_triangle(D, E, F)
line_DE = scene.add.line_segment(D, E)
line_DF = scene.add.line_segment(D, F)
line EF = scene.add.line_segment(E, F)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.point_lies_on(D, major_arc1)
scene.relate.lines_intersect_at(line_DE, line_AD, D)
scene.relate.is_altitude(line_DF, isosceles_triangle1, D)
scene.relate.perpendicular(line_DE, line_DF)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a circle with center A. There is a circle with center B. There is a line segment CD. There is a line segment EF. There is a line segment AH. The extensions of line CD and line EF intersect at point G. Line AH is a radius of the circle with center A. Line CD is perpendicular to line EF. Point H lies on the circle with center A. Further, the diameter of the circle with center A is 6 units and the length of line CD is less than or equal to the diameter of the circle with center A.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
line_CD = scene.add.line_segment(C, D)
line_EF = scene.add.line_segment(E, F)
line_AH = scene.add.line_segment(A, H)

### relationships

scene.relate.line_extensions_intersect_at(line_CD, line_EF, G)
scene.relate.is_radius(line_AH, circle1)
scene.relate.perpendicular(line_CD, line_EF)
scene.relate.point_lies_on(H, circle1)

### Extra relationships

scene.constraint.eq(circle1.diameter, 6)
scene.constraint.leq(line_CD.length, circle1.diameter)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M, N, O. There is a scalene triangle with vertices A, B, C. There is a rectangle with vertices D, E, F, G. There is a square with vertices H, I, J, K. There is a line segment AL. There is a line segment CM. There is a line segment BN. There is a line segment HO. Line AL is an altitude of triangle ABC from vertex A. Line CM is an altitude of triangle ABC from vertex C. Line BN is perpendicular to line HO. Triangle ABC is similar to itself.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"])

triangleABC = scene.add.scalene_triangle(A, B, C)
rectangleDEFG = scene.add.rectangle(D, E, F, G)
squareHIJK = scene.add.square(H, I, J, K)
line_AL = scene.add.line_segment(A, L)
line_CM = scene.add.line_segment(C, M)
line_BN = scene.add.line_segment(B, N)
line_HO = scene.add.line_segment(H, O)

### relationships

scene.relate.is_altitude(line_AL, triangleABC, A)
scene.relate.is_altitude(line_CM, triangleABC, C)
scene.relate.similar(triangleABC, triangleABC)
scene.relate.perpendicular(line_BN, line_HO)

scene.solver.numerical()
scene.plot()

is_altitude(line_AL, triangleABC, A)
is_altitude(line_CM, triangleABC, C)
similar(triangleABC, triangleABC)
perpendicular(line_BN, line_HO)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I.
There is a circle with center A.
There is a regular pentagon with vertices E, F, G, H, I.
There is a triangle with vertices B, C, D.
Point B lies on the circle.
Point C lies on the circle.
There is an acute angle at D with arms DB and DC.
The circle is the circumcircle of triangle BCD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

circle1 = scene.add.circle(A)
triangle1 = scene.add.triangle(B, C, D)
pentagon1 = scene.add.regular_pentagon(E, F, G, H, I)

### relationships

scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)
scene.relate.acute_angle(D, B, C)
scene.relate.is_circumcircle(circle1, triangle1)

scene.solver.numerical()
scene.plot()

point_lies_on(B, circle1)
point_lies_on(C, circle1)
acute_angle(D, B, C)
is_circumcircle(circle1, triangle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M, N. There is a quadrilateral with vertices A, B, C, D. There is a rectangle with vertices E, F, G, H. There is a right trapezoid with vertices I, J, K, L. There is a line segment AC. There is a line segment BD. There is a line segment EG. There is a line segment FH. M is the midpoint of line AC. N is the midpoint of line BD. The angle ABC is a right angle. Line AC is perpendicular to line BD. Further, the length of line BD is equal to the length of line EG.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M, N = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"])

quadrilateral1 = scene.add.quadrilateral(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
right_trapezoid1 = scene.add.right_trapezoid(I, J, K, L)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EG = scene.add.line_segment(E, G)
line_FH = scene.add.line_segment(F, H)

### relationships

scene.relate.is_midpoint(M, line_AC)
scene.relate.is_midpoint(N, line_BD)
scene.relate.right_angle(A, B, C)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

scene.constraint.eq(line_BD.length, line_EG.length)

scene.solver.numerical()
scene.plot()

is_midpoint(M, line_AC)
is_midpoint(N, line_BD)
right_angle(A, B, C)
perpendicular(line_AC, line_BD)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, M, N. There is a quadrilateral ABCD. There is an equilateral triangle EFG. There is a quadrilateral HIJK. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment FG. There is a line segment GH. Line AC intersects line BD at point M. Quadrilateral HIJK is the mirror image of quadrilateral ABCD across line EF. Line AC is perpendicular to line BD. Line GH intersects line EF at point N. Further, the area of quadrilateral ABCD equals the area of equilateral triangle EFG. Further, the length of line AC is less than or equal to the length of line BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, M, N = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M", "N"])

quad1 = scene.add.quadrilateral(A, B, C, D)
tri1 = scene.add.equilateral_triangle(E, F, G)
quad2 = scene.add.quadrilateral(H, I, J, K)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.lines_intersect_at(line_AC, line_BD, M)
scene.relate.mirror_across_line(quad1, quad2, line_EF)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.lines_intersect_at(line_EF, line_GH, N)

### Extra relationships

scene.constraint.eq(quad1.area, tri1.area)
scene.constraint.leq(line_AC.length, line_BD.length)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a major arc ABC with center A. There is a right trapezoid DEFG. There is a circle with center H. There is a line segment DE. There is a line segment EF. There is a line segment HB. Line DE is perpendicular to line EF. Point I is the midpoint of line DE. Line HB is a radius of the circle. Point B lies on the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

major_arc1 = scene.add.major_arc(A, B, C)
right_trap1 = scene.add.right_trapezoid(D, E, F, G)
circle1 = scene.add.circle(H)
line_DE = scene.add.line_segment(D, E)
line_EF = scene.add.line_segment(E, F)
line_HB = scene.add.line_segment(H, B)

### relationships

scene.relate.perpendicular(line_DE, line_EF)
scene.relate.is_midpoint(I, line_DE)
scene.relate.is_radius(line_HB, circle1)
scene.relate.point_lies_on(B, circle1)

scene.solver.numerical()
scene.plot()

perpendicular(line_DE, line_EF)
is_midpoint(I, line_DE)
is_radius(line_HB, circle1)
point_lies_on(B, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L. There is a square with vertices A, B, C, D. There is a rectangle with vertices E, F, G, H. There is a trapezoid with vertices I, J, K, L. There is a line segment AC. There is a line segment EG. There is a line segment IK. There is a line segment JL. There is a right angle at A between AB and AD. Points A, C, and E are collinear. Line AC is parallel to line EG. Line IK is perpendicular to line JL. Further, the length of line AC is equal to the length of line EG and the area of trapezoid IJKL is less than or equal to 12 square units.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"])

square1 = scene.add.square(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
trapezoid1 = scene.add.trapezoid(I, J, K, L)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_IK = scene.add.line_segment(I, K)
line_JL = scene.add.line_segment(J, L)

### relationships

scene.relate.right_angle(B, A, D)
scene.relate.collinear(A, C, E)
scene.relate.parallel(line_AC, line_EG)
scene.relate.perpendicular(line_IK, line_JL)

### Extra relationships

scene.constraint.eq(line_AC.length, line_EG.length)
scene.constraint.leq(trapezoid1.area, 12.0)

scene.solver.numerical()
scene.plot()

right_angle(B, A, D)
collinear(A, C, E)
parallel(line_AC, line_EG)
perpendicular(line_IK, line_JL)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a circle with center A. There is a kite with vertices B, C, D, E. There is a minor arc with center A, start point F, and end point G. There is a line segment BE. There is a line segment CD. There is a line segment AF. There is a line segment AG. Line BE is a chord of the circle. Line BE is congruent to line CD. Further, the length of line BE is equal to the length of line CD. Further, the central angle of the minor arc FG is 90 degrees. Further, the length of line AF is less than or equal to the diameter of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

circle1 = scene.add.circle(A)
kite1 = scene.add.kite(B, C, D, E)
minor_arc1 = scene.add.minor_arc(A, F, G)
line_BE = scene.add.line_segment(B, E)
line_CD = scene.add.line_segment(C, D)
line_AF = scene.add.line_segment(A, F)
line_AG = scene.add.line_segment(A, G)

### relationships

scene.relate.is_chord(line_BE, circle1)
scene.relate.congruent(line_BE, line_CD)
scene.relate.point_lies_on(F, circle1)
scene.relate.point_lies_on(G, circle1)

### Extra relationships

scene.constraint.eq(line_BE.length, line_CD.length)
scene.constraint.eq(minor_arc1.central_angle, 90)
scene.constraint.leq(line_AF.length, circle1.diameter)

scene.solver.numerical()
scene.plot()

is_chord(line_BE, circle1)
congruent(line_BE, line_CD)
point_lies_on(F, circle1)
point_lies_on(G, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a major arc with center A, from B to C. There is a parallelogram with vertices D, E, F, G. There is a circle with center H. There is a line segment AD. There is a line segment HF. There is a line segment AC. Line HF is a radius of the circle. Line AD is tangent to the circle at point A. Line AC is a chord of the circle. Line AD is perpendicular to line AC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

semicircle1 = scene.add.major_arc(A, B, C)
parallelogram1 = scene.add.parallelogram(D, E, F, G)
circle1 = scene.add.circle(H)
line_AD = scene.add.line_segment(A, D)
line_HF = scene.add.line_segment(H, F)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.is_radius(line_HF, circle1)
scene.relate.tangent_to_circle(line_AD, circle1, A)
scene.relate.is_chord(line_AC, circle1)
scene.relate.perpendicular(line_AD, line_AC)

scene.solver.numerical()
scene.plot()

is_radius(line_HF, circle1)
tangent_to_circle(line_AD, circle1, A)
is_chord(line_AC, circle1)
perpendicular(line_AD, line_AC)


Diagram description: The diagram contains points A, B, C, D, E, O. There is a right triangle ABC. There is a rhombus ABDE. There is a circle with center O. There are line segments AC, BE, and OA. Line OA is a radius of the circle. Point O is the midpoint of line AC. Line AC is perpendicular to line BE. The circle is the circumcircle of right triangle ABC. Further, length of line BE equals half the length of line AC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, O = scene.add.points(["A", "B", "C", "D", "E", "O"])

triangleABC = scene.add.right_triangle(A, B, C)
rhombusABDE = scene.add.rhombus(A, B, D, E)
circleO = scene.add.circle(O)
line_AC = scene.add.line_segment(A, C)
line_BE = scene.add.line_segment(B, E)
line_OA = scene.add.line_segment(O, A)

### relationships

scene.relate.is_radius(line_OA, circleO)
scene.relate.is_midpoint(O, line_AC)
scene.relate.perpendicular(line_AC, line_BE)
scene.relate.is_circumcircle(circleO, triangleABC)

### Extra relationships

scene.constraint.eq(line_BE.length, line_AC.length / 2)

scene.solver.numerical()
scene.plot()

is_radius(line_OA, circleO)
is_midpoint(O, line_AC)
perpendicular(line_AC, line_BE)
is_circumcircle(circleO, triangleABC)

scene.constraint.eq(scene.get_object('line_BE').length, scene.get_object('line_AC').length / 2)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a triangle ABC. There is a triangle DEF. There is a major arc with center G, start point H, and end point I. There is a line segment AC. There is a line segment DF. Point A lies on the major arc GHI. Point C lies on the major arc GHI. Triangle ABC is similar to triangle DEF. Line AC is perpendicular to line DF. Further, area of triangle ABC is equal to area of triangle DEF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

triangle_ABC = scene.add.triangle(A, B, C)
triangle_DEF = scene.add.triangle(D, E, F)
major_arc_GHI = scene.add.major_arc(G, H, I)
line_AC = scene.add.line_segment(A, C)
line_DF = scene.add.line_segment(D, F)

### relationships

scene.relate.point_lies_on(A, major_arc_GHI)
scene.relate.point_lies_on(C, major_arc_GHI)
scene.relate.similar(triangle_ABC, triangle_DEF)
scene.relate.perpendicular(line_AC, line_DF)

### Extra relationships

scene.constraint.eq(triangle_ABC.area, triangle_DEF.area)

scene.solver.numerical()
scene.plot()

point_lies_on(A, major_arc_GHI)
point_lies_on(C, major_arc_GHI)
similar(triangle_ABC, triangle_DEF)
perpendicular(line_AC, line_DF)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M, N, O. There is a major arc with center A and endpoints B and C. There is a regular octagon with vertices D, E, F, G, H, I, J, K. There is a triangle with vertices L, M, N. There is a line segment OM. There is a line segment LN. There is a line segment MN. Angle LMN is obtuse. Point O is the midpoint of line LN. The major arc is symmetric across line OM. Line MN is an altitude of triangle LMN from vertex M. Further, the area of triangle LMN equals the inradius of the regular octagon.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"])

major_arc1 = scene.add.major_arc(A, B, C)
regular_octagon1 = scene.add.regular_octagon(D, E, F, G, H, I, J, K)
triangle1 = scene.add.triangle(L, M, N)
line_OM = scene.add.line_segment(O, M)
line_LN = scene.add.line_segment(L, N)
line_MN = scene.add.line_segment(M, N)

### relationships

scene.relate.obtuse_angle(L, M, N)
scene.relate.is_midpoint(O, line_LN)
scene.relate.mirror_across_line(major_arc1, major_arc1, line_OM)
scene.relate.is_altitude(line_MN, triangle1, M)

### Extra relationships

scene.constraint.eq(triangle1.area, regular_octagon1.inradius)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, M. There is a rhombus with vertices A, B, C, D. There is a quadrilateral with vertices E, F, G, H. There are line segments AC, BD, EF, and GH. The rhombus is similar to the quadrilateral. Line AC intersects line BD at point M. Line AC is perpendicular to line BD. Line EF is parallel to line GH. Further, the slope of line AC is equal to the slope of line EF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, M = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "M"])

rhombus1 = scene.add.rhombus(A, B, C, D)
quad1 = scene.add.quadrilateral(E, F, G, H)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.similar(rhombus1, quad1)
scene.relate.lines_intersect_at(line_AC, line_BD, M)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.parallel(line_EF, line_GH)

### Extra relationships

scene.constraint.eq(line_AC.slope, line_EF.slope)

scene.solver.numerical()
scene.plot()

similar(rhombus1, quad1)
lines_intersect_at(line_AC, line_BD, M)
perpendicular(line_AC, line_BD)
parallel(line_EF, line_GH)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a circle with center A. There is a right triangle BCD. There is a quadrilateral EFGH. There is a line segment BC. There is a line segment CD. There is a line segment AG. There is a line segment EH. Line AG is a radius of the circle. Points A, G, and H are collinear. Line BC is a chord of the circle. Line BC is perpendicular to line CD. Further, the perimeter of right triangle BCD is equal to 12 units and the length of line BC is less than or equal to 5 units.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

circle1 = scene.add.circle(A)
right_triangle1 = scene.add.right_triangle(B, C, D)
quadrilateral1 = scene.add.quadrilateral(E, F, G, H)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_AG = scene.add.line_segment(A, G)
line_EH = scene.add.line_segment(E, H)

### relationships

scene.relate.is_radius(line_AG, circle1)
scene.relate.collinear(A, G, H)
scene.relate.is_chord(line_BC, circle1)
scene.relate.perpendicular(line_BC, line_CD)

### Extra relationships

scene.constraint.eq(right_triangle1.perimeter, 12.0)
scene.constraint.leq(line_BC.length, 5.0)

scene.solver.numerical()
scene.plot()

is_radius(line_AG, circle1)
collinear(A, G, H)
is_chord(line_BC, circle1)
perpendicular(line_BC, line_CD)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a parallelogram with vertices A, B, C, D. There is a right triangle with vertices E, F, G. There is a circle with center H. There is a line segment AC. There is a line segment BD. There is a line segment HF. There is a line segment FG. There is a line segment EG. Line segment AC and line segment BD intersect at point I. Line segment HF and line segment FG intersect at point F. Line segment AC is a diameter of the circle. Line segment HF is a radius of the circle. Further, the length of line segment HF is equal to the length of line segment FG.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

parallelogram1 = scene.add.parallelogram(A, B, C, D)
right_triangle1 = scene.add.right_triangle(E, F, G)
circle1 = scene.add.circle(H)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_HF = scene.add.line_segment(H, F)
line_FG = scene.add.line_segment(F, G)
line_EG = scene.add.line_segment(E, G)

### relationships

scene.relate.line_extensions_intersect_at(line_AC, line_BD, I)
scene.relate.line_extensions_intersect_at(line_HF, line_FG, F)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.is_radius(line_HF, circle1)

### Extra relationships

scene.constraint.eq(line_HF.length, line_FG.length)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M, N, O. There is a regular heptagon with vertices A, B, C, D, E, F, G. There is a rhomboid with vertices H, I, J, K. There is a rhomboid with vertices L, M, N, O. There is a line segment AC. There is a line segment HI. There is a line segment HK. There is a line segment MN. The rhomboid with vertices H, I, J, K is a mirror image of the rhomboid with vertices L, M, N, O across line AC. The extensions of line segment HI and line segment MN intersect at point B. Line segment HI is perpendicular to line segment HK. Angle H I K is acute. Further, the area of the rhomboid with vertices H, I, J, K is equal to one third of the area of the regular heptagon with vertices A, B, C, D, E, F, G.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"])

heptagon1 = scene.add.regular_heptagon(A, B, C, D, E, F, G)
rhomboid1 = scene.add.rhomboid(H, I, J, K)
rhomboid2 = scene.add.rhomboid(L, M, N, O)
line_AC = scene.add.line_segment(A, C)
line_HI = scene.add.line_segment(H, I)
line_HK = scene.add.line_segment(H, K)
line_MN = scene.add.line_segment(M, N)

### relationships

scene.relate.mirror_across_line(rhomboid1, rhomboid2, line_AC)
scene.relate.line_extensions_intersect_at(line_HI, line_MN, B)
scene.relate.perpendicular(line_HI, line_HK)
scene.relate.acute_angle(H, I, K)

### Extra relationships

scene.constraint.eq(rhomboid1.area, heptagon1.area / 3)

scene.solver.numerical()
scene.plot()

scene.constraint.eq(scene.get_object('rhomboid1').area, scene.get_object('heptagon1').area / 3)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a circle with center A. There is a rhombus with vertices B, C, D, E. There is a parallelogram with vertices F, G, H, I. There are line segments BC, CD, FG, GH. Line BC is parallel to line FG. Line CD is perpendicular to line BC. Line CD is a chord of the circle. Line FG is a diameter of the circle. Further, the area of the rhombus equals the area of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

circle1 = scene.add.circle(A)
rhombus1 = scene.add.rhombus(B, C, D, E)
parallelogram1 = scene.add.parallelogram(F, G, H, I)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_FG = scene.add.line_segment(F, G)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.parallel(line_BC, line_FG)
scene.relate.perpendicular(line_CD, line_BC)
scene.relate.is_chord(line_CD, circle1)
scene.relate.is_diameter(line_FG, circle1)

### Extra relationships

scene.constraint.eq(rhombus1.area, circle1.area)

scene.solver.numerical()
scene.plot()

parallel(line_BC, line_FG)
perpendicular(line_CD, line_BC)
is_chord(line_CD, circle1)
is_diameter(line_FG, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a circle with center A. There is a circle with center B. There is an obtuse triangle with vertices A, B, C. There are line segments AD, BE, and CF. Line AD is a radius of the circle with center A. Points A, D, and G are collinear. Line BE is an altitude of the obtuse triangle ABC from vertex B. Line CF is a median of the obtuse triangle ABC from vertex C. Further, length of line BE is equal to length of line AD, and angle ABC is 120 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
triangleABC = scene.add.obtuse_triangle(A, B, C)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)

### relationships

scene.relate.is_radius(line_AD, circle1)
scene.relate.collinear(A, D, G)
scene.relate.is_altitude(line_BE, triangleABC, B)
scene.relate.is_median(line_CF, triangleABC, C)

### Extra relationships

scene.constraint.eq(line_BE.length, line_AD.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('B'), scene.get_object('C')), 120)

scene.solver.numerical()
scene.plot()

is_radius(line_AD, circle1)
collinear(A, D, G)
is_altitude(line_BE, triangleABC, B)
is_median(line_CF, triangleABC, C)


Diagram description: The diagram contains points A, B, C, D, E, F. There is a parallelogram with vertices A, B, C, D. There is a circle with center E. There is a circle with center F. There are line segments AC, BD, and EF. The angle BAD is acute. The extension of line AC intersects the circle with center E at points A and C. Line AC is a diameter of the circle with center E. Line AC is perpendicular to line BD. Further, the area of the circle with center E is equal to the area of the circle with center F and the perimeter of the parallelogram with vertices A, B, C, D is less than or equal to 20.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F = scene.add.points(["A", "B", "C", "D", "E", "F"])

parallelogram1 = scene.add.parallelogram(A, B, C, D)
circle1 = scene.add.circle(E)
circle2 = scene.add.circle(F)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line EF = scene.add.line_segment(E, F)

### relationships

scene.relate.acute_angle(B, A, D)
scene.relate.line_extension_intersects_circle_at(line_AC, circle1, A, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

scene.constraint.eq(circle1.area, circle2.area)
scene.constraint.leq(parallelogram1.perimeter, 20)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a triangle with vertices A, B, C. There is a triangle with vertices D, E, F. There is a minor arc with center G, start point H, and end point I. There is a line segment AD. There is a line segment BE. There is a line segment CF. There is a line segment GH. There is a line segment HI. Triangle ABC is a scaled version of triangle DEF with a scaling factor of 2. Points A, D, and G are collinear. Line AD is perpendicular to line BE. Line CF is an altitude of triangle ABC originating from vertex C. Further, the area of the minor arc is equal to the area of triangle ABC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

triangle1 = scene.add.triangle(A, B, C)
triangle2 = scene.add.triangle(D, E, F)
arc1 = scene.add.minor_arc(G, H, I)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_GH = scene.add.line_segment(G, H)
line_HI = scene.add.line_segment(H, I)

### relationships

scene.relate.scale(triangle1, triangle2, 2)
scene.relate.collinear(A, D, G)
scene.relate.perpendicular(line_AD, line_BE)
scene.relate.is_altitude(line_CF, triangle1, C)

### Extra relationships

scene.constraint.eq(arc1.area, triangle1.area)

scene.solver.numerical()
scene.plot()

scale(triangle1, triangle2, 2)
collinear(A, D, G)
perpendicular(line_AD, line_BE)
is_altitude(line_CF, triangle1, C)


Diagram description: The diagram contains points A, B, C, D, E. There is an equilateral triangle with vertices A, B, C. There is a circle with center D. There is a circle with center E. There are line segments AD, BE, AC, and BC. Line AD is a radius of the circle with center D. Line BE is a radius of the circle with center E. Line AC is tangent to the circle with center D at point A. Line BC intersects the circle with center E at points B and C. Further, the inradius of the equilateral triangle equals the radius of the circle with center D.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E = scene.add.points(["A", "B", "C", "D", "E"])

triangle1 = scene.add.equilateral_triangle(A, B, C)
circle1 = scene.add.circle(D)
circle2 = scene.add.circle(E)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.is_radius(line_AD, circle1)
scene.relate.is_radius(line_BE, circle2)
scene.relate.tangent_to_circle(line_AC, circle1, A)
scene.relate.line_intersects_circle_at(line_BC, circle2, B, C)

### Extra relationships

scene.constraint.eq(triangle1.inradius, circle1.radius)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, O, P, Q, R, S, T, U. There is a triangle ABC with AB = BC. There is a regular hexagon PQRSTU. There is a circle with center O. There is a line segment AD. There is a line segment BE. There is a line segment CF. Line AD is perpendicular to line BE. Line BE is the angle bisector of angle ABC. The circle is the circumcircle of triangle ABC. Line CF is a diameter of the circle. Further, the inradius of triangle ABC equals the inradius of regular hexagon PQRSTU.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, O, P, Q, R, S, T, U = scene.add.points(["A", "B", "C", "D", "E", "F", "O", "P", "Q", "R", "S", "T", "U"])

triangleABC = scene.add.isosceles_triangle(A, B, C)
hexagonPQRSTU = scene.add.regular_hexagon(P, Q, R, S, T, U)
circleO = scene.add.circle(O)
lineAD = scene.add.line_segment(A, D)
lineBE = scene.add.line_segment(B, E)
lineCF = scene.add.line_segment(C, F)

### relationships

scene.relate.perpendicular(lineAD, lineBE)
scene.relate.angle_bisector(A, B, C, lineBE)
scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.is_diameter(lineCF, circleO)

### Extra relationships

scene.constraint.eq(triangleABC.inradius, hexagonPQRSTU.inradius)

scene.solver.numerical()
scene.plot()

perpendicular(lineAD, lineBE)
angle_bisector(A, B, C, lineBE)
is_circumcircle(circleO, triangleABC)
is_diameter(lineCF, circleO)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M. There is a rhomboid ABCD. There is a parallelogram EFGH. There is a quadrilateral IJKL. There is a line segment AC. There is a line segment EG. There is a line segment IK. There is a line segment JL. There is a line segment BD. There is a line segment FH. Line AC and line EG intersect at M. M is the centroid of quadrilateral IJKL. Line BD is perpendicular to line FH. Line AC is parallel to line IK. Further, the length of line BD equals the length of line FH. Further, the length of line AC is less than or equal to the length of line EG. Further, the angle BAD measures 60 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"])

rhomboid1 = scene.add.rhomboid(A, B, C, D)
parallelogram1 = scene.add.parallelogram(E, F, G, H)
quadrilateral1 = scene.add.quadrilateral(I, J, K, L)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_IK = scene.add.line_segment(I, K)
line_JL = scene.add.line_segment(J, L)
line_BD = scene.add.line_segment(B, D)
line_FH = scene.add.line_segment(F, H)

### relationships

scene.relate.line_extensions_intersect_at(line_AC, line_EG, M)
scene.relate.is_centroid(M, quadrilateral1)
scene.relate.perpendicular(line_BD, line_FH)
scene.relate.parallel(line_AC, line_IK)

### Extra relationships

scene.constraint.eq(line_BD.length, line_FH.length)
scene.constraint.leq(line_AC.length, line_EG.length)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('A'), scene.get_object('D')), 60)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a circle with center A. There is a circle with center B. There is a semicircle with center C and endpoints D and E. There is a line segment AC. There is a line segment BE. There is a line segment CD. There is a line segment DE. Line AC intersects line BE at point F. The extensions of line CD and line DE intersect at point G. Line CD is a diameter of the circle with center A. Line BE is a radius of the circle with center B.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
semicircle1 = scene.add.semicircle(C, D, E)
line_AC = scene.add.line_segment(A, C)
line_BE = scene.add.line_segment(B, E)
line_CD = scene.add.line_segment(C, D)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.lines_intersect_at(line_AC, line_BE, F)
scene.relate.line_extensions_intersect_at(line_CD, line_DE, G)
scene.relate.is_diameter(line_CD, circle1)
scene.relate.is_radius(line_BE, circle2)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is an equilateral triangle ABC. There is an equilateral triangle DEF. There is a right trapezoid GHIJ. There are line segments AC, DF, GI, and HJ. Line AC and line DF intersect at point K. Point K lies on line AC. Triangle ABC and triangle DEF are mirror images across line GI. Line GI is perpendicular to line HJ. Further, the area of triangle ABC equals the area of trapezoid GHIJ.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

triangle1 = scene.add.equilateral_triangle(A, B, C)
triangle2 = scene.add.equilateral_triangle(D, E, F)
trapezoid1 = scene.add.right_trapezoid(G, H, I, J)
line_AC = scene.add.line_segment(A, C)
line_DF = scene.add.line_segment(D, F)
line_GI = scene.add.line_segment(G, I)
line_HJ = scene.add.line_segment(H, J)

### relationships

scene.relate.line_extensions_intersect_at(line_AC, line_DF, K)
scene.relate.point_lies_on(K, line_AC)
scene.relate.mirror_across_line(triangle1, triangle2, line_GI)
scene.relate.perpendicular(line_GI, line_HJ)

### Extra relationships

scene.constraint.eq(triangle1.area, trapezoid1.area)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E. There is a circle with center A. There is an isosceles triangle with vertices B, C, D. There is a circle with center E. There is a line segment BC. There is a line segment DE. There is a line segment CD. The circle with center A is the circumcircle of the triangle BCD. Line DE is the angle bisector of angle BDC. Line DE is a radius of the circle with center E. Line BC is a diameter of the circle with center A.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E = scene.add.points(["A", "B", "C", "D", "E"])

circle1 = scene.add.circle(A)
isosceles_triangle1 = scene.add.isosceles_triangle(B, C, D)
circle2 = scene.add.circle(E)
line_BC = scene.add.line_segment(B, C)
line_DE = scene.add.line_segment(D, E)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.is_circumcircle(circle1, isosceles_triangle1)
scene.relate.angle_bisector(B, D, C, line_DE)
scene.relate.is_radius(line_DE, circle2)
scene.relate.is_diameter(line_BC, circle1)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, O, M. There is an obtuse triangle ABC with vertices A, B, C. There is a triangle DEF with vertices D, E, F. There is a circle with center O. There is a line AD. There is a line BE. There is a line CF. There is a line OM. M is the centroid of triangle ABC. line BE is the angle bisector of ∠ABC. line AD is an altitude of triangle ABC from vertex A. circle O is the circumcircle of triangle ABC. Further, the area of triangle ABC is twice the area of triangle DEF and the length of line BE is less than or equal to the circumradius of triangle ABC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, O, M = scene.add.points(["A", "B", "C", "D", "E", "F", "O", "M"])

triangleABC = scene.add.obtuse_triangle(A, B, C)
triangleDEF = scene.add.triangle(D, E, F)
circleO = scene.add.circle(O)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_OM = scene.add.line_segment(O, M)

### relationships

scene.relate.is_centroid(M, triangleABC)
scene.relate.angle_bisector(A, B, C, line_BE)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_circumcircle(circleO, triangleABC)

### Extra relationships

scene.constraint.eq(triangleABC.area, 2 * triangleDEF.area)
scene.constraint.leq(line_BE.length, triangleABC.circumradius)

scene.solver.numerical()
scene.plot()

is_centroid(M, triangleABC)
angle_bisector(A, B, C, line_BE)
is_altitude(line_AD, triangleABC, A)
is_circumcircle(circleO, triangleABC)

scene.constraint.eq(scene.get_object('triangleABC').area, 2 * scene.get_object('triangleDEF').area)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a circle with center A. There is a minor arc BC. There is an isosceles trapezoid DEFG. There is a line segment BE. There is a line segment CF. There is a line segment DE. There is a line segment GF. The angle BAC is acute. Line BE is a chord of the circle. Line BE is perpendicular to line CF. Line DE is a diameter of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

circle1 = scene.add.circle(A)
minor_arc1 = scene.add.minor_arc(A, B, C)
isosceles_trapezoid1 = scene.add.isosceles_trapezoid(D, E, F, G)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_DE = scene.add.line_segment(D, E)
line_GF = scene.add.line_segment(G, F)

### relationships

scene.relate.acute_angle(B, A, C)
scene.relate.is_chord(line_BE, circle1)
scene.relate.perpendicular(line_BE, line_CF)
scene.relate.is_diameter(line_DE, circle1)

scene.solver.numerical()
scene.plot()

acute_angle(B, A, C)
is_chord(line_BE, circle1)
perpendicular(line_BE, line_CF)
is_diameter(line_DE, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is a right triangle ABC. There is a right trapezoid DEFG. There is a scalene triangle HIJ. There is a line segment AC. There is a line segment DF. There is a line segment BI. Line AC intersects line DF at point K. Line AC is parallel to line DF. Line BI is an altitude of triangle ABC from vertex B. Angle JIH is obtuse. Further, the area of triangle ABC is equal to the area of triangle HIJ and the area of trapezoid DEFG is less than or equal to 12 square units.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

triangle1 = scene.add.right_triangle(A, B, C)
trapezoid1 = scene.add.right_trapezoid(D, E, F, G)
triangle2 = scene.add.scalene_triangle(H, I, J)
line_AC = scene.add.line_segment(A, C)
line_DF = scene.add.line_segment(D, F)
line_BI = scene.add.line_segment(B, I)

### relationships

scene.relate.lines_intersect_at(line_AC, line_DF, K)
scene.relate.parallel(line_AC, line_DF)
scene.relate.is_altitude(line_BI, triangle1, B)
scene.relate.obtuse_angle(J, I, H)

### Extra relationships

scene.constraint.eq(triangle1.area, triangle2.area)
scene.constraint.leq(trapezoid1.area, 12.0)

scene.solver.numerical()
scene.plot()

lines_intersect_at(line_AC, line_DF, K)
parallel(line_AC, line_DF)
is_altitude(line_BI, triangle1, B)
obtuse_angle(J, I, H)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is a regular pentagon with vertices A, B, C, D, E. There is a square with vertices F, G, H, I. There is a circle with center J. There is a line segment AC. There is a line segment FG. There is a line segment JH. Line AC intersects line FG at point K. The angle AKF is acute. Circle with center J is the circumcircle of the regular pentagon with vertices A, B, C, D, E. Line segment JH is a radius of the circle with center J. Further, the area of the circle with center J equals the perimeter of the square with vertices F, G, H, I.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

pentagon1 = scene.add.regular_pentagon(A, B, C, D, E)
square1 = scene.add.square(F, G, H, I)
circle1 = scene.add.circle(J)
line_AC = scene.add.line_segment(A, C)
line_FG = scene.add.line_segment(F, G)
line_JH = scene.add.line_segment(J, H)

### relationships

scene.relate.lines_intersect_at(line_AC, line_FG, K)
scene.relate.acute_angle(A, K, F)
scene.relate.is_circumcircle(circle1, pentagon1)
scene.relate.is_radius(line_JH, circle1)

### Extra relationships

scene.constraint.eq(circle1.area, square1.perimeter)

scene.solver.numerical()
scene.plot()

lines_intersect_at(line_AC, line_FG, K)
acute_angle(A, K, F)
is_circumcircle(circle1, pentagon1)
is_radius(line_JH, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L, M. There is an isosceles triangle ABC. There is a regular hexagon with vertices D, E, F, G, H, I. There is a trapezoid JKLM. There is a line segment AB. There is a line segment BC. There is a line segment CD. There is a line segment DE. There is a line segment EF. There is a line segment FG. There is a line segment GH. There is a line segment HI. There is a line segment IJ. There is a line segment JK. There is a line segment KL. There is a line segment LM. There is a line segment MJ. There is a line segment AC. There is a line segment AM. There is a line segment BM. There is a line segment AL. There is a line segment BL. There is a line segment CM. There is a line segment CL. There is a line KL. There is a right angle at B between BA and BC. line AB is parallel to line KL. line BL is an altitude of triangle ABC from vertex B. line BL is a median of triangle ABC from vertex B.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L, M = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"])

triangle_ABC = scene.add.isosceles_triangle(A, B, C)
hexagon_DEF_GHIJKL = scene.add.regular_hexagon(D, E, F, G, H, I)
trapezoid_JKLM = scene.add.trapezoid(J, K, L, M)
line_AB = scene.add.line_segment(A, B)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DE = scene.add.line_segment(D, E)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_GH = scene.add.line_segment(G, H)
line_HI = scene.add.line_segment(H, I)
line_IJ = scene.add.line_segment(I, J)
line_JK = scene.add.line_segment(J, K)
line_KL = scene.add.line_segment(K, L)
line_LM = scene.add.line_segment(L, M)
line_MJ = scene.add.line_segment(M, J)
line_AC = scene.add.line_segment(A, C)
line_AM = scene.add.line_segment(A, M)
line_BM = scene.add.line_segment(B, M)
line_AL = scene.add.line_segment(A, L)
line_BL = scene.add.line_segment(B, L)
line_CM = scene.add.line_segment(C, M)
line_CL = scene.add.line_segment(C, L)
line_KL_parallel_line = scene.add.line(K, L)

### relationships

scene.relate.right_angle(A, B, C)
scene.relate.parallel(line_AB, line_KL_parallel_line)
scene.relate.is_altitude(line_BL, triangle_ABC, B)
scene.relate.is_median(line_BL, triangle_ABC, B)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, O. There is a triangle ABC. There is a rhomboid ABCD. There is a circle with center O. There is a line segment AC. There is a line segment BD. There is a line segment AD. There is a line segment BC. The extensions of line AC and line BD intersect at point O. The extension of line AD intersects the circle at points A and D. Line BC is an altitude of triangle ABC from vertex B. Line AC is a diameter of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, O = scene.add.points(["A", "B", "C", "D", "O"])

triangleABC = scene.add.triangle(A, B, C)
rhomboidABCD = scene.add.rhomboid(A, B, C, D)
circleO = scene.add.circle(O)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.line_extensions_intersect_at(line_AC, line_BD, O)
scene.relate.line_extension_intersects_circle_at(line_AD, circleO, A, D)
scene.relate.is_altitude(line_BC, triangleABC, B)
scene.relate.is_diameter(line_AC, circleO)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a circle with center A. There is a kite B, C, D, E. There is an equilateral triangle F, G, H. There is a line segment BD. There is a line segment CF. There is a line segment GE. There is a line segment HF. The extension of line BD intersects the circle at points B and D. C is the orthocenter of triangle FGH. Line CF is a chord of the circle. Line CF is perpendicular to line GE. Further, the area of triangle FGH equals the area of the circle and the slope of line HF is less than or equal to 0.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

circle1 = scene.add.circle(A)
kite1 = scene.add.kite(B, C, D, E)
triangle1 = scene.add.equilateral_triangle(F, G, H)
line_BD = scene.add.line_segment(B, D)
line_CF = scene.add.line_segment(C, F)
line_GE = scene.add.line_segment(G, E)
line_HF = scene.add.line_segment(H, F)

### relationships

scene.relate.line_extension_intersects_circle_at(line_BD, circle1, B, D)
scene.relate.is_orthocenter(C, triangle1)
scene.relate.is_chord(line_CF, circle1)
scene.relate.perpendicular(line_CF, line_GE)

### Extra relationships

scene.constraint.eq(triangle1.area, circle1.area)
scene.constraint.leq(line_HF.slope, 0)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, M. There is a square with points A, B, C, D. There is a square with points E, F, G, H. There is a major arc with center I, start point J, and end point K. There is a line segment AC. There is a line segment EG. There is a line segment IK. The squares ABCD and EFGH are congruent. The extensions of line segment AC and line segment EG intersect at point M. Square ABCD is the mirror image of square EFGH across line IK. Line segment AC is perpendicular to line segment EG. Further, the area of square ABCD equals four times the radius of the major arc.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, M = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M"])

square1 = scene.add.square(A, B, C, D)
square2 = scene.add.square(E, F, G, H)
semicircle1 = scene.add.major_arc(I, J, K)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_IK = scene.add.line_segment(I, K)

### relationships

scene.relate.congruent(square1, square2)
scene.relate.line_extensions_intersect_at(line_AC, line_EG, M)
scene.relate.mirror_across_line(square1, square2, line_IK)
scene.relate.perpendicular(line_AC, line_EG)

### Extra relationships

scene.constraint.eq(square1.area, 4 * semicircle1.radius)

scene.solver.numerical()
scene.plot()

scene.constraint.eq(scene.get_object('square1').area, 4 * scene.get_object('semicircle1').radius)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is a circle with center A. There is a square BCDE. There is a regular pentagon FGHIJ. There is a line segment AB. There is a line segment AC. There is a line segment BD. There is a line segment FG. The circle is the circumcircle of the square BCDE. Line BD is a diameter of the circle. Line AB is a radius of the circle. Line AB is perpendicular to line AC. Further, the area of the circle equals the product of the square's inradius and the pentagon's perimeter.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

circle1 = scene.add.circle(A)
square1 = scene.add.square(B, C, D, E)
pentagon1 = scene.add.regular_pentagon(F, G, H, I, J)
line_AB = scene.add.line_segment(A, B)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_FG = scene.add.line_segment(F, G)

### relationships

scene.relate.is_circumcircle(circle1, square1)
scene.relate.perpendicular(line_AB, line_AC)
scene.relate.is_diameter(line_BD, circle1)
scene.relate.is_radius(line_AB, circle1)

### Extra relationships

scene.constraint.eq(circle1.area, square1.inradius * pentagon1.perimeter)

scene.solver.numerical()
scene.plot()

is_circumcircle(circle1, square1)
perpendicular(line_AB, line_AC)
is_diameter(line_BD, circle1)
is_radius(line_AB, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is an isosceles triangle ABC. There is a right triangle DEF. There is a circle with center G. There is a line segment AD. There is a line segment BE. There is a line segment CF. There is a line segment DE. There is an acute angle at B in triangle ABC. Line AD is an altitude of triangle ABC from vertex A. Line DE is a chord of the circle with center G. Line BE is perpendicular to line CF. Further, the inradius of triangle ABC equals the inradius of triangle DEF and the slope of line AD is less than or equal to 1.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G = scene.add.points(["A", "B", "C", "D", "E", "F", "G"])

triangle1 = scene.add.isosceles_triangle(A, B, C)
triangle2 = scene.add.right_triangle(D, E, F)
circle1 = scene.add.circle(G)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.acute_angle(A, B, C)
scene.relate.is_altitude(line_AD, triangle1, A)
scene.relate.is_chord(line_DE, circle1)
scene.relate.perpendicular(line_BE, line_CF)

### Extra relationships

scene.constraint.eq(triangle1.inradius, triangle2.inradius)
scene.constraint.leq(line_AD.slope, 1.0)

scene.solver.numerical()
scene.plot()

acute_angle(A, B, C)
is_altitude(line_AD, triangle1, A)
is_chord(line_DE, circle1)
perpendicular(line_BE, line_CF)


Diagram description: The diagram contains points A, B, C, D, E. There is a triangle ABC. There is a circle with center D. There is a circle with center E. There is a line segment AD. There is a line segment BE. There is a line segment CD. The circle with center D is the circumcircle of triangle ABC. Line BE is the perpendicular bisector of line AD. Line CD is a chord of the circle with center E. Line AD is a radius of the circle with center D. Further, the perimeter of triangle ABC equals twice the area of the circle with center D divided by the circumradius of triangle ABC.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E = scene.add.points(["A", "B", "C", "D", "E"])

triangle1 = scene.add.triangle(A, B, C)
circle1 = scene.add.circle(D)
circle2 = scene.add.circle(E)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.is_circumcircle(circle1, triangle1)
scene.relate.perpendicular_bisector_at(line_AD, line_BE)
scene.relate.is_chord(line_CD, circle2)
scene.relate.is_radius(line_AD, circle1)

### Extra relationships

scene.constraint.eq(triangle1.perimeter, 2 * circle1.area / triangle1.circumradius)

scene.solver.numerical()
scene.plot()

scene.constraint.eq(scene.get_object('triangle1').perimeter, 2 * scene.get_object('circle1').area / scene.get_object('triangle1').circumradius)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a triangle ABC. There is an equilateral triangle DEF. There is a circle with center G. There is a line AD. There is a line BE. There is a line CF. There is a line DE. line AD is an altitude of triangle ABC from vertex A. line BE is an altitude of triangle ABC from vertex B. line AD and line BE intersect at point H. circle with center G is the circumcircle of triangle ABC. Further, the inradius of triangle ABC equals one-sixth of the perimeter of equilateral triangle DEF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

triangle1 = scene.add.triangle(A, B, C)
equilateral_triangle1 = scene.add.equilateral_triangle(D, E, F)
circle1 = scene.add.circle(G)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.is_altitude(line_AD, triangle1, A)
scene.relate.is_altitude(line_BE, triangle1, B)
scene.relate.lines_intersect_at(line_AD, line_BE, H)
scene.relate.is_circumcircle(circle1, triangle1)

### Extra relationships

scene.constraint.eq(triangle1.inradius, equilateral_triangle1.perimeter / 6)

scene.solver.numerical()
scene.plot()

is_altitude(line_AD, triangle1, A)
is_altitude(line_BE, triangle1, B)
lines_intersect_at(line_AD, line_BE, H)
is_circumcircle(circle1, triangle1)

scene.constraint.eq(scene.get_object('triangle1').inradius, scene.get_object('equilateral_triangle1').perimeter / 6)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a square with vertices A, B, C, D. There is a circle with center E. There is an isosceles triangle with vertices F, G, H. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment FG. Line segment AC is a chord of the circle. Line segment AC and line segment BD intersect at point E. Line segment EF is a radius of the circle. Line segment FG is an altitude of the isosceles triangle from vertex F. Further, length of line AC is equal to 2 times the length of line EF. Further, area of the isosceles triangle is equal to 1/2 times the square of the length of line FG.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

square1 = scene.add.square(A, B, C, D)
circle1 = scene.add.circle(E)
triangle1 = scene.add.isosceles_triangle(F, G, H)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)

### relationships

scene.relate.is_chord(line_AC, circle1)
scene.relate.lines_intersect_at(line_AC, line_BD, E)
scene.relate.is_radius(line_EF, circle1)
scene.relate.is_altitude(line_FG, triangle1, F)

### Extra relationships

scene.constraint.eq(line_AC.length, 2 * line_EF.length)
scene.constraint.eq(triangle1.area, (1/2) * line_FG.length * line_FG.length)

scene.solver.numerical()
scene.plot()

is_chord(line_AC, circle1)
lines_intersect_at(line_AC, line_BD, E)
is_radius(line_EF, circle1)
is_altitude(line_FG, triangle1, F)

scene.constraint.eq(scene.get_object('line_AC').length, 2 * scene.get_object('line_EF').length)

scene.constraint.eq(scene.get_object('triangle1').area, (1/2) * scene.get_object('line_FG').length * scene.get_object('line_FG').length)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a kite with vertices A, B, C, D. There is a circle with center E. There is a parallelogram with vertices F, G, H, I. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment GH. Line AC is perpendicular to line BD. Line EF is a radius of the circle with center E. Line GH is parallel to line AC. Point A lies on the circle with center E. Further, the area of the kite equals the area of the parallelogram.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

kite1 = scene.add.kite(A, B, C, D)
circle1 = scene.add.circle(E)
parallelogram1 = scene.add.parallelogram(F, G, H, I)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.perpendicular(line_AC, line_BD)
scene.relate.is_radius(line_EF, circle1)
scene.relate.parallel(line_GH, line_AC)
scene.relate.point_lies_on(A, circle1)

### Extra relationships

scene.constraint.eq(kite1.area, parallelogram1.area)

scene.solver.numerical()
scene.plot()

perpendicular(line_AC, line_BD)
is_radius(line_EF, circle1)
parallel(line_GH, line_AC)
point_lies_on(A, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, K, L. There is a kite with points A, B, C, D. There is a trapezoid with points E, F, G, H. There is a circle with center I. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment GH. There is a line segment KL. Line AC is tangent to the circle at point A. The extension of line BD intersects the circle at points B and D. Line EF is a diameter of the circle. Line AC is perpendicular to line BD. Further, the length of line AC is equal to the length of line EF and the area of the circle is equal to 4π.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, K, L = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "K", "L"])

kite1 = scene.add.kite(A, B, C, D)
trapezoid1 = scene.add.trapezoid(E, F, G, H)
circle1 = scene.add.circle(I)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_GH = scene.add.line_segment(G, H)
line_KL = scene.add.line_segment(K, L)

### relationships

scene.relate.tangent_to_circle(line_AC, circle1, A)
scene.relate.line_extension_intersects_circle_at(line_BD, circle1, B, D)
scene.relate.is_diameter(line_EF, circle1)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

scene.constraint.eq(line_AC.length, line_EF.length)
scene.constraint.eq(circle1.area, 4 * 3.14159)

scene.solver.numerical()
scene.plot()

scene.constraint.eq(scene.get_object('circle1').area, 4 * 3.14159)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is a minor arc with center A, start point B, and end point C. There is a rhomboid with vertices D, E, F, G. There is an isosceles triangle with vertices H, I, J. There are line segments DE, EF, FG, GD, HI, IJ, and HJ. Line DE is parallel to line FG. Line HI is an altitude of the isosceles triangle from vertex H. Point B lies on the minor arc. Point C lies on the minor arc. Further, the length of line HI is equal to the length of line IJ and the angle H I J is 90 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

arc1 = scene.add.minor_arc(A, B, C)
rhomboid1 = scene.add.rhomboid(D, E, F, G)
triangle1 = scene.add.isosceles_triangle(H, I, J)
line_DE = scene.add.line_segment(D, E)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_GD = scene.add.line_segment(G, D)
line_HI = scene.add.line_segment(H, I)
line_IJ = scene.add.line_segment(I, J)
line_HJ = scene.add.line_segment(H, J)

### relationships

scene.relate.parallel(line_DE, line_FG)
scene.relate.is_altitude(line_HI, triangle1, H)
scene.relate.point_lies_on(B, arc1)
scene.relate.point_lies_on(C, arc1)

### Extra relationships

scene.constraint.eq(line_HI.length, line_IJ.length)
scene.constraint.eq(scene.angle(scene.get_object('H'), scene.get_object('I'), scene.get_object('J')), 90)

scene.solver.numerical()
scene.plot()

parallel(line_DE, line_FG)
is_altitude(line_HI, triangle1, H)
point_lies_on(B, arc1)
point_lies_on(C, arc1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J.
There is a regular pentagon ABCDE.
There is a rhombus FGHI.
There is a circle with center J.
There is a line segment AC.
There is a line segment FH.
There is a line segment JG.
Point G lies on the circle.
Point H lies on the circle.
The circle is the circumcircle of the pentagon.
Line JG is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

pentagon1 = scene.add.regular_pentagon(A, B, C, D, E)
rhombus1 = scene.add.rhombus(F, G, H, I)
circle1 = scene.add.circle(J)
line_AC = scene.add.line_segment(A, C)
line_FH = scene.add.line_segment(F, H)
line_JG = scene.add.line_segment(J, G)

### relationships

scene.relate.point_lies_on(G, circle1)
scene.relate.point_lies_on(H, circle1)
scene.relate.is_circumcircle(circle1, pentagon1)
scene.relate.is_radius(line_JG, circle1)

scene.solver.numerical()
scene.plot()

point_lies_on(G, circle1)
point_lies_on(H, circle1)
is_circumcircle(circle1, pentagon1)
is_radius(line_JG, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is an isosceles triangle ABC. There is an isosceles trapezoid ABCD. There is a right trapezoid EFGH. There is a line segment AD. There is a line segment BC. There is a line segment EF. There is a line segment GH. F is the orthocenter of triangle ABC. F lies on line AD. Line AD is perpendicular to line BC. Line EF is parallel to line GH.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

triangleABC = scene.add.isosceles_triangle(A, B, C)
trapezoidABCD = scene.add.isosceles_trapezoid(A, B, C, D)
trapezoidEFGH = scene.add.right_trapezoid(E, F, G, H)
line_AD = scene.add.line_segment(A, D)
line_BC = scene.add.line_segment(B, C)
line_EF = scene.add.line_segment(E, F)
line_GH = scene.add.line_segment(G, H)

### relationships

scene.relate.is_orthocenter(F, triangleABC)
scene.relate.point_lies_on(F, line_AD)
scene.relate.perpendicular(line_AD, line_BC)
scene.relate.parallel(line_EF, line_GH)

scene.solver.numerical()
scene.plot()

is_orthocenter(F, triangleABC)
point_lies_on(F, line_AD)
perpendicular(line_AD, line_BC)
parallel(line_EF, line_GH)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is an equilateral triangle ABC. There is a circle with center D. There is a square EFGH. There is a line segment AD. There is a line segment BD. There is a line segment CD. There is a line segment EF. There is a line segment FG. Point A lies on the circle. Point B lies on the circle. Point C lies on the circle. The circle is the circumcircle of triangle ABC. Further, the length of line AD is equal to the length of line BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H"])

triangle1 = scene.add.equilateral_triangle(A, B, C)
circle1 = scene.add.circle(D)
square1 = scene.add.square(E, F, G, H)
line_AD = scene.add.line_segment(A, D)
line_BD = scene.add.line_segment(B, D)
line_CD = scene.add.line_segment(C, D)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)

### relationships

scene.relate.point_lies_on(A, circle1)
scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)
scene.relate.is_circumcircle(circle1, triangle1)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BD.length)

scene.solver.numerical()
scene.plot()

point_lies_on(A, circle1)
point_lies_on(B, circle1)
point_lies_on(C, circle1)
is_circumcircle(circle1, triangle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K.
There is a quadrilateral ABCD.
There is a major arc with points E, F, G.
There is a rectangle HIJK.
There is a line segment AC.
There is a line segment BD.
There is a line segment EF.
Quadrilateral ABCD is congruent to rectangle HIJK.
There is an acute angle at vertex B of quadrilateral ABCD.
Line AC is perpendicular to line BD.
Quadrilateral ABCD is a mirror image of rectangle HIJK across line EF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

quad1 = scene.add.quadrilateral(A, B, C, D)
semicircle1 = scene.add.major_arc(E, F, G)
rect1 = scene.add.rectangle(H, I, J, K)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.congruent(quad1, rect1)
scene.relate.acute_angle(A, B, C)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.mirror_across_line(quad1, rect1, line_EF)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is a rhombus ABCD. There is a rhombus HIJK. There is a right isosceles triangle EFG. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment FG. There is a line segment EG. There is a line segment HI. There is a line segment IJ. Line AC is perpendicular to line BD. F is the orthocenter of triangle EFG. Rhombus HIJK is the mirror image of rhombus ABCD across line EG. Line EF is parallel to line IJ. Further, the area of rhombus ABCD equals the area of triangle EFG. Further, the length of line AC is less than or equal to twice the length of line EF.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

rhombus1 = scene.add.rhombus(A, B, C, D)
triangle1 = scene.add.right_isosceles_triangle(E, F, G)
rhombus2 = scene.add.rhombus(H, I, J, K)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_EG = scene.add.line_segment(E, G)
line_HI = scene.add.line_segment(H, I)
line_IJ = scene.add.line_segment(I, J)

### relationships

scene.relate.perpendicular(line_AC, line_BD)
scene.relate.is_orthocenter(F, triangle1)
scene.relate.mirror_across_line(rhombus1, rhombus2, line_EG)
scene.relate.parallel(line_EF, line_IJ)

### Extra relationships

scene.constraint.eq(rhombus1.area, triangle1.area)
scene.constraint.leq(line_AC.length, 2 * line_EF.length)

scene.solver.numerical()
scene.plot()

scene.constraint.leq(scene.get_object('line_AC').length, 2 * scene.get_object('line_EF').length)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, M. There is a square ABCD. There is a rhombus EFGH. There is an isosceles triangle IJK. There is a line segment AC. There is a line segment EG. There is a line segment IJ. There is a line segment JK. There is a line segment KI. The extensions of line segment AC and line segment EG intersect at point M. Point M lies on line segment AC. Point M lies on line segment EG. Line segment IJ is rotated 90 degrees counterclockwise around point J to form line segment JK. Further, the area of triangle IJK equals half the area of square ABCD.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, M = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M"])

square1 = scene.add.square(A, B, C, D)
rhombus1 = scene.add.rhombus(E, F, G, H)
triangle1 = scene.add.isosceles_triangle(I, J, K)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_IJ = scene.add.line_segment(I, J)
line_JK = scene.add.line_segment(J, K)
line_KI = scene.add.line_segment(K, I)

### relationships

scene.relate.line_extensions_intersect_at(line_AC, line_EG, M)
scene.relate.point_lies_on(M, line_AC)
scene.relate.point_lies_on(M, line_EG)
scene.relate.rotation_around_point(line_IJ, line_JK, J, 90)

### Extra relationships

scene.constraint.eq(triangle1.area, square1.area / 2)

scene.solver.numerical()
scene.plot()

scene.constraint.eq(scene.get_object('triangle1').area, scene.get_object('square1').area / 2)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is a right trapezoid ABCD. There is a parallelogram EFGH. There is a circle with center I. There is a line segment AB. There is a line segment BC. There is a line segment CD. There is a line segment DA. There is a line segment EF. There is a line segment FG. There is a line segment GH. There is a line segment HE. trapezoid ABCD is similar to parallelogram EFGH. J is the midpoint of line AB. line AB is perpendicular to line BC. line BC is tangent to the circle at point B.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

trapezoid1 = scene.add.right_trapezoid(A, B, C, D)
parallelogram1 = scene.add.parallelogram(E, F, G, H)
circle1 = scene.add.circle(I)
line_AB = scene.add.line_segment(A, B)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DA = scene.add.line_segment(D, A)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_GH = scene.add.line_segment(G, H)
line_HE = scene.add.line_segment(H, E)

### relationships

scene.relate.similar(trapezoid1, parallelogram1)
scene.relate.is_midpoint(J, line_AB)
scene.relate.perpendicular(line_AB, line_BC)
scene.relate.tangent_to_circle(line_BC, circle1, B)

scene.solver.numerical()
scene.plot()

similar(trapezoid1, parallelogram1)
is_midpoint(J, line_AB)
perpendicular(line_AB, line_BC)
tangent_to_circle(line_BC, circle1, B)


Diagram description: The diagram contains points A, B, C, O, H, M, D, E, F. There is a triangle with points A, B, C. There is a circle with center O. There is an equilateral triangle with points D, E, F. There is a line segment AH. There is a line segment BM. Line AH is an altitude of triangle ABC from vertex A. H is the orthocenter of triangle ABC. The circle with center O is the circumcircle of triangle ABC. Line BM is a median of triangle ABC from vertex B.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, O, H, M, D, E, F = scene.add.points(["A", "B", "C", "O", "H", "M", "D", "E", "F"])

triangleABC = scene.add.triangle(A, B, C)
circleO = scene.add.circle(O)
equilateral_triangleDEF = scene.add.equilateral_triangle(D, E, F)
line_altitude = scene.add.line_segment(A, H)
line_median = scene.add.line_segment(B, M)

### relationships

scene.relate.is_altitude(line_altitude, triangleABC, A)
scene.relate.is_orthocenter(H, triangleABC)
scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.is_median(line_median, triangleABC, B)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a circle with center A. There is a kite with vertices B, C, D, E. There is a rhombus with vertices F, G, H, I. There is a line segment BD. There is a line segment FH. There is a line segment AG. There is a line segment BF. Line BD and line FH intersect at point A. Line AG and line BF intersect at point C. Line BD is a diameter of the circle. Line AG is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

circle1 = scene.add.circle(A)
kite1 = scene.add.kite(B, C, D, E)
rhombus1 = scene.add.rhombus(F, G, H, I)
line_BD = scene.add.line_segment(B, D)
line_FH = scene.add.line_segment(F, H)
line_AG = scene.add.line_segment(A, G)
line_BF = scene.add.line_segment(B, F)

### relationships

scene.relate.lines_intersect_at(line_BD, line_FH, A)
scene.relate.lines_intersect_at(line_AG, line_BF, C)
scene.relate.is_diameter(line_BD, circle1)
scene.relate.is_radius(line_AG, circle1)

scene.solver.numerical()
scene.plot()

lines_intersect_at(line_BD, line_FH, A)
lines_intersect_at(line_AG, line_BF, C)
is_diameter(line_BD, circle1)
is_radius(line_AG, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a circle with center A. There is a triangle BCD. There is a triangle EFG. There is a line segment BC. There is a line segment EF. There is a line segment BD. There is a line segment CF. Triangle BCD is similar to triangle EFG. Extensions of line BC and line EF intersect at H. Circle with center A is the circumcircle of triangle BCD. I is the orthocenter of triangle BCD. Line BD is perpendicular to line CF. Further, the circumradius of triangle BCD is constrained to be exactly 3 units, and the length of line BC is constrained to be less than or equal to 4 units.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

circle1 = scene.add.circle(A)
triangle1 = scene.add.triangle(B, C, D)
triangle2 = scene.add.triangle(E, F, G)
line_BC = scene.add.line_segment(B, C)
line_EF = scene.add.line_segment(E, F)
line_BD = scene.add.line_segment(B, D)
line_CF = scene.add.line_segment(C, F)

### relationships

scene.relate.similar(triangle1, triangle2)
scene.relate.line_extensions_intersect_at(line_BC, line_EF, H)
scene.relate.is_circumcircle(circle1, triangle1)
scene.relate.is_orthocenter(I, triangle1)
scene.relate.perpendicular(line_BD, line_CF)

### Extra relationships

scene.constraint.eq(triangle1.circumradius, 3.0)
scene.constraint.leq(line_BC.length, 4.0)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K, L. There is a quadrilateral with vertices A, B, C, D. There is an equilateral triangle with vertices E, F, G. There is an equilateral triangle with vertices H, I, J. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment HI. The equilateral triangle with vertices E, F, G is the mirror image of the equilateral triangle with vertices H, I, J across line AC. Line AC intersects line BD at point K. Line AC is perpendicular to line BD. The extensions of line EF and line HI intersect at point L. Point K is the centroid of the quadrilateral with vertices A, B, C, D.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K, L = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"])

quad1 = scene.add.quadrilateral(A, B, C, D)
tri1 = scene.add.equilateral_triangle(E, F, G)
tri2 = scene.add.equilateral_triangle(H, I, J)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EF = scene.add.line_segment(E, F)
line_HI = scene.add.line_segment(H, I)

### relationships

scene.relate.mirror_across_line(tri1, tri2, line_AC)
scene.relate.lines_intersect_at(line_AC, line_BD, K)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.line_extensions_intersect_at(line_EF, line_HI, L)
scene.relate.is_centroid(K, quad1)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a rectangle with points A, B, C, D. There is a rhombus with points E, F, G, H. There is a circle with center I. There is a line segment AC. There is a line segment EG. There is a line segment IF. Line AC is a diameter of the circle. Line IF is a radius of the circle. Line AC is perpendicular to line EG. The circle is the circumcircle of the rectangle. Point F lies on the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

rectangle1 = scene.add.rectangle(A, B, C, D)
rhombus1 = scene.add.rhombus(E, F, G, H)
circle1 = scene.add.circle(I)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_IF = scene.add.line_segment(I, F)

### relationships

scene.relate.is_diameter(line_AC, circle1)
scene.relate.is_radius(line_IF, circle1)
scene.relate.perpendicular(line_AC, line_EG)
scene.relate.is_circumcircle(circle1, rectangle1)
scene.relate.point_lies_on(F, circle1)

scene.solver.numerical()
scene.plot()

is_diameter(line_AC, circle1)
is_radius(line_IF, circle1)
perpendicular(line_AC, line_EG)
is_circumcircle(circle1, rectangle1)
point_lies_on(F, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, O. There is a triangle ABC. There is a circle with center O. There is a right triangle DEF. There is a line segment AD. There is a line segment BE. There is a line segment CF. Triangle ABC has a circumcircle centered at O. Line AD is tangent to the circle at A. Line BE intersects the circle at points B and G. Line CF is an altitude of triangle ABC from vertex C to side AB. Line BE is a median of triangle ABC from vertex B to the midpoint of side AC. Further, the inradius of right triangle DEF equals the inradius of triangle ABC. Further, angle AOB measures 60 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, O = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "O"])

triangleABC = scene.add.triangle(A, B, C)
circleO = scene.add.circle(O)
right_triangleDEF = scene.add.right_triangle(D, E, F)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)

### relationships

scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.tangent_to_circle(line_AD, circleO, A)
scene.relate.line_extension_intersects_circle_at(line_BE, circleO, B, G)
scene.relate.is_altitude(line_CF, triangleABC, C)
scene.relate.is_median(line_BE, triangleABC, B)

### Extra relationships

scene.constraint.eq(right_triangleDEF.inradius, triangleABC.inradius)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('O'), scene.get_object('B')), 60)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is a regular heptagon ABCDEFG. There is a circle with center H. There is a right isosceles triangle IJK. There is a line segment HI. There is a line segment HJ. There is a line segment IK. There is a line segment JK. The circle is the incircle of the heptagon. The extensions of line HI and line HJ intersect at H. Line HI is a radius of the circle. Line HJ is a radius of the circle. Angle I H J is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I, J, K = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"])

heptagon1 = scene.add.regular_heptagon(A, B, C, D, E, F, G)
circle1 = scene.add.circle(H)
triangle1 = scene.add.right_isosceles_triangle(I, J, K)
line_HI = scene.add.line_segment(H, I)
line_HJ = scene.add.line_segment(H, J)
line_IK = scene.add.line_segment(I, K)
line_JK = scene.add.line_segment(J, K)

### relationships

scene.relate.is_incircle(circle1, heptagon1)
scene.relate.line_extensions_intersect_at(line_HI, line_HJ, H)
scene.relate.is_radius(line_HI, circle1)
scene.relate.is_radius(line_HJ, circle1)
scene.relate.right_angle(I, H, J)

scene.solver.numerical()
scene.plot()


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a right trapezoid ABCD. There is a rectangle EFGH. There is a circle with center I. There is a line segment AB. There is a line segment BC. There is a line segment CD. There is a line segment DA. There is a line segment EF. There is a line segment FG. There is a line segment GH. There is a line segment HE. There is a line segment AC. There is a line segment BD. There is a line segment EI. There is a line segment HI. line AC intersects the circle at points A and C. points A, I, and C are collinear. line AB is perpendicular to line BC. line AC is a diameter of the circle. line EI is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

A, B, C, D, E, F, G, H, I = scene.add.points(["A", "B", "C", "D", "E", "F", "G", "H", "I"])

trapezoid1 = scene.add.right_trapezoid(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
circle1 = scene.add.circle(I)
line_AB = scene.add.line_segment(A, B)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DA = scene.add.line_segment(D, A)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
line_GH = scene.add.line_segment(G, H)
line_HE = scene.add.line_segment(H, E)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)
line_EI = scene.add.line_segment(E, I)
line_HI = scene.add.line_segment(H, I)

### relationships

scene.relate.line_intersects_circle_at(line_AC, circle1, A, C)
scene.relate.collinear(A, I, C)
scene.relate.perpendicular(line_AB, line_BC)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.is_radius(line_EI, circle1)

scene.solver.numerical()
scene.plot()