Diagram description: The diagram contains points A, B, C, D, E. There is a rhomboid ABCD. 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 CD. Points A, E, and C are collinear. Line segment AC is a diameter of the circle. Line segment AC is perpendicular to line segment BD. Further, the length of line AB is equal to the length of line CD. Further, the length of line AC is equal to twice the radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rhomboid1 = scene.add.rhomboid(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.collinear(A, E, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

scene.constraint.eq(line_AB.length, line_CD.length)
scene.constraint.eq(line_AC.length, 2 * circle1.radius)

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

collinear(A, E, C)
is_diameter(line_AC, circle1)
perpendicular(line_AC, line_BD)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a regular hexagon with vertices A, B, C, D, E, F. There is a circle with center G. There is a line segment AD. There is a line segment BE. Line AD and line BE intersect at point G. Line AD is a diameter of the circle. The circle is the circumcircle of the hexagon. Further, the length of line BE equals the diagonal of the hexagon.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

hexagon1 = scene.add.regular_hexagon(A, B, C, D, E, F)
circle1 = scene.add.circle(G)
line_AD = scene.add.line_segment(A, D)
line_BE = scene.add.line_segment(B, E)

### relationships

scene.relate.lines_intersect_at(line_AD, line_BE, G)
scene.relate.is_diameter(line_AD, circle1)
scene.relate.is_circumcircle(circle1, hexagon1)

### Extra relationships

scene.constraint.eq(line_BE.length, hexagon1.diagonal)

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

lines_intersect_at(line_AD, line_BE, G)
is_diameter(line_AD, circle1)
is_circumcircle(circle1, hexagon1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, M, N, K. There is a triangle with vertices A, B, C. There is a parallelogram with vertices D, E, F, G. There is a line segment AM. There is a line segment BN. There is a line segment CK. Line AM is an altitude of triangle ABC from vertex A. Line BN is a median of triangle ABC from vertex B. Line AM is parallel to line BN.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle_ABC = scene.add.triangle(A, B, C)
parallelogram_DEFG = scene.add.parallelogram(D, E, F, G)
line_AM = scene.add.line_segment(A, M)
line_BN = scene.add.line_segment(B, N)
line_CK = scene.add.line_segment(C, K)

### relationships

scene.relate.is_altitude(line_AM, triangle_ABC, A)
scene.relate.is_median(line_BN, triangle_ABC, B)
scene.relate.parallel(line_AM, line_BN)

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

is_altitude(line_AM, triangle_ABC, A)
is_median(line_BN, triangle_ABC, B)
parallel(line_AM, line_BN)


Diagram description: The diagram contains points A, B, C, D, E, F. There is an equilateral triangle ABC. There is a circle with center D. There is a line segment AD. There is a line segment BE. There is a line segment CF. Angle ADB is a right angle. Line AD is a radius of the circle. Line BE is an altitude of the triangle from vertex B. Further, length of line AD equals length of line BE and length of line CF is less than or equal to the diameter of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle1 = scene.add.equilateral_triangle(A, B, C)
circle1 = scene.add.circle(D)
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.right_angle(A, D, B)
scene.relate.is_radius(line_AD, circle1)
scene.relate.is_altitude(line_BE, triangle1, B)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BE.length)
scene.constraint.leq(line_CF.length, circle1.diameter)

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

right_angle(A, D, B)
is_radius(line_AD, circle1)
is_altitude(line_BE, triangle1, B)


Diagram description: The diagram contains points A, B, C, D, E, F. There is a right trapezoid ABCD. There is a circle with center E. There is a line segment AD. There is a line segment DC. There is a line segment AC. There is a line segment DE. Line AD is perpendicular to line DC. Line DE is a radius of the circle. Line AD extended intersects the circle at points D and F. Further, length of line AD equals length of line DC.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

trapezoid1 = scene.add.right_trapezoid(A, B, C, D)
circle1 = scene.add.circle(E)
line_AD = scene.add.line_segment(A, D)
line_DC = scene.add.line_segment(D, C)
line_AC = scene.add.line_segment(A, C)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.line_extension_intersects_circle_at(line_AD, circle1, D, F)
scene.relate.is_radius(line_DE, circle1)
scene.relate.perpendicular(line_AD, line_DC)

### Extra relationships

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

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


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is an isosceles trapezoid ABCD. There is a major arc FG with center E. There is a line segment AB. There is a line segment CD. There is a line segment AC. There is a line segment BD. There is a line segment EF. Line AC intersects line BD at H. Trapezoid ABCD is reflected across line EF onto itself. Point H lies on line AC. Further, the length of line AB is equal to the length of line CD.

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"])

trapezoid1 = scene.add.isosceles_trapezoid(A, B, C, D)
arc1 = scene.add.major_arc(E, F, G)
line_AB = scene.add.line_segment(A, B)
line_CD = scene.add.line_segment(C, D)
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.lines_intersect_at(line_AC, line_BD, H)
scene.relate.mirror_across_line(trapezoid1, trapezoid1, line_EF)
scene.relate.point_lies_on(H, line_AC)

### Extra relationships

scene.constraint.eq(line_AB.length, line_CD.length)

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


Diagram description: The diagram contains points A, B, C, O, D, E, F, G. There is a triangle ABC with vertices A, B, C. 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 intersects line BE at point G. Line AD is an altitude of triangle ABC from vertex A. Line BE is an altitude of triangle ABC from vertex B. Line CF is an altitude of triangle ABC from vertex C. The circle with center O is the circumcircle of triangle ABC. Further, the area of triangle ABC is equal to one-fourth the area of circle O.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.triangle(A, B, C)
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)

### relationships

scene.relate.lines_intersect_at(line_AD, line_BE, G)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_circumcircle(circleO, triangleABC)

### Extra relationships

scene.constraint.eq(triangleABC.area, circleO.area / 4)

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

lines_intersect_at(line_AD, line_BE, G)
is_altitude(line_AD, triangleABC, A)
is_circumcircle(circleO, triangleABC)

scene.constraint.eq(scene.get_object('triangleABC').area, scene.get_object('circleO').area / 4)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a right isosceles triangle with vertices B, C, D. There is a line segment BC. There is a line segment CD. There is a line segment BD. There is a line segment AD. There is a line segment AC. Line segment BC is rotated 90 degrees around point C to form line segment CD. Line segment BC is a chord of the circle. Line segment AC is a radius of the circle. Further, the length of line BC is equal to the length of line CD. Further, the length of line BC is equal to 2 times the area of the circle divided by (3.14159 times 2).

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_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.rotation_around_point(line_BC, line_CD, C, 90)
scene.relate.is_chord(line_BC, circle1)
scene.relate.is_radius(line_AC, circle1)

### Extra relationships

scene.constraint.eq(line_BC.length, line_CD.length)
scene.constraint.eq(line_BC.length, 2 * circle1.area / (3.14159 * 2))

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

scene.constraint.eq(scene.get_object('line_BC').length, 2 * scene.get_object('circle1').area / (3.14159 * 2))


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a rhombus with vertices A, B, C, D. There is a major arc with center E, start point F, and end point G. There is a line segment AC. There is a line segment BD. There is a line segment EF. Line segment AC is parallel to line segment EF. Line segment BD is perpendicular to line segment EF. Point F lies on the major arc.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rhombus1 = scene.add.rhombus(A, B, C, D)
semicircle1 = scene.add.major_arc(E, F, G)
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.parallel(line_AC, line_EF)
scene.relate.perpendicular(line_BD, line_EF)
scene.relate.point_lies_on(F, semicircle1)

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

parallel(line_AC, line_EF)
perpendicular(line_BD, line_EF)
point_lies_on(F, semicircle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a rectangle with A, B, C, D. There is a right triangle with E, F, G. There is a line segment AC. There is a line segment EF. There is a line segment FG. There is a line segment EG. Points A, C, E are collinear. Line AC is perpendicular to line EF. Line FG is an altitude of right triangle EFG from vertex F to the hypotenuse EG.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rectangle1 = scene.add.rectangle(A, B, C, D)
right_triangle1 = scene.add.right_triangle(E, F, G)
line_AC = scene.add.line_segment(A, C)
line_EF = scene.add.line_segment(E, F)
line_FG = scene.add.line_segment(F, G)
lineEG = scene.add.line_segment(E, G)

### relationships

scene.relate.collinear(A, C, E)
scene.relate.perpendicular(line_AC, line_EF)
scene.relate.is_altitude(line_FG, right_triangle1, F)

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


Diagram description: The diagram contains points A, B, C, O, D, E, F.
There is a triangle with vertices A, B, C.
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 a median of triangle ABC.
The circle with center O is the circumcircle of triangle ABC.
Line AD is perpendicular to line BE.
Further, the length of line AD is equal to the length of line BE and the area of triangle ABC is 12.0.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.triangle(A, B, C)
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)

### relationships

scene.relate.is_median(line_AD, triangleABC, A)
scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.perpendicular(line_AD, line_BE)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BE.length)
scene.constraint.eq(triangleABC.area, 12.0)

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

