我的思路是把arrayList 数组里面的数据 每三个做比较 比如比较第1,2,3点如果中间的点到两端的点形成的直线的距离大与1的话 就把第2这个点留下来 如果<1的话就删掉 然后比较原来数组的第1,3,4点 依次类推

解决方案 »

  1.   

    用while(arrayList.Count>0),不应该用for
      

  2.   

    我写了语句不行啊
    int j=1;
    while(array1.Count>3)
    {
     p1=(Point)array1[j-1];
     p2=(Point)array1[j];
     p3=(Point)array1[j+1]; 
     d0=System.Math.Sqrt((p3.Y-p1.Y)*(p3.Y-p1.Y)+(p1.X-p3.X)*(p1.X-p3.X));
     d1=((p3.Y-p1.Y)*p2.X+(p1.X-p3.X)*p2.Y+p1.Y*p3.X-p3.Y*p1.X);
     d=System.Math.Abs(d1/d0);//点到直线的距离
    if(d>1)
    {
     j++;
    }
    else
    {
                      array1.Remove(p2); 
    }}
    这样吗 运行有错
      

  3.   

    就是想把 arrayList数组里面相临三点之间中间点到其他两点决定的直线的距离小于1的删除其实我是想把 arrayList里面的数据简化一下 把一些多余的点去掉
      

  4.   

    for(int j=1;j<arrayList.Count-2;j++)
    如果arrayList=1;
    如果arrayList=2;
    怎么办,应该进行维数的判断
      

  5.   

    我数组里面保存的x,y坐标啊
    不用判断吧 
    我、这个程序 因为数组时刻在删除一些不需要的点 然后arrayList.Count时刻在变 我想知道 我用
    for(int j=1;j<arrayList.Count-1;j++)还可以吗 觉得有点奇怪