Circum circles of subtriangles

From JSXGraph Wiki

Let ABC be a triangle and let the incircle intersect [math]\displaystyle{ BC }[/math], [math]\displaystyle{ CA }[/math], and [math]\displaystyle{ AB }[/math] at [math]\displaystyle{ A' }[/math], [math]\displaystyle{ B' }[/math], and [math]\displaystyle{ C' }[/math], respectively.

Let the circumcircles of [math]\displaystyle{ AB'C' }[/math], [math]\displaystyle{ A'BC' }[/math], and [math]\displaystyle{ A'B'C }[/math] intersect the circumcircle of [math]\displaystyle{ ABC }[/math] (apart from [math]\displaystyle{ A }[/math], [math]\displaystyle{ B }[/math], and [math]\displaystyle{ C }[/math]) at [math]\displaystyle{ A'' }[/math], [math]\displaystyle{ B'' }[/math], and [math]\displaystyle{ C'' }[/math], respectively.

Then [math]\displaystyle{ A'A'' }[/math], [math]\displaystyle{ B'B'' }[/math], and [math]\displaystyle{ C'C'' }[/math] meet in one point, [math]\displaystyle{ P }[/math].

The underlying JavaScript code

brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-1,4,12,-4], keepaspectratio:true});
p1 = brd.create('point', [0.5,-1.5] , {name:'A',fillColor:'red',strokeColor:'red'});
p2 = brd.create('point', [7.5,0.5] , {name:'B',fillColor:'red',strokeColor:'red'});
p3 = brd.create('point', [2,3] , {name:'C',fillColor:'red',strokeColor:'red'});
    
b1 = brd.create('segment',['A','B'],{name:''});
b2 = brd.create('segment',['A','C'],{name:''});
b3 = brd.create('segment',['C','B'],{name:''});
    
c1 = brd.create('circumcircle',['A','B','C'],{name:'', point: {visible: false}});
c1.setProperty('strokeColor:#AAAAAA'); 
    
l1 = brd.create('bisector',['B','A','C'],{name:'',visible:false}); // alpha
l2 = brd.create('bisector',['C','B','A'],{name:'',visible:false}); // beta
    
i1 = brd.create('intersection',[l1,l2,0],{name:'',visible:false});
pp1 = brd.create('perpendicularpoint',[i1,b1],{name:"C'",fillColor:'blue'});
pp2 = brd.create('perpendicularpoint',[i1,b2],{name:"B'",fillColor:'blue'});
pp3 = brd.create('perpendicularpoint',[i1,b3],{name:"A'",fillColor:'blue'});
    
c2 = brd.create('circumcircle',[pp1,pp2,pp3],{name:'', strokeColor: '#3CB371', point: {visible: false}});
c3 = brd.create('circumcircle',[p3,pp2,pp3],{name:'', strokeColor: '#FF8C00', point: {visible: false}});
c4 = brd.create('circumcircle',[p2,pp1,pp3],{name:'', strokeColor: '#FF8C00', point: {visible: false}});
c5 = brd.create('circumcircle',[p1,pp2,pp1],{name:'', strokeColor: '#FF8C00', point: {visible: false}});
    
i2 = brd.create('otherintersection',[c3,c1,p3],{name:"C''",fillColor:'blue'});
i3 = brd.create('otherintersection',[c4,c1,p2],{name:"B''",fillColor:'blue'});
i4 = brd.create('otherintersection',[c5,c1,p1],{name:"A''",fillColor:'blue'}); 

ll1 = brd.create('segment',[i2,pp1],{name:'',strokeColor:'#FF6347'});
ll2 = brd.create('segment',[i3,pp2],{name:'',strokeColor:'#FF6347'});
ll3 = brd.create('segment',[i4,pp3],{name:'',strokeColor:'#FF6347'});
    
i5 = brd.create('intersection',[ll1,ll2,0],{name:"P",fillColor:'#9932CC',strokeColor:'#9932CC'});
brd.update();