 					seeds_pointer[current_seed * 3 + 1],
 					seeds_pointer[current_seed * 3 + 2] };
 
-				test_dis[0] = current_seed_pos.x;
-				test_dis[1] = current_seed_pos.y;
-				test_dis[2] = current_seed_pos.z;
+				//test_dis[0] = current_seed_pos.x;
+				//test_dis[1] = current_seed_pos.y;
+				//test_dis[2] = current_seed_pos.z;
 			}
 		}
 		
-
+		__syncthreads();
 		//pass the data to test data
-		if (tid == 0)
+		if (tid == 180)
 		{
-			test_centriod[0] = centriod.x;
-			test_centriod[1] = centriod.y;
-			test_centriod[2] = centriod.z;
+			test_centriod[0] = v1.x;
+			test_centriod[1] = v1.y;
+			test_centriod[2] = v1.z;
+			test_centriod[3] = v2.x;
+			test_centriod[4] = v2.y;
+			test_centriod[5] = v2.z;
+			test_centriod[6] = v3.x;
+			test_centriod[7] = v3.y;
+			test_centriod[8] = v3.z;
 
 			for (int i = 0; i < 20; ++i)
 			{
 				test_index[i] = nearest_points[i];
+			}
+
+			for (int i = 0; i < seeds_nb * 4; ++i)
+			{
+				test_seeds[i] = SeedsInformation[i];
+			}
+
+			for (int i = 0; i < seeds_nb; ++i)
+			{
+				test_polygon_nb[i] = SeedsPolygon_nb[i];
 			}
 		}
 

			//now we get the clipped polygon stored in "polygon"
			//take care of the sychonize
			//change the polygon data into "weight" and "position"
			double weight;
			double3 position;
			

							double* mesh_vertex,   int mesh_vertex_nb,
							int* mesh_facet,    int mesh_facet_nb,
							double* test_dis, double* test_centriod,
							int* test_index, double* test_seeds,
							int* test_polygon_nb)
{
	int tid = blockIdx.x * blockDim.x + threadIdx.x;
	
