qwerhy 2016-12-15 06:42 采纳率: 100%
浏览 1088
已采纳

用java算法实现,栽种四棵树,保证任意两棵树之间距离相等

用java语言实现这个算法,保证任意两棵树之间距离相等,现在有想法是设计正四面体,每个点放一课树,保证任意两个距离相等

  • 写回答

3条回答 默认 最新

  • 大脸猫丶 2016-12-15 08:32
    关注

    package com.com.example.demo.Test12_15;

    import java.math.BigDecimal;

    /**

    • com.com.example.demo.Test12_15
    • Created by ${SailZhang} on 2016/12/15 0015.
      */
      public class Point {
      Double x ;
      Double y ;
      Double z ;

      public Point() {
      }

      public Point(Double x, Double y, Double z) {
      this.x = x;
      this.y = y;
      this.z = z;
      }

      public Double getX() {
      return x;
      }

      public void setX(Double x) {
      this.x = x;
      }

      public Double getY() {
      return y;
      }

      public void setY(Double y) {
      this.y = y;
      }

      public Double getZ() {
      return z;
      }

      public void setZ(Double z) {
      this.z = z;
      }

      @Override
      public String toString() {
      return "Point{" +
      "x=" + x +
      ", y=" + y +
      ", z=" + z +
      '}';
      }
      }

     package com.com.example.demo.Test12_15;
    
    import java.math.BigDecimal;
    import java.math.MathContext;
    
    /**
     * com.com.example.demo.Test12_15
     * Created by ${SailZhang} on 2016/12/15 0015.
     */
    public class Test {
        public static void main(String[] args) {
            Point p1 = new Point(0.0,0.0,0.0);
            Point p2 = new Point(1.0,1.0,1.0);
            for (double i = -2.0;i<=2;i += 0.1){
                for (double j = -2.0;j<=2;j += 0.1){
                    for (double k = -2.0;k<=2;k += 0.1){
                        Point p3 = new Point(i,j,k);
                        if (sub(getLengthPow(p1,p2),getLengthPow(p1,p3)) == 0
                                && sub(getLengthPow(p1,p2),getLengthPow(p2,p3)) == 0){
                            System.out.println(p3.toString());
                        }
                    }
                }
            }
        }
        public static Double getLengthPow(Point p1, Point p2){
            double xx = p1.getX() - p2.getX();
            double yy = p1.getY() - p2.getY();
            double zz = p1.getZ() - p2.getZ();
            return Math.pow(xx,2)+ Math.pow(yy,2)+Math.pow(zz,2);
        }
        public static double sub(double v1,double v2){
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.subtract(b2).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue();
        }
    }
    
    

    这个必然存在小数的. 我给自己坑了图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么