是否为三角形

三维空间中三个坐标判断是否可以组成三角形

输入:字符串(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)


public class Main {

    public boolean isTriangle(String str) {
      if(str == null || str.equals("")){
        return false;
      }
      String[] str_num = str.split(" ");
      String A = str_num[0];
      String B = str_num[1];
      String C = str_num[2];
      
      
      String A1 = A.substring(1,A.length()-1);
      String B1 = B.substring(1,B.length()-1);
      String C1 = A.substring(1,C.length()-1);
      
      
      String[] A1_nums = A1.split(","); //(x1,y1,z1)
      String[] B1_nums = B1.split(","); //(x2,y2,z2)
      String[] C1_nums = C1.split(","); //(x3,y3,z3)
      //斜率
      double slope1 = (Double.parseDouble(A1_nums[1]) - Double.parseDouble(B1_nums[1])) /        (Double.parseDouble(A1_nums[0]) - Double.parseDouble(B1_nums[0]));
                                                                                                                   double slope2 = (Double.parseDouble(A1_nums[1]) - Double.parseDouble(C1_nums[1])) / (Double.parseDouble(A1_nums[0]) - Double.parseDouble(C1_nums[0]));
                                                                                                                   double slope3 = (Double.parseDouble(B1_nums[1]) - Double.parseDouble(C1_nums[1])) / (Double.parseDouble(B1_nums[0]) - Double.parseDouble(C1_nums[0]));
                                                                                                            
                                                                                                            
      
      //两点间距离
      double A_B = Math.pow( 
                   Math.pow((Double.parseDouble(A1_nums[0])-Double.parseDouble(B1_nums[0])),2)+
                   Math.pow((Double.parseDouble(A1_nums[1])-Double.parseDouble(B1_nums[1])),2)+
                   Math.pow((Double.parseDouble(A1_nums[2])-Double.parseDouble(B1_nums[2])),2),1/2);
      double A_C = Math.pow( 
                   Math.pow((Double.parseDouble(A1_nums[0])-Double.parseDouble(C1_nums[0])),2)+
                   Math.pow((Double.parseDouble(A1_nums[1])-Double.parseDouble(C1_nums[1])),2)+
                   Math.pow((Double.parseDouble(A1_nums[2])-Double.parseDouble(C1_nums[2])),2),1/2);
      
      double B_C = Math.pow( 
                   Math.pow((Double.parseDouble(B1_nums[0])-Double.parseDouble(C1_nums[0])),2)+
                   Math.pow((Double.parseDouble(B1_nums[1])-Double.parseDouble(C1_nums[1])),2)+
                   Math.pow((Double.parseDouble(B1_nums[2])-Double.parseDouble(C1_nums[2])),2),1/2);
                   
      if(isParallel(slope1,slope2,slope3)){
        return false;
      }
      
      if( (A_B + A_C) > B_C && (A_B + B_C) > A_B && (A_B + B_C) > A_C && Math.abs(A_B - A_C) < B_C && Math.abs(A_B-B_C) < A_C && Math.abs(A_C -B_C) < A_B){
        return true;
      }else{
        return false;
      }
      
      
      
      
      
      // String[] s1 = str.substring(1,6).split(","); //(x1,y1,z1)
      // String[] s2 = str.substring(8,13).split(",");//(x2,y2,z2)
      // String[] s3 = str.substring(15,20).split(",");//(x3,y3,z3)
    }
    public boolean isParallel(double a, double b, double c){
      if(a == b || a == c || b == c){
        return true;
      }else{
        return false;
      }
      
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值