代码之家  ›  专栏  ›  技术社区  ›  Frightlin

如何在我的java ThreePoint三角程序中实现这些角度?

  •  0
  • Frightlin  · 技术社区  · 10 年前

    我正在努力实施

    enter image description here

    在我的java ThreePoint程序中。

    这是我计算边的getLength方法

       private double getLength(int side){
    
    
         if(side == 0 && isTriangle()){
             return Math.sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));
         } else if (side == 1 && isTriangle()){
             return Math.sqrt((x2-x0) * (x2-x0) + (y2-y0) * (y1-y0));
         } else if (side == 2 && isTriangle()){
             return Math.sqrt((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)); 
         }else{ return 0;
    
         }
         }
    

    参数顶点应为0、1或2,用于指定角度a0、a1或a2。该方法返回指定顶点的角度。如果三个点不形成三角形,则此方法应返回零。要确定三角形的角度,可以使用余弦定律。(同上)

    下面是骨架的样子,但是我如何实现这个图呢?

     public double getAngle(int vertex){
    
                if(vertex == 0 && isTriangle()) {
               return a0 here; }
               else if(vertex == 1 && isTriangle()) {
               return a1 here; }
               else if(vertex == 2 && isTriangle()) {
               return a2; }
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   ajon    10 年前

    我的java有点生疏,我的trig甚至更生疏,但我认为你想要的a0在下面。你可以从下面算出a1和a2。还要注意,Java三角法使用弧度而不是度数,但这在这里应该不是问题。

    double s02 = Math.pow(this.getLength(0),2);
    double s12 = Math.pow(this.getLength(1),2);
    double s22 = Math.pow(this.getLength(2),2);
    a0 = Math.acos((-s02+s12+s22)/(2*s12*s22));
    

    注:我假设s0 s1和s2是边0,1和2的长度,正确吗?