is_median(line_AD, triangleABC, A)
is_circumcircle(circleO, triangleABC)
perpendicular(line_AD, line_BE)


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 scalene triangle with vertices D, E, F. There is a line segment DE. There is a line segment EF. There is a line segment FD. There is a line segment FG. Point G lies on the major arc with center A, start point B, and end point C. Line segment FG is perpendicular to line segment FD. Line segment FG is an altitude of the scalene triangle DEF from vertex F.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

semicircle1 = scene.add.major_arc(A, B, C)
triangle1 = scene.add.scalene_triangle(D, E, F)
line_DE = scene.add.line_segment(D, E)
line_EF = scene.add.line_segment(E, F)
line_FD = scene.add.line_segment(F, D)
line_perp = scene.add.line_segment(F, G)

### relationships

scene.relate.point_lies_on(G, semicircle1)
scene.relate.perpendicular(line_perp, line_FD)
scene.relate.is_altitude(line_perp, triangle1, F)

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

point_lies_on(G, semicircle1)
perpendicular(line_perp, line_FD)
is_altitude(line_perp, triangle1, F)


Diagram description: The diagram contains points A, B, C, D, E, F. There is a triangle ABC. There is a quadrilateral ABCD. There is a line segment AC. There is a line segment BD. E is the midpoint of line AC. Line AC is perpendicular to line BD. Line AC intersects line BD at point F. Further, the length of line AC is equal to the length of line BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.triangle(A, B, C)
quadrilateralABCD = scene.add.quadrilateral(A, B, C, D)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.is_midpoint(E, line_AC)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.lines_intersect_at(line_AC, line_BD, F)

### Extra relationships

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

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

is_midpoint(E, line_AC)
perpendicular(line_AC, line_BD)
lines_intersect_at(line_AC, line_BD, F)


Diagram description: The diagram contains points A, B, C, D, E. There is a quadrilateral with vertices 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 CD. Points A, E, and C are collinear. The line segment AC is a diameter of the circle. Line segment AB is perpendicular to line segment CD. Further, the length of line AB is equal to the length of line CD, and the angle ABC is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

quadrilateral1 = scene.add.quadrilateral(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.collinear(A, E, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AB, line_CD)

### Extra relationships

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

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

collinear(A, E, C)
is_diameter(line_AC, circle1)
perpendicular(line_AB, line_CD)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a right triangle BCD. There is a line segment BC. There is a line segment CD. There is a line segment BD. Line BC intersects the circle at points B and C. Line BC is a chord of the circle. Right angle at C between line segments CD and CB. Further, the area of right triangle BCD equals one-fourth the area of the circle with center A.

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_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.line_intersects_circle_at(line_BC, circle1, B, C)
scene.relate.is_chord(line_BC, circle1)
scene.relate.right_angle(D, C, B)

### Extra relationships

scene.constraint.eq(triangle1.area, circle1.area / 4)

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

scene.constraint.eq(scene.get_object('triangle1').area, scene.get_object('circle1').area / 4)


Diagram description: The diagram contains points A, B, C, D, E. There is a rectangle with points 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 AC is a diameter of the circle. Line AB is perpendicular to line BC. Further, the area of rectangle ABCD equals the area of the circle.

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.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AB, line_BC)

### Extra relationships

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

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


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is an equilateral triangle with vertices B, C, D. There is a line segment BC. There is a line segment CD. There is a line segment DB. There is a line segment AD. There is a line segment AC. There is a line segment AB. The circle is the circumcircle of the equilateral triangle BCD. Line AB is a radius of the circle. Point B lies on the circle.

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.equilateral_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DB = scene.add.line_segment(D, B)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)
line_AB = scene.add.line_segment(A, B)

### relationships

scene.relate.is_circumcircle(circle1, triangle1)
scene.relate.is_radius(line_AB, circle1)
scene.relate.point_lies_on(B, circle1)

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

