|
@@ -282,7 +282,6 @@ static std::vector<base_path> init_path(std::vector<base_path> & ret,vertex_list
|
|
{
|
|
{
|
|
point p_0=point::min(p0,p1);
|
|
point p_0=point::min(p0,p1);
|
|
point p_1=point::max(p0,p1);
|
|
point p_1=point::max(p0,p1);
|
|
-
|
|
|
|
int p00=v.add(p_0,0,0);
|
|
int p00=v.add(p_0,0,0);
|
|
int p10=v.add(p_1,0,0);
|
|
int p10=v.add(p_1,0,0);
|
|
|
|
|
|
@@ -324,18 +323,14 @@ static std::vector<base_path> init_path(std::vector<base_path> & ret,vertex_list
|
|
line_v lj=ret[j].as_line(v);
|
|
line_v lj=ret[j].as_line(v);
|
|
if(!lj.is_same(li,1)) //li线段两个点在lj直线上
|
|
if(!lj.is_same(li,1)) //li线段两个点在lj直线上
|
|
continue;
|
|
continue;
|
|
-
|
|
|
|
line_v ij=lj.projection(li);//重叠
|
|
line_v ij=lj.projection(li);//重叠
|
|
|
|
|
|
- if(ij.empty())
|
|
|
|
- continue;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ if(ij.empty()&&ij[0].empty()&&ij[0].empty())
|
|
|
|
+ continue;
|
|
|
|
|
|
point p0=li.as_line().projection(v[ret[j][0]]);
|
|
point p0=li.as_line().projection(v[ret[j][0]]);
|
|
point p1=li.as_line().projection(v[ret[j][1]]);
|
|
point p1=li.as_line().projection(v[ret[j][1]]);
|
|
|
|
|
|
-
|
|
|
|
p0=point::min(p0,v[ret[i][0]]);
|
|
p0=point::min(p0,v[ret[i][0]]);
|
|
p1=point::max(p1,v[ret[i][1]]);
|
|
p1=point::max(p1,v[ret[i][1]]);
|
|
|
|
|
|
@@ -408,17 +403,17 @@ static std::vector<base_path> init_path(std::vector<base_path> & ret,vertex_list
|
|
point cr=ret[i].cross(v,ret[j]);
|
|
point cr=ret[i].cross(v,ret[j]);
|
|
if(cr.empty())
|
|
if(cr.empty())
|
|
continue;
|
|
continue;
|
|
-
|
|
|
|
|
|
+
|
|
if(in_no_cross(cr))
|
|
if(in_no_cross(cr))
|
|
continue;
|
|
continue;
|
|
-
|
|
|
|
|
|
+
|
|
double arg=fabs(ret[i].as_line(v).arg()-ret[j].as_line(v).arg());
|
|
double arg=fabs(ret[i].as_line(v).arg()-ret[j].as_line(v).arg());
|
|
while(arg>PI/2)
|
|
while(arg>PI/2)
|
|
- arg-=PI/2;
|
|
|
|
-
|
|
|
|
|
|
+ arg=PI-arg;
|
|
|
|
+
|
|
if(arg/PI*180<5)//相交小于5度,不切分已有路径
|
|
if(arg/PI*180<5)//相交小于5度,不切分已有路径
|
|
continue;
|
|
continue;
|
|
-
|
|
|
|
|
|
+
|
|
int id=v.add(cr,arg,v[ret[i][0]].sid0,v[ret[j][0]].sid0);
|
|
int id=v.add(cr,arg,v[ret[i][0]].sid0,v[ret[j][0]].sid0);
|
|
p0[i].push_back(id);
|
|
p0[i].push_back(id);
|
|
p0[j].push_back(id);
|
|
p0[j].push_back(id);
|