Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分治壳算法_Java - Fatal编程技术网

Java 分治壳算法

Java 分治壳算法,java,Java,您好,我今天的问题是分解并找出如何实际编码算法的下切线部分。我设法完成了步骤(1)和(2),但我现在仍停留在步骤(3)上 分治凸壳 船体: (1) 如果| S |首先 找到两个外壳的上切线是类似的。值得尝试并抽象切线检查,以便对所有检查(下/上、HA/HB)使用相同的函数。首先 //(2) Let b be the leftmost point of HB . for (int i=0; i<hullb.length; i++){ if (b < hullb[i][0]){

您好,我今天的问题是分解并找出如何实际编码算法的下切线部分。我设法完成了步骤(1)和(2),但我现在仍停留在步骤(3)上

分治凸壳

船体:

(1) 如果| S |首先

找到两个外壳的上切线是类似的。值得尝试并抽象切线检查,以便对所有检查(下/上、HA/HB)使用相同的函数。

首先

//(2) Let b be the leftmost point of HB .
for (int i=0; i<hullb.length; i++){
    if (b < hullb[i][0]){
        b = hullb[i][0];
    }
}
for (int i=0; i<hullb.length; i++){
    if (b > hullb[i][0]){
        b = hullb[i][0];
    }
}

找到两个外壳的上切线是类似的。值得尝试并抽象切线检查,以便对所有检查(下/上、HA/HB)使用相同的函数。

这是一项需要有人阅读和理解的大量工作。你能不能把它配对一下,让它更容易提供帮助?对不起,我没有早点给你回复,我还不习惯这个系统。当然,我以后会更明确地设置问题的格式。=)这是很多人必须阅读和理解的工作。你能不能把它配对一下,让它更容易提供帮助?对不起,我没有早点给你回复,我还不习惯这个系统。当然,我以后会更明确地设置问题的格式。=)
public static boolean rightTurn(int [][] rt, int counter) //AxBxC = (Bx-Ax)(Cy-Ay)-(By-Ay)(Cx-Ax)
{
    int ax = rt[counter-2][0];
    int bx = rt[counter-1][0];
    int cx = rt[counter][0];

    int ay = rt[counter-2][1];
    int by = rt[counter-1][1];
    int cy = rt[counter-0][1];
    int result =(bx-ax)*(cy-ay)-(by-ay)*(cx-ax);

    if (result < 0){                            // Result = VE+ (Right Turn), 0, VE- (Left Turn)

        return true;                                                    //VE- = TRUE = Right Turn
    }

    else return false;                                                  //VE+ = FALSE = Left Turn
}
//(2) Let b be the leftmost point of HB .
for (int i=0; i<hullb.length; i++){
    if (b < hullb[i][0]){
        b = hullb[i][0];
    }
}
for (int i=0; i<hullb.length; i++){
    if (b > hullb[i][0]){
        b = hullb[i][0];
    }
}
aIndex = findRightmostA();
bIndex = findLeftmostB();
while(!(lowerTangentA (aIndex, bIndex) && lowerTangentB(aIndex, bIndex))){
    aIndex = findLowerTangentA(aIndex, bIndex);
    bIndex = findLowerTangentB(aIndex, bIndex);
}

lowerTangentA(aIndex, bIndex){
    ux = hulla[aIndex+1][0];
    uy = hulla[aIndex+1][1]; // array bounds!
    ax = hulla[aIndex][0];
    ay = hulla[aIndex][1];
    wx = hulla[aIndex-1][0];
    wy = hulla[aIndex-1][1];
    bx = hullb[bIndex][0];
    by = hullb[bIndex][1];
    return !(leftTurn(bx,by,ax,ay,ux,uy) || leftTurn(bx,by,ax,ay,wx,wy));
}