is_circumcircle(circle1, triangle1)
is_radius(line_AB, circle1)
point_lies_on(B, circle1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a right triangle BCD. There is a line segment BC. There is a line segment CD. There is a line segment BD. There is a line segment AD. Line BC is perpendicular to line CD. Line BD is a chord of the circle. Point D lies on the circle. Further, the inradius of the right triangle BCD is 1.0. Further, the length of line BD is less than or equal to 6.0.

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_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.perpendicular(line_BC, line_CD)
scene.relate.is_chord(line_BD, circle1)
scene.relate.point_lies_on(D, circle1)

### Extra relationships

scene.constraint.eq(triangle1.inradius, 1.0)
scene.constraint.leq(line_BD.length, 6.0)

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

perpendicular(line_BC, line_CD)
is_chord(line_BD, circle1)
point_lies_on(D, circle1)


Diagram description: The diagram contains points A, B, C, D, H, M, N. There is a triangle ABC. There is a major arc ADB. There is a line segment AH. There is a line segment MN. H is the orthocenter of triangle ABC. line segment AH is perpendicular to line segment MN. point H lies on line segment MN.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle_ABC = scene.add.triangle(A, B, C)
semicircle_ADB = scene.add.major_arc(A, D, B)
line_altitude = scene.add.line_segment(A, H)
line_perp_bisector = scene.add.line_segment(M, N)

### relationships

scene.relate.is_orthocenter(H, triangle_ABC)
scene.relate.perpendicular(line_altitude, line_perp_bisector)
scene.relate.point_lies_on(H, line_perp_bisector)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is an isosceles trapezoid ABCD. There is a minor arc FG with center E. There is a line segment AB. There is a line segment CD. There is a line segment EF. There is a line segment EG. There is an obtuse angle at D formed by points A, D, and C. The trapezoid is symmetric about line AB. Point F lies on the minor arc FG. Further, length of line AB is equal to length of line CD and the area of the trapezoid is less than or equal to 20.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

trapezoid1 = scene.add.isosceles_trapezoid(A, B, C, D)
arc1 = scene.add.minor_arc(E, F, G)
line_AB = scene.add.line_segment(A, B)
line_CD = scene.add.line_segment(C, D)
line EF = scene.add.line_segment(E, F)
line EG = scene.add.line_segment(E, G)

### relationships

scene.relate.obtuse_angle(A, D, C)
scene.relate.mirror_across_line(trapezoid1, trapezoid1, line_AB)
scene.relate.point_lies_on(F, arc1)

### Extra relationships

scene.constraint.eq(line_AB.length, line_CD.length)
scene.constraint.leq(trapezoid1.area, 20)

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


Diagram description: The diagram contains points A, B, C, D, E. There is a rhomboid with vertices 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. Points A, E, and C are collinear. Line segment AC is a diameter of the circle. Line segment AC is perpendicular to line segment BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rhomboid1 = scene.add.rhomboid(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.collinear(A, E, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)

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


Diagram description: The diagram contains points A, B, C, D, E, F, M, N. There is an isosceles triangle ABC. There is a minor arc with center D and endpoints E and F. There is a line segment AM. There is a line segment BC. N is the orthocenter of triangle ABC. line AM is an altitude of triangle ABC from vertex A. M lies on line BC. Further, the inradius of triangle ABC equals the radius of the minor arc with center D and endpoints E and F.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.isosceles_triangle(A, B, C)
arcDEF = scene.add.minor_arc(D, E, F)
line_AM = scene.add.line_segment(A, M)
line_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.is_orthocenter(N, triangleABC)
scene.relate.is_altitude(line_AM, triangleABC, A)
scene.relate.point_lies_on(M, line_BC)

### Extra relationships

scene.constraint.eq(triangleABC.inradius, arcDEF.radius)

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

is_orthocenter(N, triangleABC)
is_altitude(line_AM, triangleABC, A)
point_lies_on(M, line_BC)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a trapezoid ABCD. There is a minor arc FG with center E. There is a line segment AC. There is a line segment BD. There is a line segment EF. There is a line segment EG. Points A, E, and G are collinear. Point F lies on the minor arc FG. Line segment AC is perpendicular to line segment BD. Further, the area of trapezoid ABCD equals the area of minor arc FG. Further, the angle FEG measures 60 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"])

trapezoid1 = scene.add.trapezoid(A, B, C, D)
minor_arc1 = scene.add.minor_arc(E, F, G)
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 EG = scene.add.line_segment(E, G)

### relationships

scene.relate.collinear(A, E, G)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.point_lies_on(F, minor_arc1)

### Extra relationships

scene.constraint.eq(trapezoid1.area, minor_arc1.area)
scene.constraint.eq(scene.angle(scene.get_object('F'), scene.get_object('E'), scene.get_object('G')), 60)

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

collinear(A, E, G)
perpendicular(line_AC, line_BD)
point_lies_on(F, minor_arc1)


Diagram description: The diagram contains points A, B, C, D, E. There is a circle with center E. There is a quadrilateral ABCD. There is a line segment AC. There is a line segment BD. There is a line segment AB. Line AC is a chord of the circle. Line AC is perpendicular to line BD. Line AB is a diameter of the circle. Further, the area of quadrilateral ABCD equals the area of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

quadrilateral1 = scene.add.quadrilateral(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)

### relationships

scene.relate.is_chord(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.is_diameter(line_AB, circle1)

### Extra relationships

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

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

is_chord(line_AC, circle1)
perpendicular(line_AC, line_BD)
is_diameter(line_AB, circle1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a major arc BC. There are line segments BD, CD, and AD. Line BD is a chord of the circle. Angle BDC is a right angle. The circle is congruent to the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
major_arc1 = scene.add.major_arc(A, B, C)
line_BD = scene.add.line_segment(B, D)
line_CD = scene.add.line_segment(C, D)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.congruent(circle1, circle1)
scene.relate.is_chord(line_BD, circle1)
scene.relate.right_angle(B, D, C)

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

congruent(circle1, circle1)
is_chord(line_BD, circle1)
right_angle(B, D, C)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a minor arc BC on that circle. There are line segments BC, AD, and CD. The circle is congruent to itself. Line BC is a chord of the circle. Line AD is perpendicular to line CD. Further, the length of line BC is equal to the length of line AD and angle BAD is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
minor_arc1 = scene.add.minor_arc(A, B, C)
line_BC = scene.add.line_segment(B, C)
line_AD = scene.add.line_segment(A, D)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.congruent(circle1, circle1)
scene.relate.is_chord(line_BC, circle1)
scene.relate.perpendicular(line_AD, line_CD)

### Extra relationships

scene.constraint.eq(line_BC.length, line_AD.length)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('A'), scene.get_object('D')), 90)

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

congruent(circle1, circle1)
is_chord(line_BC, circle1)
perpendicular(line_AD, line_CD)


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 line segment CD. There is a line segment AB. There is a line segment EF. Line segment CD intersects line segment AB at point G. 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 F. Further, the areas of the circles with centers A and B are equal.

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)
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.lines_intersect_at(line_CD, line_AB, G)
scene.relate.is_chord(line_CD, circle1)
scene.relate.tangent_to_circle(line EF, circle2, F)

### Extra relationships

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

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

lines_intersect_at(line_CD, line_AB, G)
is_chord(line_CD, circle1)
tangent_to_circle(line EF, circle2, F)


Diagram description: The diagram contains points A, B, C, D, E. There is a trapezoid ABCD. There is a circle with center E. There is a line segment AB. There is a line segment CD. There is a line segment AC. There is a line segment AD. Line AC intersects the circle at points A and C. Line AB is perpendicular to line AD. Line AC is a diameter of the circle. Further, the length of line AD is equal to the length of line AB. Further, angle ABC is 90 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

trapezoid1 = scene.add.trapezoid(A, B, C, D)
circle1 = scene.add.circle(E)
line_AB = scene.add.line_segment(A, B)
line_CD = scene.add.line_segment(C, D)
line_AC = scene.add.line_segment(A, C)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.line_intersects_circle_at(line_AC, circle1, A, C)
scene.relate.perpendicular(line_AB, line_AD)
scene.relate.is_diameter(line_AC, circle1)

### Extra relationships

scene.constraint.eq(line_AD.length, line_AB.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, D, E. There is a rectangle with points 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. Points A, E, and C are collinear. Line segment AC is a diameter of the circle. Line AB is perpendicular to line BC. Further, the diameter of the circle is equal to the length of 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.collinear(A, E, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AB, line_BC)

### Extra relationships

scene.constraint.eq(circle1.diameter, line_BC.length)

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

collinear(A, E, C)
is_diameter(line_AC, circle1)
perpendicular(line_AB, line_BC)


Diagram description: The diagram contains points A, B, C, D, E, G. There is a right triangle ABC with vertices A, B, C. There is a minor arc with center D, starting at E and ending at G. There is a line segment AB. There is a line segment BC. There is a line segment AC. There is a line segment DG. Line AB is parallel to line DG. Line BC is an altitude of triangle ABC from vertex B. Point E lies on the minor arc with center D. Further, the length of line AB is equal to the length of line DG and the central angle of the minor arc is less than or equal to 90 degrees.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.right_triangle(A, B, C)
arcDEG = scene.add.minor_arc(D, E, G)
lineAB = scene.add.line_segment(A, B)
lineBC = scene.add.line_segment(B, C)
lineAC = scene.add.line_segment(A, C)
lineDG = scene.add.line_segment(D, G)

### relationships

scene.relate.parallel(lineAB, lineDG)
scene.relate.is_altitude(lineBC, triangleABC, B)
scene.relate.point_lies_on(E, arcDEG)

### Extra relationships

scene.constraint.eq(lineAB.length, lineDG.length)
scene.constraint.leq(arcDEG.central_angle, 90)

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

parallel(lineAB, lineDG)
is_altitude(lineBC, triangleABC, B)
point_lies_on(E, arcDEG)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a major arc BC. There is a line segment BC. There is a line segment AD. The angle DAC is obtuse. Line BC is a chord of the circle. Point D lies on the circle. Further, the central angle of the major arc equals twice the inscribed angle that subtends the same arc.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
major_arc1 = scene.add.major_arc(A, B, C)
line_BC = scene.add.line_segment(B, C)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.obtuse_angle(D, A, C)
scene.relate.is_chord(line_BC, circle1)
scene.relate.point_lies_on(D, circle1)

### Extra relationships

scene.constraint.eq(major_arc1.central_angle, 2 * major_arc1.inscribed_angle)

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

obtuse_angle(D, A, C)
is_chord(line_BC, circle1)
point_lies_on(D, circle1)

scene.constraint.eq(scene.get_object('major_arc1').central_angle, 2 * scene.get_object('major_arc1').inscribed_angle)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is an isosceles triangle BCD. There is a line segment BC. There is a line segment CD. There is a line segment BD. Point B lies on the circle. Point C lies on the circle. Line BC is a chord of the circle. Further, the area of triangle BCD is equal to one-fourth the area of the circle.

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.isosceles_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)
scene.relate.is_chord(line_BC, circle1)

### Extra relationships

scene.constraint.eq(triangle1.area, circle1.area / 4)

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

point_lies_on(B, circle1)
point_lies_on(C, circle1)
is_chord(line_BC, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a rectangle with points A, B, C, D. There is a minor arc with center E, start point F, and end point G. 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 EG. Line AB is parallel to line CD. Line AB is perpendicular to line BC. Point F lies on the minor arc. Further, the length of line EF equals the length of line AB and the angle FEG measures 60 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"])

rectangle1 = scene.add.rectangle(A, B, C, D)
arc1 = scene.add.minor_arc(E, F, G)
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_EG = scene.add.line_segment(E, G)

### relationships

scene.relate.parallel(line_AB, line_CD)
scene.relate.perpendicular(line_AB, line_BC)
scene.relate.point_lies_on(F, arc1)

### Extra relationships

scene.constraint.eq(line_EF.length, line_AB.length)
scene.constraint.eq(scene.angle(scene.get_object('E'), scene.get_object('F'), scene.get_object('G')), 60)

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

parallel(line_AB, line_CD)
perpendicular(line_AB, line_BC)
point_lies_on(F, arc1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is an equilateral triangle with vertices B, C, D. There are line segments BC, CD, DB, AD, AC, AB. The circle with center A is the circumcircle of triangle BCD. Line AB is a radius of the circle with center A. Line AC is a radius of the circle with center A. Line AD is a radius of the circle with center A.

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.equilateral_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DB = scene.add.line_segment(D, B)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)
line_AB = scene.add.line_segment(A, B)

### relationships

scene.relate.is_circumcircle(circle1, triangle1)
scene.relate.is_radius(line_AB, circle1)
scene.relate.is_radius(line_AC, circle1)

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

is_circumcircle(circle1, triangle1)
is_radius(line_AB, circle1)
is_radius(line_AC, circle1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a scalene triangle BCD. There are line segments BC, CD, DB, AD, AC, AB. Point A is the centroid of triangle BCD. The circle is the circumcircle of triangle BCD. Line AB is a radius of the circle. Further, the area of triangle BCD is one-fourth the area of the circle.

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.scalene_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DB = scene.add.line_segment(D, B)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)
line_AB = scene.add.line_segment(A, B)

### relationships

scene.relate.is_centroid(A, triangle1)
scene.relate.is_circumcircle(circle1, triangle1)
scene.relate.is_radius(line_AB, circle1)

### Extra relationships

scene.constraint.eq(triangle1.area, circle1.area / 4)

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

is_centroid(A, triangle1)
is_circumcircle(circle1, triangle1)
is_radius(line_AB, circle1)


Diagram description: The diagram contains points A, B, C, D. There is a semicircle with center A, start point B, and end point C. There is a circle with center D. There is a line segment AB. There is a line segment AC. There is a line segment BC. There is a line segment AD. There is a line segment BD. Point A lies on the circle. Point B lies on the circle. Line AB is a diameter of the circle. Further, length of line AD is equal to length of line BD.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

semicircle1 = scene.add.major_arc(A, B, C)
circle1 = scene.add.circle(D)
line_AB = scene.add.line_segment(A, B)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)
line_AD = scene.add.line_segment(A, D)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.point_lies_on(A, circle1)
scene.relate.point_lies_on(B, circle1)
scene.relate.is_diameter(line_AB, circle1)

### 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)
is_diameter(line_AB, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a rectangle with corners A, B, C, D. There is a minor arc with center E, start point F, and end point G. 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 EG. Line AB is rotated around point B by 90 degrees to form line BC. Line AB is perpendicular to line BC. Point F lies on the minor arc with center E, start point F, and end point G. Further, the central angle of the minor arc with center E, start point F, and end point G is 90 degrees, and the length of line AB is less than or equal to the length of line BC.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rectangle1 = scene.add.rectangle(A, B, C, D)
minor_arc1 = scene.add.minor_arc(E, F, G)
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_EG = scene.add.line_segment(E, G)

### relationships

scene.relate.rotation_around_point(line_AB, line_BC, B, 90)
scene.relate.perpendicular(line_AB, line_BC)
scene.relate.point_lies_on(F, minor_arc1)

### Extra relationships

scene.constraint.eq(minor_arc1.central_angle, 90)
scene.constraint.leq(line_AB.length, line_BC.length)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G. 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 AD. Line segment BE intersects line segment CF at G. Point G lies on the major arc with center A and endpoints B and C. Line segment AD is perpendicular to line segment BE.

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)
semicircle1 = scene.add.semicircle(D, E, F)
line_BE = scene.add.line_segment(B, E)
line_CF = scene.add.line_segment(C, F)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.lines_intersect_at(line_BE, line_CF, G)
scene.relate.point_lies_on(G, major_arc1)
scene.relate.perpendicular(line_AD, line_BE)

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

lines_intersect_at(line_BE, line_CF, G)
point_lies_on(G, major_arc1)
perpendicular(line_AD, line_BE)


Diagram description: The diagram contains points A, B, C, O, D, E, F. There is a triangle with vertices A, B, C. 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 a median of triangle ABC from vertex A. The circle with center O is the circumcircle of triangle ABC. Line AD is perpendicular to line BE.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle_ABC = scene.add.triangle(A, B, C)
circle_O = 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)

