| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 279 人关注过本帖
标题:请高手帮忙!!!有关数据处理的问题
只看楼主 加入收藏
keke3789
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-24
收藏
 问题点数:0 回复次数:0 
请高手帮忙!!!有关数据处理的问题
现在要编一个程序,情况是这样的:现在有的是一堆点构成一个点簇,但这个点簇可能由连起来可能是由几条线段组成的,现在要用迭代递归法把它们细分成更小的点簇。现在所有的点存在一个CPoint的向量容器vector中
  步骤:(1)先把起点A和终点B连起来
        (2)求出所有点到这条线段的距离,找出最大距离的那个点也就是离线段最远的那个点记为C;
        (3) 如果C到AB的距离大于一个阈值,则形成AC,CB;(否则的话就是表示这些点都是在一条线段上的了)
        (4)分别对每一部分重复(2)和(3)的过程,直到分好为止;阈值固定
  我才开始学,自己编了个可是觉得有点怪,不太懂怎么实现这个迭代?
  各位大侠,下面这段程序可以吗?会不会有逻辑上的错误啊?(编译的话没问题了,就是有几个warning)我的意思是第一次调用merge会不会对第二次调用merge产生什么影响?
BOOL merge( VecPoint &m_Point )
{ VecPoint::iterator it;//VecPoint是存放CPoint的向量容器
  VecPoint::iterator begin=m_Point.begin();
  VecPoint::iterator end=m_Point.end();
  VecPoint m_tempoint;

   
  int max; //返回的距离最大值点的位置
  int i=0,j=0;
  double *distoline;
  distoline=new double((int)m_Point.size());
  double threshold1=0.01;
  BOOL RE;


  for(it=begin;it!=end;it++)
  {   
   distoline[j]=GetNearestDistance(*begin,*(end--),*it);//求各点到线段的距离
   j++;
  }
  max=maxdis(distoline,(int)m_Point.size());
  if(distoline[max]>threshold1)
  { for(it=begin;i<=max;it++,i++)
     {  m_tempoint.clear();
        m_tempoint.push_back(*it);
  
     }
    RE=merge(m_tempoint);
    m_Point.erase(begin,it);
   if(RE&&merge(m_Point))==0)
   {   
     return 0;
    }

 }
 else  
   { m_ArrayLinePoint.push_back(m_Point);
     delete []distoline;
     m_tempoint.clear();
     m_Point.clear();
  
    return true;
   }
   
}
搜索更多相关主题的帖子: 数据处理 
2010-04-24 14:08
快速回复:请高手帮忙!!!有关数据处理的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051099 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved