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条)

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