### relationships

scene.relate.is_median(line_AD, triangle_ABC, A)
scene.relate.is_circumcircle(circle_O, triangle_ABC)
scene.relate.perpendicular(line_AD, line_BE)

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

is_median(line_AD, triangle_ABC, A)
is_circumcircle(circle_O, triangle_ABC)
perpendicular(line_AD, line_BE)


Diagram description: The diagram contains points A, B, C, D, E, F. There is a equilateral triangle with vertices A, B, C. There is a right triangle with vertices D, E, F. There is a line segment AC. There is a line segment DF. There is a line segment BE. The line AC is parallel to line DF. The line BE is perpendicular to line AC. Line BE is an altitude of triangle ABC from vertex B.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle1 = scene.add.equilateral_triangle(A, B, C)
triangle2 = scene.add.right_triangle(D, E, F)
line_AC = scene.add.line_segment(A, C)
line_DF = scene.add.line_segment(D, F)
line_BE = scene.add.line_segment(B, E)

### relationships

scene.relate.parallel(line_AC, line_DF)
scene.relate.perpendicular(line_BE, line_AC)
scene.relate.is_altitude(line_BE, triangle1, B)

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

parallel(line_AC, line_DF)
perpendicular(line_BE, line_AC)
is_altitude(line_BE, triangle1, B)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is an isosceles trapezoid ABCD. There is a major arc FG with center E. There is a line segment AD. There is a line segment BC. There is a line segment EF. There is a line segment EG. Point F lies on the major arc FG. Point G lies on the major arc FG. The isosceles trapezoid ABCD is mirrored across line EF.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

trapezoid1 = scene.add.isosceles_trapezoid(A, B, C, D)
arc1 = scene.add.major_arc(E, F, G)
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_EG = scene.add.line_segment(E, G)

### relationships

scene.relate.point_lies_on(F, arc1)
scene.relate.point_lies_on(G, arc1)
scene.relate.mirror_across_line(trapezoid1, trapezoid1, line_EF)

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 with center A and endpoints B and C. There is a parallelogram with vertices D, E, F, G. There is a line segment DH. There is a line segment GI. There is a line segment EF. The angle BAC is a right angle. Line DH is perpendicular to line EF. Point H lies on the major arc BC. Further, the central angle of the major arc equals twice its inscribed angle, and the length of line DH is less than or equal to the radius of the major arc.

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)
parallelogram1 = scene.add.parallelogram(D, E, F, G)
line_DH = scene.add.line_segment(D, H)
line_GI = scene.add.line_segment(G, I)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.right_angle(B, A, C)
scene.relate.perpendicular(line_DH, line_EF)
scene.relate.point_lies_on(H, major_arc1)

### Extra relationships

scene.constraint.eq(major_arc1.central_angle, 2 * major_arc1.inscribed_angle)
scene.constraint.leq(line_DH.length, major_arc1.radius)

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

right_angle(B, A, C)
perpendicular(line_DH, line_EF)
point_lies_on(H, major_arc1)


Diagram description: The diagram contains points A, B, C, O, D, E, F. There is an acute triangle ABC. 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. O is the orthocenter of triangle ABC. line AD is an altitude of triangle ABC from vertex A. line BE is an altitude of triangle ABC from vertex B. Further, the length of line AD is equal to the length of line BE, and the area of triangle ABC is less than or equal to 10.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle_ABC = scene.add.acute_triangle(A, B, C)
circle_O = 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)

### relationships

scene.relate.is_orthocenter(O, triangle_ABC)
scene.relate.is_altitude(line_AD, triangle_ABC, A)
scene.relate.is_altitude(line_BE, triangle_ABC, B)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BE.length)
scene.constraint.leq(triangle_ABC.area, 10)

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

is_orthocenter(O, triangle_ABC)
is_altitude(line_AD, triangle_ABC, A)
is_altitude(line_BE, triangle_ABC, B)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a parallelogram ABCD. There is a rectangle EFGH. There is a line segment AC. There is a line segment EG. There is a line segment AB. There is a line segment EF. Parallelogram ABCD is scaled by a factor of 2 to form rectangle EFGH. Line AC is perpendicular to line EG. Line AB is parallel to line EF.

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"])

