Przeglądaj źródła

Merge branch 'master' of liulei/ya-serv into master

zzj 5 lat temu
rodzic
commit
3aa9439302
2 zmienionych plików z 7 dodań i 13 usunięć
  1. 0 1
      card.h
  2. 7 12
      card_path.cpp

+ 0 - 1
card.h

@@ -2,7 +2,6 @@
 #define _CARD_HPP_
 #include <thread>
 #include <ev++.h>
-
 #include "card_base.h"
 #include "write-copy.h"
 extern int three_rates_flag;

+ 7 - 12
card_path.cpp

@@ -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_1=point::max(p0,p1);
-
 				int p00=v.add(p_0,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);
 			if(!lj.is_same(li,1)) //li线段两个点在lj直线上
 				continue;
-
 			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 p1=li.as_line().projection(v[ret[j][1]]);
 
-
 			p0=point::min(p0,v[ret[i][0]]);
 			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]);
 			if(cr.empty())
 				continue;
-
+			
 			if(in_no_cross(cr))
 				continue;
-
+			
 			double arg=fabs(ret[i].as_line(v).arg()-ret[j].as_line(v).arg());
 			while(arg>PI/2) 
-				arg-=PI/2;
-
+				arg=PI-arg;
+			
 			if(arg/PI*180<5)//相交小于5度,不切分已有路径
 				continue;
-
+			
 			int id=v.add(cr,arg,v[ret[i][0]].sid0,v[ret[j][0]].sid0);
 			p0[i].push_back(id);
 			p0[j].push_back(id);