File:Catalan trisection.svg

From testwiki
Jump to navigation Jump to search
    Original file (SVG file, nominally 700 × 750 pixels, file size: 1 KB)

    This file is from Wikimedia Commons and may be used by other projects. The description on its file description page there is shown below.

    Summary

    Description
    English: Eugéne Catalan's trisection of the angle, as redrawn from Catalan 1885. The blue curve is a parabola, and the red curve is its negative pedal curve, the Tschirnhausen cubic. To trisect a given angle, place the angle at the focus F of the parabola, with one side along line FA to the apex of the parabola, and extend the other side to cross the Tschirnhausen cubic at point D; thus, the angle to be trisected is angle AFD. Extend a tangent line to the Tschirnhausen cubic at D, crossing the parabola at point B. By the negative pedal property, DBF is a right angle. Then Catalan proves, using the remaining labeled points as auxiliary points in the proof, that angle BFD is one third of angle AFD.
    Date
    Source Own work based on: Catalan, Eugène (1885). "Extrait d'une lettre de M. Catalan à propos d'une trisectrice". Journal de mathématiques spéciales à l'usage des candidats aux écoles polytechnique, normale et centrale 4: 229–233. DOI:2268/196510.
    Author David Eppstein
    SVG development
    InfoField
     The SVG code is valid.
     This vector image was created with Python.
      This file uses embedded text that can be easily translated using a text editor.

    Source code

    from PADS import SVG
    import sys
    
    scale = 1000
    rot = -0.5 + 0.75**0.5*1j
    p1 = 12j*scale
    p2 = 5*scale
    p3 = (5+13j)*scale
    p4 = 1j*scale
    q1 = (p1+p2)/2
    q2 = (p2+p3)/2
    q3 = (p3+p4)/2
    
    o = (-3.1-6.125j)*scale
    bbox = (0.7+0.75j)*scale
    
    svg = SVG.SVG(bbox,sys.stdout)
    
    def pp(point):
        return "%s %s" % ((point+o).real,(point+o).imag)
    
    svg.group(style={"fill":"none", "stroke-width":"2"})
    svg.element('path d="'+" ".join(["M",pp(q1),"Q",pp(q2),pp(q3)])+'"',
                stroke=SVG.colors.blue)
    
    
    svg.element('path d="'+" ".join(["M",pp(p1),"C",pp(p2),pp(p3),pp(p4)])+'"',
                stroke=SVG.colors.red)
    svg.ungroup()
    
    def blossom(points,param):
        while len(points) > 1:
            points = [param*points[i]+(1-param)*points[i+1]
                      for i in range(len(points)-1)]
        return points[0] 
    
    apex = blossom([q1,q2,q3],0.5)
    p = blossom([q1,q2,q3],0.635)
    q = blossom([p1,p2,p3,p4],0.635)
    
    def xintercept(a,b):
        """Point on line ab intersecting x-axis"""
        lo = -2
        hi = 2
        for i in range(50):
            mid = (lo+hi)/2
            midpoint = blossom([a,b],mid)
            if midpoint.imag > apex.imag:
                hi = mid
            else:
                lo = mid
        return midpoint
    
    focus = xintercept(p,p + 1j*(q-p))
    r = focus+q-p
    ctr = (focus+q)/2
    extra = xintercept(r,p)
    
    svg.group(fill=SVG.colors.none,stroke=SVG.colors.black)
    for (a,b) in [(focus,p),(focus,q),(focus,r),(p,q),(p,r),(q,r),((p1+p4)/2,(p2+p3)/2)]:
        svg.segment(a+o,b+o)
    svg.ungroup()
    
    svg.group(fill=SVG.colors.yellow,stroke=SVG.colors.black)
    for point in [focus,apex,p,q,r,ctr,extra]:
        svg.circle(point+o,4)
    svg.ungroup()
    
    svg.group(style={"font-family":"Times,serif", "font-style":"italic", "font-size":"30"})
    svg.text("A",apex+o+5+24j)
    svg.text("B",p+o+5-5j)
    svg.text("C",r+o-27+24j)
    svg.text("D",q+o-24-5j)
    svg.text("E",extra+o+5+24j)
    svg.text("F",focus+o+5+24j)
    svg.text("G",ctr+o-12-12j)
    svg.ungroup()
    
    svg.close()
    

    Licensing

    David Eppstein, the copyright holder of this work, hereby publishes it under the following license:
    Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
    The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

    Captions

    Catalan's trisection of the angle

    Items portrayed in this file

    depicts

    5 October 2025

    1,034 byte

    image/svg+xml

    6845c0ef229f750425a34fc10d87c0714db546a9

    File history

    Click on a date/time to view the file as it appeared at that time.

    Date/TimeThumbnailDimensionsUserComment
    current22:20, 5 October 2025Thumbnail for version as of 22:20, 5 October 2025700 × 750 (1 KB)wikimediacommons>David EppsteinUploaded own work with UploadWizard

    There are no pages that use this file.