Circle inversion

From JSXGraph Wiki

The point [math]\displaystyle{ P' }[/math] is the result of a circle inversion of [math]\displaystyle{ P }[/math] on circle [math]\displaystyle{ c }[/math] (black circle line).

The underlying JavaScript code

var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-5,5,5,-5]});
var m = brd.create('point',[0.5,0.3],{name:'M'});
var b = brd.create('point',[3,0]);
var c = brd.create('circle',[m,b],{strokeColor:'black',name:'c'});
var m1 = brd.create('point',[-4,2],{name:'M_1'});
var b1 = brd.create('point',[-4,3],{name:'C_1'});
var c1 = brd.create('circle',[m1,b1]);
var p = brd.create('glider',[-4,1,c1],{name:'P [drag me]'});

var t = brd.create('polar', [c,p], {name:'polar', withLabel:true, strokeColor:'gray', dash:2}); 
var l = brd.create('line', [m,p], {name:'', withLabel:false, strokeColor:'gray', dash:2}); 
var s = brd.create('intersection', [l,t,0], {name:"P'", withLabel:true, trace:true});