parallelogram1 = scene.add.parallelogram(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
line_AC = scene.add.line_segment(A, C)
line_EG = scene.add.line_segment(E, G)
line_AB = scene.add.line_segment(A, B)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.scale(parallelogram1, rectangle1, 2)
scene.relate.perpendicular(line_AC, line_EG)
scene.relate.parallel(line_AB, line_EF)

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

scale(parallelogram1, rectangle1, 2)
perpendicular(line_AC, line_EG)
parallel(line_AB, line_EF)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is an equilateral triangle BCD. There is a line segment BC. There is a line segment CD. There is a line segment DB. Point B lies on the circle. Point C lies on the circle. The circle is the circumcircle of triangle BCD. Further, the perimeter of triangle BCD equals three times the length of line BC. Further, the length of line BC equals the length of line CD. Further, the length of line CD equals the length of line DB.

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.equilateral_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DB = scene.add.line_segment(D, B)

### relationships

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(triangle1.perimeter, 3 * line_BC.length)
scene.constraint.eq(line_BC.length, line_CD.length)
scene.constraint.eq(line_CD.length, line_DB.length)

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

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

scene.constraint.eq(scene.get_object('triangle1').perimeter, 3 * scene.get_object('line_BC').length)


Diagram description: The diagram contains points A, B, C, D, E. There is a circle with center E. There is a rhombus with vertices A, B, C, D. There is a line segment AC. There is a line segment BD. Line AC is perpendicular to line BD. Line AC is a diameter of the circle. Further, the area of rhombus ABCD equals the area of circle E.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rhombus1 = scene.add.rhombus(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)

### relationships

scene.relate.is_diameter(line_AC, circle1)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

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

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

is_diameter(line_AC, circle1)
perpendicular(line_AC, line_BD)


Diagram description: The diagram contains points A, B, C, D, E. There is a minor arc BC with center A. There is a major arc DE with center A. There is a line segment BD. There is a line segment CE. There is a line segment DE. Point B lies on minor arc BC. Point D lies on major arc DE. Line BD is perpendicular to line CE.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

minor_arc1 = scene.add.minor_arc(A, B, C)
major_arc2 = scene.add.major_arc(A, D, E)
line_BD = scene.add.line_segment(B, D)
line_CE = scene.add.line_segment(C, E)
line_DE = scene.add.line_segment(D, E)

### relationships

scene.relate.point_lies_on(B, minor_arc1)
scene.relate.point_lies_on(D, major_arc2)
scene.relate.perpendicular(line_BD, line_CE)

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

point_lies_on(B, minor_arc1)
point_lies_on(D, major_arc2)
perpendicular(line_BD, line_CE)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J, K. There is a minor arc with center A, start point B, and end point C. There is a regular octagon with vertices D, E, F, G, H, I, J, K. There is a line segment AB. There is a line segment AC. There is a line segment DE. There is a line segment EF. Point B lies on the minor arc. Point C lies on the minor arc. Line AB is perpendicular to line AC. Further, the inscribed angle of the minor arc is 45 degrees. Further, the area of the regular octagon is less than or equal to 20 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"])

minor_arc1 = scene.add.minor_arc(A, B, C)
regular_octagon1 = scene.add.regular_octagon(D, E, F, G, H, I, J, K)
line_AB = scene.add.line_segment(A, B)
line_AC = scene.add.line_segment(A, C)
line_DE = scene.add.line_segment(D, E)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.point_lies_on(B, minor_arc1)
scene.relate.point_lies_on(C, minor_arc1)
scene.relate.perpendicular(line_AB, line_AC)

### Extra relationships

scene.constraint.eq(minor_arc1.inscribed_angle, 45)
scene.constraint.leq(regular_octagon1.area, 20)

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

point_lies_on(B, minor_arc1)
point_lies_on(C, minor_arc1)
perpendicular(line_AB, line_AC)


Diagram description: The diagram contains points A, B, C, D. There is a major arc with center A, start point B, end point C. There is a circle with center D. There is a line segment AC. There is a line segment BC. There is a line segment AD. There is a line segment BD. There is a line segment CD. Line AC and line BC intersect at C. Line CD is the angle bisector of angle ACB. Line AD is a radius of the circle. Line BD is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

semicircle1 = scene.add.major_arc(A, B, C)
circle1 = scene.add.circle(D)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)
line_AD = scene.add.line_segment(A, D)
line_BD = scene.add.line_segment(B, D)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.lines_intersect_at(line_AC, line_BC, C)
scene.relate.angle_bisector(A, C, B, line_CD)
scene.relate.is_radius(line_AD, circle1)
scene.relate.is_radius(line_BD, circle1)

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

lines_intersect_at(line_AC, line_BC, C)
angle_bisector(A, C, B, line_CD)
is_radius(line_AD, circle1)
is_radius(line_BD, circle1)


Diagram description: The diagram contains points A, B, C, D, E. There is a square with vertices 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 EA. There is a line segment AB. E is the centroid of the square. Points A, E, and C are collinear. Line segment AC is a diameter of the circle. Line segment EA is a radius of the circle. Further, the area of the circle equals the area of the square. Further, angle AEB is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

square1 = scene.add.square(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_EA = scene.add.line_segment(E, A)
line_AB = scene.add.line_segment(A, B)

### relationships

scene.relate.is_centroid(E, square1)
scene.relate.collinear(A, E, C)
scene.relate.is_diameter(line_AC, circle1)
scene.relate.is_radius(line_EA, circle1)

### Extra relationships

scene.constraint.eq(circle1.area, square1.area)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('E'), scene.get_object('B')), 90)

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

is_centroid(E, square1)
collinear(A, E, C)
is_diameter(line_AC, circle1)
is_radius(line_EA, circle1)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a major arc with center B and endpoints C and D. There are line segments AB, AC, AD, BC, and CD. Point B lies on the circle. Point C lies on the circle. Point D lies on the circle. Line AB intersects line CD at point A.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
semicircle1 = scene.add.major_arc(B, C, D)
line_AB = scene.add.line_segment(A, B)
line_AC = scene.add.line_segment(A, C)
line_AD = scene.add.line_segment(A, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)

### relationships

scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)
scene.relate.point_lies_on(D, circle1)
scene.relate.lines_intersect_at(line_AB, line_CD, A)

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

point_lies_on(B, circle1)
point_lies_on(C, circle1)
point_lies_on(D, circle1)
lines_intersect_at(line_AB, line_CD, A)


Diagram description: The diagram contains points A, B, C, D, E. There is a circle with center A. There is a kite BCDE. There is a line segment BC. There is a line segment CD. There is a line segment DE. There is a line segment BE. There is a line segment AC. There is a line segment AD. B, A, and C are collinear. The angle at A formed by points B and D is a right angle. Line segment AC is a radius of the circle. Line segment AD is a radius of the circle.

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)
kite1 = scene.add.kite(B, C, D, E)
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_BE = scene.add.line_segment(B, E)
line_AC = scene.add.line_segment(A, C)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.collinear(B, A, C)
scene.relate.right_angle(B, A, D)
scene.relate.is_radius(line_AC, circle1)
scene.relate.is_radius(line_AD, circle1)

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

collinear(B, A, C)
right_angle(B, A, D)
is_radius(line_AC, circle1)
is_radius(line_AD, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a trapezoid ABCD. There is a scalene triangle EFG. There are line segments AC, BD, EF, FG, GE. Line AC and line BD intersect at point H. Line AC is perpendicular to line BD. Point H is the centroid of trapezoid ABCD. Line EF is an altitude of triangle EFG from vertex E. Further, length of line AC is equal to length of line BD, and angle AHB is a right angle.

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"])

trapezoid1 = scene.add.trapezoid(A, B, C, D)
triangle1 = scene.add.scalene_triangle(E, F, G)
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_GE = scene.add.line_segment(G, E)

### relationships

scene.relate.lines_intersect_at(line_AC, line_BD, H)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.is_centroid(H, trapezoid1)
scene.relate.is_altitude(line_EF, triangle1, E)

### Extra relationships

scene.constraint.eq(line_BD.length, line_AC.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('H'), scene.get_object('B')), 90)

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

lines_intersect_at(line_AC, line_BD, H)
perpendicular(line_AC, line_BD)
is_centroid(H, trapezoid1)
is_altitude(line_EF, triangle1, E)


Diagram description: The diagram contains points A, B, C, O, D, E, F, G. There is an isosceles triangle ABC with AB = BC. 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 parallel to line BE. Line AD intersects line CF at point G. Line AD is an altitude of triangle ABC from vertex A. The circle is the circumcircle of triangle ABC.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.isosceles_triangle(A, B, C)
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)

