示例#1
0
 def napoleonic(A: Scene.Point, B: Scene.Point, C: Scene.Point):
     c0 = A.circle_through(B)
     c1 = B.circle_through(A)
     line = A.line_through(B, layer='auxiliary')
     V = c0.intersection_point(c1, label=C.label + '1')
     equilateral = Scene.Triangle(A, B, V)
     V.opposite_side_constraint(C, line)
     scene.centroid_point(equilateral, label=C.label + '2')
示例#2
0
    def createScene(self):
        scene = Scene()

        triangle = scene.nondegenerate_triangle(labels=('A', 'B', 'C'))
        triangle2 = Scene.Triangle(
            *[side.middle_point() for side in triangle.sides])
        D = scene.circumcentre_point(triangle, label='D')
        E = scene.orthocentre_point(triangle2, label='E')

        return scene
示例#3
0
    def createScene(self):
        scene = Scene()

        triangle = scene.nondegenerate_triangle(labels=('A', 'B', 'C'))
        A, B, C = triangle.points
        A.segment(B).perpendicular_constraint(A.segment(C))
        I = scene.incentre_point(triangle, label='I')
        J = scene.orthocentre_point(Scene.Triangle(A, B, I), label='J')

        return scene
示例#4
0
    def createScene(self):
        scene = Scene()

        triangle = scene.nondegenerate_triangle(labels=('A', 'B', 'C'))
        A, B, C = triangle.points
        A.segment(B).perpendicular_constraint(A.segment(C))
        I = scene.incentre_point(triangle, label='I')
        J = scene.orthocentre_point(Scene.Triangle(A, B, I), label='J')

        # Additional constructions
        D = A.line_through(B).intersection_point(I.line_through(J), label='D')
        E = A.line_through(I).intersection_point(B.line_through(J), label='E')

        return scene
示例#5
0
def napoleonic(A, B, C):
    circleAB = A.circle_through(B, layer='invisible')
    circleBA = B.circle_through(A, layer='invisible')
    V = circleAB.intersection_point(circleBA, label=C.label + '_1')
    equilateral = Scene.Triangle(A, B, V)
    A.scene.equilateral_constraint(equilateral,
                                   comment=LazyComment(
                                       'Given: %s is equilateral',
                                       equilateral))
    line = A.line_through(B, layer='auxiliary')
    V.opposite_side_constraint(C,
                               line,
                               comment=LazyComment(
                                   'Given: %s is outward of %s', V, triangle))
    D = scene.circumcentre_point(equilateral, label=C.label + '_2')
示例#6
0
from sandbox import Scene
from sandbox.property import ProportionalLengthsProperty
from sandbox.util import LazyComment

from visualiser import visualise

scene = Scene()

A, D, C, B = scene.square('A', 'D', 'C', 'B')
A.x = 0
A.y = 0
D.x = 1
D.y = 0
I = scene.incentre_point(Scene.Triangle(A, B, C), label='I')
side = A.line_through(C)
foot = scene.perpendicular_foot_point(I, side, layer='auxiliary')
I.circle_through(foot)

prop = ProportionalLengthsProperty(B.segment(C), D.segment(I), 1)

visualise(
    scene,
    prop,
    title='Onestep Problem 1',
    task=[
        LazyComment('%s is a square', Scene.Polygon(A, B, C, D)),
        LazyComment('%s is the incentre of %s', I, Scene.Triangle(A, B, C)),
        LazyComment('Prove, that |%s| = |%s|', D.segment(I), B.segment(C))
    ],
    reference=
    'Problem 1 from <a href="http://www.stanleyrabinowitz.com/download/onestepresults.pdf">onestep results list</a> by <a href="https://www.facebook.com/stanley.rabinowitz">Stanley Rabinowitz</a>'
示例#7
0
from runner import run_sample
from sandbox import Scene
from sandbox.property import ProportionalLengthsProperty

scene = Scene()

A, B, C, D = scene.square('A', 'B', 'C', 'D', non_degenerate=True)
I = scene.incentre_point(Scene.Triangle(A, B, C), label='I')

prop = ProportionalLengthsProperty(B.segment(C), D.segment(I), 1)

run_sample(scene, prop)