| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1281 人关注过本帖, 1 人收藏
标题:3点排序问题
取消只看楼主 加入收藏
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
结帖率:0
收藏(1)
 问题点数:0 回复次数:5 
3点排序问题
已知平面上3个点的坐标分别是:O(0x,Oy),P(Px,Py),Q(Qx,Qy)
目标是按横坐标由小到大的顺序排列这3个点 A<B<C
我的思路是:
If Ox<Px
    if Ox<Qx
       Ax=Ox
       Ay=Oy
        if Px<Qx
           Bx=Px
           By=Py
           Cx=Qx
           Cy=Qy
        else
           Bx=Qx
           By=Qy
           Cx=Px
           Cy=Py
      else  
           Ax=Qx
           Ay=Qy
           Bx=Ox
           By=Oy
           Cx=Px
           Cy=Py
else if Px>Qx       (从这里开始就觉得嵌套怪怪的……
      Ax=Qx
      Ay=Qy
      Bx=Px
      By=Py
      Cx=Ox
      Cy=Oy
      else if
       .............. 混乱了……
  
请大家指点一下迷津~~~~~~
         










搜索更多相关主题的帖子: 平面 
2012-06-06 14:38
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 2楼 sdta
嘿嘿~ 我在网上找到了有关do case endcase的用法 不过一时之间有点转不过弯来...
但是想到了另一个解决上面问题的思路~

Cx=max(Ox,Px,Qx)
if Cx==Ox       (判断两个数是否相等是用“==”吗?还是其它符号呢?)
   Cy=Oy
else
   if Cx==Px
      Cy=Py
else
    if Cx==Qx
       Cy=Qy
endif
&&这样就可以将横坐标最大的那个点与它的纵坐标匹配了~   不过想法虽是如此 但是计算机也是这样想的吗???我先去实践一下~~~

Ax=min(Ox,Px,Qx)
  找横坐标最小点的纵坐标方法同上
Bx=Ox+Px+Qx-Ax-Cx
  同上
2012-06-06 15:06
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 2楼 sdta
图片附件: 游客没有浏览图片的权限,请 登录注册

 SOS~~~~

我明白了!  VPF的If endif 的用法跟Cpp有点不同哈~~~

[ 本帖最后由 FUNFUNHO 于 2012-6-6 15:22 编辑 ]
2012-06-06 15:16
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 5楼 sdta
嗯嗯!!!
非常感谢!~
因为目前特别想将自己的一个构想实现,所以学得很凌乱……

2012-06-06 16:15
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 7楼 qjbzjp
非常感谢您~
我的做排序最终要的一点不是单纯地排出3点横坐标的大小
而是要将三个点(二维坐标)按照横坐标从小到大的顺序排列
简单的说 当横坐标排出来了 要知道它们分别与原来的哪个纵坐标配对
我目前的做法如下:
IF  MAX(a1,c1,e1)== a1
     Cx=a1
     Cy=b1
     ENDIF
   
IF MAX(a1,c1,e1)==c1 AND c1!=a1
    Cx=c1
    Cy=d1
    ENDIF
   
 IF MAX(a1,c1,e1)==e1 AND e1!=a1 AND e1!=c1
     Cx=e1
     Cy=f1
     ENDIF
     
                 && to find the smallest X and match the point
 IF  Min(a1,c1,e1)== a1
     Ax=a1
     Ay=b1
     ENDIF
  
IF Min(a1,c1,e1)==c1 AND c1!=a1
    Ax=c1
    Ay=d1
    ENDIF
   
 IF Min(a1,c1,e1)==e1 AND e1!=a1 AND e1!=c1
     Ax=e1
     Ay=f1
     ENDIF
     
                  && to find the middle one
 IF  a1+c1+e1-Ax-Cx== a1
     Bx=a1
     B=b1
     ENDIF
  
IF a1+c1+e1-Ax-Cx==c1
    Bx=c1
    B=d1
    ENDIF
   
 IF a1+c1+e1-Ax-Cx==e1
     Bx=e1
     B=f1
     ENDIF
我用了最笨的办法
对于横坐标相同的情况 目前还不知道我这样处理是否还存在问题...

有任何建议 欢迎您指点~~~

2012-06-10 00:32
FUNFUNHO
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-6-5
收藏
得分:0 
回复 8楼 TonyDeng
我又没有嫌三点排序点的数量少了……
那正常情况下作图应该如下图所示 三个小圈里的那个圈应该在小圈中
图片附件: 游客没有浏览图片的权限,请 登录注册

那为何会出现下面的情况啊?
图片附件: 游客没有浏览图片的权限,请 登录注册

那个大一点的不在横坐标上的圆圈 显然不该在三个小点组成的三角形外啊!
why???!!!







2012-06-10 00:38
快速回复:3点排序问题
数据加载中...
 
   



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

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