### relationships

scene.relate.parallel(line_AD, line_BE)
scene.relate.lines_intersect_at(line_AD, line_CF, G)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_circumcircle(circleO, triangleABC)

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

parallel(line_AD, line_BE)
lines_intersect_at(line_AD, line_CF, G)
is_altitude(line_AD, triangleABC, A)
is_circumcircle(circleO, triangleABC)


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

from pygeox import GeoScene

scene = GeoScene()

### objects

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

rhomboid1 = scene.add.rhomboid(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_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.line_intersects_circle_at(line_AC, circle1, A, C)
scene.relate.tangent_to_circle(line_BC, circle1, C)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.is_diameter(line_AC, circle1)

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


Diagram description: The diagram contains points A, B, C, D, 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 AF. The circles are similar. Line AF is the angle bisector of angle CAD. Line CD is a chord of the circle with center A. Line CD is perpendicular to line AF. Further, the area of the circle with center A is equal to the area of the circle with center B and angle CAF is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
circle2 = scene.add.circle(B)
line_CD = scene.add.line_segment(C, D)
line_AF = scene.add.line_segment(A, F)

### relationships

scene.relate.similar(circle1, circle2)
scene.relate.angle_bisector(C, A, D, line_AF)
scene.relate.is_chord(line_CD, circle1)
scene.relate.perpendicular(line_CD, line_AF)

### Extra relationships

scene.constraint.eq(circle1.area, circle2.area)
scene.constraint.eq(scene.angle(scene.get_object('C'), scene.get_object('A'), scene.get_object('F')), 90)

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

similar(circle1, circle2)
angle_bisector(C, A, D, line_AF)
is_chord(line_CD, circle1)
perpendicular(line_CD, line_AF)


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 BC. There is a line segment CD. There is a line segment BD. There is a line segment AD. There is a line segment AC. Line BC is tangent to the circle at point B. The angle at D in triangle BCD is obtuse. Line BD is a chord of the circle. Point D lies on the circle.

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_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.tangent_to_circle(line_BC, circle1, B)
scene.relate.obtuse_angle(D, C, B)
scene.relate.is_chord(line_BD, circle1)
scene.relate.point_lies_on(D, circle1)

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

tangent_to_circle(line_BC, circle1, B)
obtuse_angle(D, C, B)
is_chord(line_BD, circle1)
point_lies_on(D, 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 are line segments AD, BE, CF, DE, AF, and BD. Angle ABC is acute. The extensions of line AD and line BE intersect at point G. Line AD is perpendicular to line BE. Line CF is an altitude of triangle ABC from vertex C. Further, the perimeters of triangle ABC and triangle DEF are equal, and angle ABC measures 75 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"])

triangle1 = scene.add.isosceles_triangle(A, B, C)
triangle2 = 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)
line_DE = scene.add.line_segment(D, E)
line_AF = scene.add.line_segment(A, F)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.acute_angle(A, B, C)
scene.relate.line_extensions_intersect_at(line_AD, line_BE, G)
scene.relate.perpendicular(line_AD, line_BE)
scene.relate.is_altitude(line_CF, triangle1, C)

### Extra relationships

scene.constraint.eq(triangle1.perimeter, triangle2.perimeter)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('B'), scene.get_object('C')), 75)

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


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a triangle with vertices B, C, D. There is a line segment BC. There is a line segment CD. There is a line segment BD. There is a line segment AD. There is a line segment AC. Line BC is perpendicular to line CD. Angle BCD is obtuse. Line BD is a chord of the circle. Line AD is a radius of the circle. Further, length of line CD is equal to length of line AD. Further, angle BCD is 90 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.triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.perpendicular(line_BC, line_CD)
scene.relate.obtuse_angle(B, C, D)
scene.relate.is_chord(line_BD, circle1)
scene.relate.is_radius(line_AD, circle1)

### Extra relationships

scene.constraint.eq(line_CD.length, line_AD.length)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('C'), scene.get_object('D')), 90)

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

perpendicular(line_BC, line_CD)
obtuse_angle(B, C, D)
is_chord(line_BD, circle1)
is_radius(line_AD, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is an isosceles trapezoid ABCD. There is a rectangle EFGH. There is a line segment AC. There is a line segment BD. There is a line segment EG. There is a line segment FH. Line AC and line BD intersect at point I. Line EG and line FH intersect at point J. Line AC is perpendicular to line BD. Line EG is perpendicular to line FH. Further, length of line AC is equal to length of line BD. Further, angle A I B 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"])

trapezoid1 = scene.add.isosceles_trapezoid(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
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.line_extensions_intersect_at(line_AC, line_BD, I)
scene.relate.line_extensions_intersect_at(line_EG, line_FH, J)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.perpendicular(line_EG, line_FH)

### Extra relationships

scene.constraint.eq(line_AC.length, line_BD.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('I'), scene.get_object('B')), 90)

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


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is an acute triangle BCD. There is a line segment BC. There is a line segment CD. There is a line segment DB. There is a line segment AD. There is a line segment AC. There is a line segment BD. Line AC is a radius of the circle. Line AD is a radius of the circle. Line AC is perpendicular to line AD. Point D is the midpoint of line BC. Further, the length of line AD is equal to the length of line AC and the angle CAD measures 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.acute_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_DB = scene.add.line_segment(D, B)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)
line_BD = scene.add.line_segment(B, D)

### relationships

scene.relate.is_radius(line_AC, circle1)
scene.relate.is_radius(line_AD, circle1)
scene.relate.perpendicular(line_AC, line_AD)
scene.relate.is_midpoint(D, line_BC)

### Extra relationships

scene.constraint.eq(line_AD.length, line_AC.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('C'), scene.get_object('D')), 45)

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

is_radius(line_AC, circle1)
is_radius(line_AD, circle1)
perpendicular(line_AC, line_AD)
is_midpoint(D, line_BC)


Diagram description: The diagram contains points A, B, C, D.
There is a circle with center A.
There is a right triangle BCD.
There is a line segment BC.
There is a line segment CD.
There is a line segment BD.
There is a line segment AD.
There is a line segment AC.
Point B lies on the circle.
Point C lies on the circle.
Line BC is a chord of the circle.
Triangle BCD is similar to itself.
Further, the area of triangle BCD is one-fourth the area of the circle and the angle formed at B by points A, B, and D 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_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.point_lies_on(B, circle1)
scene.relate.point_lies_on(C, circle1)
scene.relate.is_chord(line_BC, circle1)
scene.relate.similar(triangle1, triangle1)

### Extra relationships

scene.constraint.eq(triangle1.area, circle1.area / 4)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('B'), scene.get_object('D')), 45)

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

point_lies_on(B, circle1)
point_lies_on(C, circle1)
is_chord(line_BC, circle1)
similar(triangle1, triangle1)


Diagram description: The diagram contains points A, B, C, O. There is a right isosceles triangle ABC. 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 AO. There is a line segment BO. There is a line segment CO. Line AB intersects the circle at points A and B. Line BC intersects the circle at points B and C. Line AB is congruent to line BC. The circle is the circumcircle of triangle ABC. Further, the length of line AB equals the length of line BC and the length of line AC equals the length of line AB multiplied by the square root of 2.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.right_isosceles_triangle(A, B, C)
circleO = scene.add.circle(O)
lineAB = scene.add.line_segment(A, B)
lineBC = scene.add.line_segment(B, C)
lineAC = scene.add.line_segment(A, C)
lineAO = scene.add.line_segment(A, O)
lineBO = scene.add.line_segment(B, O)
lineCO = scene.add.line_segment(C, O)

### relationships

scene.relate.line_intersects_circle_at(lineAB, circleO, A, B)
scene.relate.line_intersects_circle_at(lineBC, circleO, B, C)
scene.relate.congruent(lineAB, lineBC)
scene.relate.is_circumcircle(circleO, triangleABC)

### Extra relationships

scene.constraint.eq(lineAB.length, lineBC.length)
scene.constraint.eq(lineAC.length, lineAB.length * 2**0.5)

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

scene.constraint.eq(scene.get_object('lineAC').length, scene.get_object('lineAB').length * 2**0.5)


Diagram description: The diagram contains points A, B, C, O, D, E, F. There is a triangle ABC with points A, B, C. 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. The circle is the circumcircle of triangle ABC. Point A lies on the circle. Line AD is an altitude of triangle ABC from vertex A. Line BE is an altitude of triangle ABC from vertex B.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.triangle(A, B, C)
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)

