X                 Y
-176.3501         -52.60973
-115.5118         -52.9807差别不多是一条Y坐标不变,X坐标右移的直线,
想得好的结果如下:
X
-176.3501
-175.3501
-174.3501
-173.3501
.........
-115.5118也是是说每次坐标-1x                y
-175.9791 -52.60973
-5.335123 -54.46456
-5.706088 -42.59367直线类似如下:
                           |
                           |
----------------------------该如何处理呢?

解决方案 »

  1.   

    如果只是这样,只需要计算直线距离就可以了,这样会比较简单。
    算法:任意两点间之间,先经过X横向移动,再经过Y纵向移动。
    1. 确定你的坐标移动的粒度,根据你的描述应该是1(step),也就是说每次最小移动1个粒度(最后一步排除,小于1的计1);
    2. 先计算X横向移动经过的点;int((X2-X1)/step) + (X2-X1)=0?0:1计算出横向移动的步数
    3. 再计算Y纵向移动经过的点;int((Y2-Y1)/step) + (Y2-Y1)=0?0:1计算出纵向移动的步数这样,就很空间得知所经过的坐标。当然你也可以通过循环计算得到。注意,计算时符点数的运算要考虑精度。
      

  2.   

    我不知道我的理解是否有误,但是:
    2点可以确定一条直线,也就是说可以用你2点坐标求出直线方程,然后用方程可以求出任意的X,Y了啊...这个高中还是初中的了.我回忆下,利用斜率相等求直线方程
    (x-(-176.3501))/(y-(-115.5118))=(x-(-52.60973))/(y-(-52.9807))
    应该是这样,我也很久没碰几何了,错了莫喷,思路是这样
      

  3.   

    先计算X横向移动经过的点;int((X2-X1)/step) + (X2-X1)=0?0:1计算出横向移动的步数 不是很明白,为什么要这样算?
    int((X2-X1)/step)
    这样不就可以算出来移动的步数?
    为什么还是+(X2-X1)?int((X2-X1)/step) + (X2-X1)=0?0:1
    这个结果不是1就是0,有什么用处呢?
      

  4.   

    嗯,我看了你的需求
    X
    -176.3501
    -175.3501
    -174.3501
    -173.3501
    .........
    -115.5118 -176.3501 -> ..... -> 115.3501 -> -115.5118 
    看最后一步,115.3501不是最终目标,还需要再移动到115.5118,这应该也需要一步的。当然你可以根据你的要求,可以不计算这一步。
      

  5.   

    哦,对了。我写的是伪代码。应该是:
    (int((X2-X1)/step)) + ((X2-X1)=0?0:1 )
      

  6.   

    这不是数学中的直线方程嘛,y=ax+b,把已知两点带入求出a和b,剩下的点只要在已知两点范围内,知其一就能求其二了嘛
      

  7.   

    public void testPoint() {
    float x1 = -176.3501f;
    float x2 = -115.5118f;
    float y1 = -52.60973f;
    float y2 = -52.9807f;
    int step = 2;
    int x = ((int) (x2 - x1)) / step + ((int) (x2 - x1)) < 1 ? 0 : 1;
    System.out.println(x);
    int y = ((int) (y2 - y1)) / step + ((int) (y2 - y1)) < 1 ? 0 : 1;
    System.out.println(y);
    }
    得到的x,y有什么用呢?
      

  8.   

    楼主是要java代码还要是数学式子啊
      

  9.   

    我帮你算了下方程:
    y=((y1-y2)/ (x1 - x2)) * x + (x2 * y1 - x1 * y2) / (x2 -x1)
      

  10.   

    大概意思如下:for( int i=0; i<x; i++){
       Systemp.out.print("["+ (x1+i*step) +"," + y1 +"]")
    )
    if ((x2 - x1)==0) {
    Systemp.out.print("["+ (x2) +"," + y1 +"]")
    }
    for( int i=0; i<y; i++){
       Systemp.out.print("["+ x2 +"," + (y1+step*i) +"]")
    )
    if ((y2 - y1)==0) {
    Systemp.out.print("["+ x2 +"," + y2 +"]")
    }