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')
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
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
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
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')
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>'
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)