### relationships

scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.point_lies_on(A, circleO)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_altitude(line_BE, triangleABC, B)

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

is_circumcircle(circleO, triangleABC)
point_lies_on(A, circleO)
is_altitude(line_AD, triangleABC, A)
is_altitude(line_BE, triangleABC, B)


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a minor arc BC with center A. There is a line segment BC. There is a line segment AD. The circle is congruent to itself. Angle BAD is a right angle. Line BC is a chord of the circle. Line AD is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

circle1 = scene.add.circle(A)
minor_arc1 = scene.add.minor_arc(A, B, C)
line_BC = scene.add.line_segment(B, C)
line_AD = scene.add.line_segment(A, D)

### relationships

scene.relate.congruent(circle1, circle1)
scene.relate.right_angle(B, A, D)
scene.relate.is_chord(line_BC, circle1)
scene.relate.is_radius(line_AD, circle1)

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

congruent(circle1, circle1)
right_angle(B, A, D)
is_chord(line_BC, circle1)
is_radius(line_AD, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I. There is a rectangle ABCD. There is a square EFGH. There is a line segment AC. There is a line segment BD. There is a line segment EG. There is a line segment FH. Line AC and line BD intersect at I. Point I lies on line AC. Point I lies on line BD. Line AC is perpendicular to line BD. Further, the area of rectangle ABCD equals the area of square EFGH. Further, angle AIB is a right angle.

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)
square1 = scene.add.square(E, F, G, H)
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.lines_intersect_at(line_AC, line_BD, I)
scene.relate.point_lies_on(I, line_AC)
scene.relate.point_lies_on(I, line_BD)
scene.relate.perpendicular(line_AC, line_BD)

### Extra relationships

scene.constraint.eq(rectangle1.area, square1.area)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('I'), scene.get_object('B')), 90)

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

lines_intersect_at(line_AC, line_BD, I)
point_lies_on(I, line_AC)
point_lies_on(I, line_BD)
perpendicular(line_AC, line_BD)


Diagram description: The diagram contains points A, B, C, D, E. There is a square with vertices 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 EA. There is a line segment ED. Line BD is the perpendicular bisector of line AC. The extensions of line AC and line BD intersect at point E. Line EA is a radius of the circle. Line ED is a radius of the circle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

square1 = scene.add.square(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_EA = scene.add.line_segment(E, A)
line_ED = scene.add.line_segment(E, D)

### relationships

scene.relate.perpendicular_bisector_at(line_AC, line_BD)
scene.relate.line_extensions_intersect_at(line_AC, line_BD, E)
scene.relate.is_radius(line_EA, circle1)
scene.relate.is_radius(line_ED, circle1)

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


Diagram description: The diagram contains points A, B, C, D, E. There is a square with points 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 CD. Line AC is a diameter of the circle. Line BD is a diameter of the circle. Line AB is parallel to line CD.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

square1 = scene.add.square(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.is_diameter(line_AC, circle1)
scene.relate.is_diameter(line_BD, circle1)
scene.relate.parallel(line_AB, line_CD)

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

is_diameter(line_AC, circle1)
is_diameter(line_BD, circle1)
parallel(line_AB, line_CD)


Diagram description: The diagram contains points A, B, C, O. There is a major arc with center A, start point B, and end point C. There is a circle with center O. There is a line segment AB. There is a line segment OC. There is a line segment AC. There is a line segment BC. Line OC is a radius of the circle. Line AB is a chord of the circle. Line AB is perpendicular to line AC. Point C lies on the major arc.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

semicircle1 = scene.add.major_arc(A, B, C)
circle1 = scene.add.circle(O)
line_AB = scene.add.line_segment(A, B)
line_OC = scene.add.line_segment(O, C)
line_AC = scene.add.line_segment(A, C)
line_BC = scene.add.line_segment(B, C)

### relationships

scene.relate.is_radius(line_OC, circle1)
scene.relate.is_chord(line_AB, circle1)
scene.relate.perpendicular(line_AB, line_AC)
scene.relate.point_lies_on(C, semicircle1)

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

is_radius(line_OC, circle1)
is_chord(line_AB, circle1)
perpendicular(line_AB, line_AC)
point_lies_on(C, semicircle1)


Diagram description: The diagram contains points A, B, C, O, D, E, F. There is an acute triangle ABC. 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. The circle is the circumcircle of triangle ABC. Line AD is an altitude of triangle ABC from vertex A. Line BE is an altitude of triangle ABC from vertex B. Line AD is congruent to line BE. Further, the length of line AD is equal to the length of line BE. The area of triangle ABC is less than or equal to 10.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.acute_triangle(A, B, C)
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)

### relationships

scene.relate.is_circumcircle(circleO, triangleABC)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_altitude(line_BE, triangleABC, B)
scene.relate.congruent(line_AD, line_BE)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BE.length)
scene.constraint.leq(triangleABC.area, 10)

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

is_circumcircle(circleO, triangleABC)
is_altitude(line_AD, triangleABC, A)
is_altitude(line_BE, triangleABC, B)
congruent(line_AD, line_BE)


Diagram description: The diagram contains points A, B, C, D, E, F, O. There is an obtuse triangle with vertices A, B, C. 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 an altitude of triangle ABC from vertex A. Line AD intersects the circle at points A and D. Line BE is an altitude of triangle ABC from vertex B. Line CF is an altitude of triangle ABC from vertex C. Further, the length of line AD is equal to the length of line BE. Further, angle AOD is a right angle.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.obtuse_triangle(A, B, C)
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)

### relationships

scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.line_intersects_circle_at(line_AD, circleO, A, D)
scene.relate.is_altitude(line_BE, triangleABC, B)
scene.relate.is_altitude(line_CF, triangleABC, C)

### Extra relationships

scene.constraint.eq(line_AD.length, line_BE.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('O'), scene.get_object('D')), 90)

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 a major arc BC. There is a line segment BD. There is a line segment AC. There is a line segment ED. Line BD is the perpendicular bisector of line AC. Line BD is parallel to line ED. Line BD is a chord of the circle. Point D lies on the circle. Further, the length of line BD is equal to the length of line ED, and angle BAD is a right angle.

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)
major_arc1 = scene.add.major_arc(A, B, C)
line_BD = scene.add.line_segment(B, D)
line_AC = scene.add.line_segment(A, C)
line_ED = scene.add.line_segment(E, D)

### relationships

scene.relate.perpendicular_bisector_at(line_BD, line_AC)
scene.relate.parallel(line_BD, line_ED)
scene.relate.is_chord(line_BD, circle1)
scene.relate.point_lies_on(D, circle1)

### Extra relationships

scene.constraint.eq(line_BD.length, line_ED.length)
scene.constraint.eq(scene.angle(scene.get_object('B'), scene.get_object('A'), scene.get_object('D')), 90)

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


Diagram description: The diagram contains points A, B, C, D. There is a circle with center A. There is a right triangle with vertices B, C, D. There is a line segment BC. There is a line segment CD. There is a line segment BD. There is a line segment AD. There is a line segment AC. Line BC is perpendicular to line CD. The angle at C formed by points B, C, D is a right angle. Line BD is a chord of the circle. Line AD is a radius of the circle.

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_triangle(B, C, D)
line_BC = scene.add.line_segment(B, C)
line_CD = scene.add.line_segment(C, D)
line_BD = scene.add.line_segment(B, D)
line_AD = scene.add.line_segment(A, D)
line_AC = scene.add.line_segment(A, C)

### relationships

scene.relate.perpendicular(line_BC, line_CD)
scene.relate.right_angle(B, C, D)
scene.relate.is_chord(line_BD, circle1)
scene.relate.is_radius(line_AD, circle1)

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

perpendicular(line_BC, line_CD)
right_angle(B, C, D)
is_chord(line_BD, circle1)
is_radius(line_AD, circle1)


