首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算n角的角度(加比较)

计算n角的角度(加比较)
EN

Stack Overflow用户
提问于 2016-08-25 01:53:51
回答 1查看 41关注 0票数 0

我正在尝试计算n角形状的点之间的角度。有两个保存x和y坐标的数组。我一直收到P13的错误,但我找不到原因。有谁知道原因吗?

代码语言:javascript
复制
public class Ugao {

    public static int nizovi(double[]a , double[]b , double alfa) {
        int BrStr = 0;
        for (int i = 0; i < b.length; i++) {
            double P12,P13, P23;
            P12 = duzina(a[i+1], b[i+1], a[i], b[i]);
            P13 = duzina(a[i+1], b[i+1], a[i+2], b[i+2]); // pisemo prvo i+1 jer je to vertex tacka, ona koja je u centru ugla, zato nije od i
            P23 = duzina(a[i], b[i], a[i+2], b[i+2]);

            double x = ugao(P12, P13, P23);
            if(x > alfa) {
                System.out.print( "Stranica : " + "( " + a[i] + "," + b[i] + " )" + "( " + a[i+1] + "," + b[i+1] + " )" + " & ");
                System.out.println("( " + a[i+1] + "," + b[i+1] + " )" + "( " + a[i+2] + "," + b[i+2] + " )");
                System.out.println();
                BrStr++;
            }
        }
        return BrStr;
    }


    public static double ugao (double P12, double P13, double P23) {
        return Math.acos((Math.pow(P12, 2) + Math.pow(P13, 2) - Math.pow(P23, 2))/(2 * P12 * P13));
    }

    public static double duzina (double vertexX1, double vertexY1, double x2, double y2) {
        return  Math.sqrt(Math.pow((vertexX1-x2),2)+ Math.pow((vertexY1-y2), 2));
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        double a[] = {12,25,3};
        double b[] = {11,20,5};

        nizovi(a, b, 45);

    }

}
EN

回答 1

Stack Overflow用户

发布于 2016-08-25 02:31:05

您正在耗尽数组范围。

例如,如果length = 4数组包含索引0..3,但在最后一次使用i=3表达式运行时,a[i+2]希望元素为a[5]

您可以使用模算法来获得下一个顶点索引

代码语言:javascript
复制
 current: i
 next: (i+1)%length
 nextnext: (i+2)%length
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39129995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档