def createScene(self): scene = Scene() triangle = scene.nondegenerate_triangle(labels=('A', 'B', 'C')) A, B, C = triangle.points altitudeA = scene.altitude(triangle, A) altitudeB = scene.altitude(triangle, B) A1 = altitudeA.intersection_point(B.line_through(C), label='A1') B1 = altitudeB.intersection_point(A.line_through(C), label='B1') C.angle(A, B).is_acute_constraint() return scene
from sandbox import Scene from sandbox.property import PointOnLineProperty from sandbox.util import LazyComment from visualiser import visualise scene = Scene() triangle = scene.nondegenerate_triangle(labels=('A', 'B', 'C')) A, B, C = triangle.points altitudeA = scene.altitude(triangle, A) altitudeB = scene.altitude(triangle, B) altitudeC = scene.altitude(triangle, C) D = altitudeA.intersection_point(B.line_through(C), label='D') E = altitudeB.intersection_point(A.line_through(C), label='E') F = altitudeC.intersection_point(A.line_through(B), label='F') H = altitudeA.intersection_point(altitudeB, label='H') #A.angle(B, C).is_obtuse_constraint() A.angle(B, C).is_acute_constraint(comment='assumption') B.angle(A, C).is_acute_constraint(comment='assumption') C.angle(A, B).is_acute_constraint(comment='assumption') prop = PointOnLineProperty(F, C.segment(H), True) visualise(scene, prop, title='Altitudes of (acute) triangle', task=[ LazyComment('%s is a non-degenerate triangle', triangle), LazyComment('%s is an altitude of %s', A.segment(D), triangle), LazyComment('%s is an altitude of %s', B.segment(E), triangle),