Diagram description: The diagram contains points A, B, C, D, E, F, G. There is a major arc with center A and endpoints B and C. There is a quadrilateral 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. Point D lies on the major arc with center A and endpoints B and C. Point F lies on the major arc with center A and endpoints B and C. Points D, F, and G are collinear. Line segment DF is perpendicular to line segment EG.

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)
quad1 = scene.add.quadrilateral(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.point_lies_on(D, major_arc1)
scene.relate.point_lies_on(F, major_arc1)
scene.relate.collinear(D, F, G)
scene.relate.perpendicular(line_DF, line_EG)

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

point_lies_on(D, major_arc1)
point_lies_on(F, major_arc1)
collinear(D, F, G)
perpendicular(line_DF, line_EG)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a trapezoid with vertices A, B, C, D. There is a parallelogram with vertices E, F, G, H. There is a line segment AB. There is a line segment CD. There is a line segment EF. Line AB is parallel to line CD. Line EF is parallel to line CD. Point A lies on line AB. Point B lies on line AB. Point E lies on line EF. Point F lies on line EF. Further, the length of line AB is equal to the length of line CD. Further, the slope of line EF is zero.

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"])

trapezoid1 = scene.add.trapezoid(A, B, C, D)
parallelogram1 = scene.add.parallelogram(E, F, G, H)
line_AB = scene.add.line_segment(A, B)
line_CD = scene.add.line_segment(C, D)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.parallel(line_AB, line_CD)
scene.relate.parallel(line_EF, line_CD)
scene.relate.point_lies_on(A, line_AB)
scene.relate.point_lies_on(B, line_AB)
scene.relate.point_lies_on(E, line_EF)
scene.relate.point_lies_on(F, line_EF)

### Extra relationships

scene.constraint.eq(line_AB.length, line_CD.length)
scene.constraint.eq(line_EF.slope, 0)

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

parallel(line_AB, line_CD)
parallel(line_EF, line_CD)
point_lies_on(A, line_AB)
point_lies_on(B, line_AB)
point_lies_on(E, line_EF)
point_lies_on(F, line_EF)


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a minor arc with center A, start point B, and end point C. There is an isosceles 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. The extensions of line DF and line EG intersect at point H. Line DE is congruent to line FG. Line DF is perpendicular to line DE. Point C lies on the minor arc.

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)
trapezoid1 = scene.add.isosceles_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.line_extensions_intersect_at(line_DF, line_EG, H)
scene.relate.congruent(line_DE, line_FG)
scene.relate.perpendicular(line_DF, line_DE)
scene.relate.point_lies_on(C, arc1)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G, M, N. There is an equilateral triangle ABC. There is a rhomboid DEFG. There is a line segment AM. There is a line segment BN. There is a line segment CD. There is a line segment EF. Line CD is parallel to line EF. Triangle ABC is similar to triangle ABC. Line AM is an altitude of triangle ABC from vertex A. Line BN is a median of triangle ABC from vertex B. Further, length of line AM is equal to length of line BN and length of line CD is less than or equal to length of line EF.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangle_ABC = scene.add.equilateral_triangle(A, B, C)
rhomboid_DEFG = scene.add.rhomboid(D, E, F, G)
line_AM = scene.add.line_segment(A, M)
line_BN = scene.add.line_segment(B, N)
line_CD = scene.add.line_segment(C, D)
line_EF = scene.add.line_segment(E, F)

### relationships

scene.relate.parallel(line_CD, line_EF)
scene.relate.similar(triangle_ABC, triangle_ABC)
scene.relate.is_altitude(line_AM, triangle_ABC, A)
scene.relate.is_median(line_BN, triangle_ABC, B)

### Extra relationships

scene.constraint.eq(line_AM.length, line_BN.length)
scene.constraint.leq(line_CD.length, line_EF.length)

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

parallel(line_CD, line_EF)
similar(triangle_ABC, triangle_ABC)
is_altitude(line_AM, triangle_ABC, A)
is_median(line_BN, triangle_ABC, B)


Diagram description: The diagram contains points A, B, C, D, E, F, O. There is an obtuse triangle ABC. 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 a diameter of the circle. Point A lies on the circle. Line BE is an altitude of triangle ABC from vertex B. Line CF is an altitude of triangle ABC from vertex C.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.obtuse_triangle(A, B, C)
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)

### relationships

scene.relate.is_diameter(line_AD, circleO)
scene.relate.point_lies_on(A, circleO)
scene.relate.is_altitude(line_BE, triangleABC, B)
scene.relate.is_altitude(line_CF, triangleABC, C)

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

is_diameter(line_AD, circleO)
point_lies_on(A, circleO)
is_altitude(line_BE, triangleABC, B)
is_altitude(line_CF, triangleABC, C)


Diagram description: The diagram contains points A, B, C, O, D, E, F, H. There is a scalene triangle ABC. 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 an altitude of triangle ABC from vertex A. Line BE is an altitude of triangle ABC from vertex B. Line CF is an altitude of triangle ABC from vertex C. The extensions of line AD and line BE intersect at point H. The circle with center O is the circumcircle of triangle ABC. Further, the inradius of triangle ABC is 1.5. Further, the length of line BE is less than or equal to the length of line CF.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.scalene_triangle(A, B, C)
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)

### relationships

scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_altitude(line_BE, triangleABC, B)
scene.relate.line_extensions_intersect_at(line_AD, line_BE, H)
scene.relate.is_circumcircle(circleO, triangleABC)

### Extra relationships

scene.constraint.eq(triangleABC.inradius, 1.5)
scene.constraint.leq(line_BE.length, line_CF.length)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, I, J. There is a quadrilateral with vertices A, B, C, D. There is a rectangle with vertices E, F, G, H. There is a line segment AC. There is a line segment BD. There is a line segment EG. There is a line segment FH. The extensions of line AC and line BD intersect at point I. The extensions of line EG and line FH intersect at point J. Line AC is perpendicular to line BD. Line EG is perpendicular to line FH. Further, length of line AC is equal to length of line BD and angle A I B 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"])

quadrilateral1 = scene.add.quadrilateral(A, B, C, D)
rectangle1 = scene.add.rectangle(E, F, G, H)
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.line_extensions_intersect_at(line_AC, line_BD, I)
scene.relate.line_extensions_intersect_at(line_EG, line_FH, J)
scene.relate.perpendicular(line_AC, line_BD)
scene.relate.perpendicular(line_EG, line_FH)

### Extra relationships

scene.constraint.eq(line_AC.length, line_BD.length)
scene.constraint.eq(scene.angle(scene.get_object('A'), scene.get_object('I'), scene.get_object('B')), 90)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G, H. There is a major arc with center A, start point B, and end point C. There is a minor arc with center D, start point E, and end point F. There is a line segment AB. There is a line segment DF. There is a line segment GH. The line segment GH is the perpendicular bisector of line segment AB. The line segment GH is perpendicular to line segment DF. Point G lies on the major arc with center A, start point B, and end point C. Point H is the midpoint of the minor arc with center D, start point E, and end point F.

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)
minor_arc1 = scene.add.minor_arc(D, E, F)
line_AB = scene.add.line_segment(A, B)
line_DF = scene.add.line_segment(D, F)
line_perp = scene.add.line_segment(G, H)

### relationships

scene.relate.perpendicular_bisector_at(line_AB, line_perp)
scene.relate.perpendicular(line_perp, line_DF)
scene.relate.point_lies_on(G, semicircle1)
scene.relate.is_midpoint(H, minor_arc1)

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


Diagram description: The diagram contains points A, B, C, D, E, F, G, H, O. There is an isosceles triangle ABC with AB = BC. 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 intersects line BE at G. Line BE intersects line CF at H. Line AD is an altitude of triangle ABC from vertex A. Line BE is an altitude of triangle ABC from vertex B. Further, the inradius of triangle ABC is 2. Further, the length of line AD is less than or equal to one-third of the perimeter of triangle ABC.

from pygeox import GeoScene

scene = GeoScene()

### objects

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

triangleABC = scene.add.isosceles_triangle(A, B, C)
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)

### relationships

scene.relate.lines_intersect_at(line_AD, line_BE, G)
scene.relate.lines_intersect_at(line_BE, line_CF, H)
scene.relate.is_altitude(line_AD, triangleABC, A)
scene.relate.is_altitude(line_BE, triangleABC, B)

### Extra relationships

scene.constraint.eq(triangleABC.inradius, 2.0)
scene.constraint.leq(line_AD.length, triangleABC.perimeter / 3)

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

lines_intersect_at(line_AD, line_BE, G)
lines_intersect_at(line_BE, line_CF, H)
is_altitude(line_AD, triangleABC, A)
is_altitude(line_BE, triangleABC, B)

scene.constraint.leq(scene.get_object('line_AD').length, scene.get_object('triangleABC').perimeter / 3)