947 dim2::Point<double> t=mycoords[g.target(*e)]; |
947 dim2::Point<double> t=mycoords[g.target(*e)]; |
948 double rn=_nodeSizes[g.target(*e)]*_nodeScale; |
948 double rn=_nodeSizes[g.target(*e)]*_nodeScale; |
949 node_shape=_nodeShapes[g.target(*e)]; |
949 node_shape=_nodeShapes[g.target(*e)]; |
950 dim2::Bezier3 bez(s,mm,mm,t); |
950 dim2::Bezier3 bez(s,mm,mm,t); |
951 double t1=0,t2=1; |
951 double t1=0,t2=1; |
952 for(int i=0;i<INTERPOL_PREC;++i) |
952 for(int ii=0;ii<INTERPOL_PREC;++ii) |
953 if(isInsideNode(bez((t1+t2)/2)-t,rn,node_shape)) t2=(t1+t2)/2; |
953 if(isInsideNode(bez((t1+t2)/2)-t,rn,node_shape)) t2=(t1+t2)/2; |
954 else t1=(t1+t2)/2; |
954 else t1=(t1+t2)/2; |
955 dim2::Point<double> apoint=bez((t1+t2)/2); |
955 dim2::Point<double> apoint=bez((t1+t2)/2); |
956 rn = _arrowLength+_edgeWidths[*e]*_edgeWidthScale; |
956 rn = _arrowLength+_edgeWidths[*e]*_edgeWidthScale; |
957 rn*=rn; |
957 rn*=rn; |
958 t2=(t1+t2)/2;t1=0; |
958 t2=(t1+t2)/2;t1=0; |
959 for(int i=0;i<INTERPOL_PREC;++i) |
959 for(int ii=0;ii<INTERPOL_PREC;++ii) |
960 if((bez((t1+t2)/2)-apoint).normSquare()>rn) t1=(t1+t2)/2; |
960 if((bez((t1+t2)/2)-apoint).normSquare()>rn) t1=(t1+t2)/2; |
961 else t2=(t1+t2)/2; |
961 else t2=(t1+t2)/2; |
962 dim2::Point<double> linend=bez((t1+t2)/2); |
962 dim2::Point<double> linend=bez((t1+t2)/2); |
963 bez=bez.before((t1+t2)/2); |
963 bez=bez.before((t1+t2)/2); |
964 // rn=_nodeSizes[g.source(*e)]*_nodeScale; |
964 // rn=_nodeSizes[g.source(*e)]*_nodeScale; |