Java 这种顺时针方法适用于多边形吗? public类SimplePolygon{ 受保护的int n;//多边形的顶点数 受保护的点2D.双[]顶点;//多边形周围的顶点[0..n-1] //边界 受保护的SimplePolygon(整数大小){ n=尺寸; this.vertices=newpoint2d.Double[size]; } 受保护的SimplePolygon(){ n=0; } 公共静态SimplePolygon getNewPoly(Point2D.Double[]顶点){ int size=vertex.length;//TODO:用代码替换此行 SimplePolygon p=新的SimplePolygon(大小); //TODO:从输入文件填充p.vertices[0..size-1] 对于(int i=0;i

Java 这种顺时针方法适用于多边形吗? public类SimplePolygon{ 受保护的int n;//多边形的顶点数 受保护的点2D.双[]顶点;//多边形周围的顶点[0..n-1] //边界 受保护的SimplePolygon(整数大小){ n=尺寸; this.vertices=newpoint2d.Double[size]; } 受保护的SimplePolygon(){ n=0; } 公共静态SimplePolygon getNewPoly(Point2D.Double[]顶点){ int size=vertex.length;//TODO:用代码替换此行 SimplePolygon p=新的SimplePolygon(大小); //TODO:从输入文件填充p.vertices[0..size-1] 对于(int i=0;i,java,methods,polygon,Java,Methods,Polygon,您好,我正在尝试实现“delta”方法,但我无法判断它是否正确。该方法说它返回“定向三角形的有符号面积的两倍”。给出的说明在如何计算方面有点不确定 我看到了矩阵,有一点研究表明,叉积是可行的,但现在我觉得我需要创建一个辅助方法来确定这三个点是顺时针、逆时针还是共线,我对如何做有些了解。我只需要帮助确定我的delta方法是否正确。可能;请注意。抱歉,如果它是重复的,我对确定顺时针方向的方向性有一些想法,但我不确定我是否正确实施了delta方法,也不确定如何在没有预先确定的polygons的情况下继

您好,我正在尝试实现“delta”方法,但我无法判断它是否正确。该方法说它返回“定向三角形的有符号面积的两倍”。给出的说明在如何计算方面有点不确定


我看到了矩阵,有一点研究表明,叉积是可行的,但现在我觉得我需要创建一个辅助方法来确定这三个点是顺时针、逆时针还是共线,我对如何做有些了解。我只需要帮助确定我的delta方法是否正确。

可能;请注意。抱歉,如果它是重复的,我对确定顺时针方向的方向性有一些想法,但我不确定我是否正确实施了delta方法,也不确定如何在没有预先确定的polygons的情况下继续测试它是否正确为什么不尝试几个已知手性的测试用例?对不起,我不确定你所说的“手性”是什么意思我只有多边形的x和y坐标的测试用例,但没有关于它们的信息;请尝试一个多边形及其镜像。
public class SimplePolygon {

protected int n; // number of vertices of the polygon
protected Point2D.Double[] vertices; // vertices[0..n-1] around the polygon
                                // boundary

protected SimplePolygon(int size) {
    n = size;
    this.vertices = new Point2D.Double[size];
}

protected SimplePolygon() {
    n = 0;
}

public static SimplePolygon getNewPoly(Point2D.Double[] vertex) {
    int size = vertex.length; // TODO: replace this line with your code
    SimplePolygon p = new SimplePolygon(size);
    // TODO: populate p.vertices[0..size-1] from input file
    for(int i = 0; i < vertex.length; i++){
        Point2D.Double[] pArray = p.vertices;
        pArray[i] = vertex[i];
    }
    return p;
}

public int getSize() {
    return n;
}

public Point2D.Double getVertex(int i) throws IndexOutOfBoundsException {
    Point2D.Double u = null;
    try{
        u = vertices[i];
    }catch(IndexOutOfBoundsException e){
        e.printStackTrace();
    }
    return u;
}

public static double delta(Point2D.Double a, Point2D.Double b,
        Point2D.Double c) {
    double val = (a.getX()*b.getY()*1) + (a.getY()*1*c.getX()) 
            + (1*b.getX()*c.getY()) - (a.getY()*b.getX()*1)
            - (a.getX()*1*c.getY()) - (1*b.getY()*c.getX());

    return val;
}