trasf[{x_,y_}]:={x/(x^2+y^2),y/(x^2+y^2)};

medeqpar[{x1_,y1_},{x2_,y2_}]:=If[y1==y2,{(x1+x2)/2,y},{x,Expand[(2x*(x2-x1)+x1^2-x2^2+y1^2-y2^2)/(2(y1-y2))]}];

medeqpart[{x1_,y1_},{x2_,y2_}]:={x,Expand[(2x*(x2-x1)+x1^2-x2^2+y1^2-y2^2)/(2(y1-y2))]}

rettacrt[p1_,p2_]:=Block[{med=medeqpart[p1,p2],medt=medeqpart[p2,trasf[p2]],centro,raggio},
centro=med /.Solve[med==medt][[1]];
raggio=Norm[centro-p1];
Return[{centro,raggio}]
]

distip[{x1_,y1_},{x2_,y2_}]:=1+2((x1-x2)^2+(y1-y2)^2)/((1-x2^2-y2^2)(1-x1^2-y1^2));

(* disegna triangolo simmetrico rispetto al lato (Subscript[P, 1])(Subscript[P, 2]) *)

ptsim[{p1_,p2_,p3_}]:=Select[Map[Map[#[[2]]&,#]&,
NSolve[{distip[{x,y},p1]==distip[p3,p1],distip[{x,y},p2]==distip[p3,p2]},{x,y}]],Norm[#-p3]>10^(-3)&][[1]]

rettacr[p1_,p2_]:=Block[{med=medeqpar[p1,p2],medt=medeqpar[p2,trasf[p2]],centro,raggio},
centro=med /.Solve[med==medt][[1]];
raggio=Norm[centro-p1];
Return[{centro,raggio}]
];

rettacrarc[p1_,p2_]:=Block[{med=medeqpar[p1,p2],medt=medeqpar[p2,trasf[p2]],centro,raggio,t1,t2,ang},
centro=med /.Solve[med==medt][[1]];
raggio=Norm[centro-p1];
t1=Arg[Apply[Complex,p1-centro]];
t2=Arg[Apply[Complex,p2-centro]];
ang={Min[t1,t2],Max[t1,t2]};
If[Abs[t1-t2]>Pi,ang=ang-{0,2Pi}];
Return[{centro,raggio,ang}]
];

lato[p1_,p2_]:=
Graphics[{Apply[Circle,rettacrarc[p1,p2]],{Red,PointSize[.01],Point[{p1,p2}]}}];

latop[p1_,p2_]:=
Graphics[{Apply[Circle,rettacr[p1,p2]],{Red,PointSize[.01],Point[{p1,p2}]}}];

triaip[p1_,p2_,p3_]:=Show[{lato[p1,p2],lato[p2,p3],lato[p1,p3]}]

triaipop[p1_,p2_,p3_]:=Show[{latop[p1,p2],latop[p2,p3],latop[p1,p3]}]

polip[ls_]:=Append[Table[lato[ls[[k]],ls[[k+1]]],{k,1,Length[ls]-1}],lato[ls[[1]],ls[[-1]]]]

retictr[r_,t_,iter_]:=Module[{iniz=Table[{r*Cos[2k*Pi/3+t],r*Sin[2k*Pi/3+t]},{k,1,3}],lstria,k,h,j,sim,lsv,lst,tria},
lstria={iniz};
For[k=1,k≤3,k++,
lsv=RotateLeft[iniz,k];
sim=ptsim[lsv];
AppendTo[lstria,Append[Take[lsv,2],sim]];
];
For[j=1,j≤iter-1,j++,
lst={};
For[k=1,k≤3*2^(j-1),k++,
For[h=1,h≤2,h++,
lsv=RotateLeft[lstria[[-k]],h];
sim=ptsim[lsv];
AppendTo[lst,Append[Take[lsv,2],sim]];
];
];
lstria=Join[lstria,lst];
];
Show[{Graphics[{Blue,Circle[{0,0},1]},AspectRatio->Automatic],Map[Apply[triaip,#]&,lstria]},PlotRange->{{-1.1,1.1},{-1.1,1.1}}]]

retictr[.3,Pi/2,0]

Manipulate[retictr[r,Pi/2,it],{{r,.3},0,.99,.0001},{{it,3},1,20,1}]