戒灵领域
怎么获取两点,两个location中间的全部坐标,想弄个区域随机生成怪物

结冰的离季
2点A(x1,y1,z1) B(x2,y2,z2) 之间(矩形区域) 的点C(xc,yc,zc)
必有 xc ∈ [x1,x2] yc ∈ [y1,y2] zc ∈ [z1,z2]
所以你要随机可以根据 2点的坐标形成的区间来随机,不用获取所有点

贺兰兰
new Location(loc1.getWorld(), loc1.getX()+random.nextDouble(Math.abs(loc2.getX()-loc1.getX())), loc1.getY()+random.nextDouble(Math.abs(loc2.getY()-loc1.getY())), loc1.getZ()+random.nextDouble(Math.abs(loc2.getZ()-loc1.getZ())))

2000000
  1.     /**
  2.      * 获取两个位置之间所有坐标的方法
  3.      *
  4.      * @param loc1 第一个位置
  5.      * @param loc2 第二个位置
  6.      * @return 包含所有坐标的列表
  7.      */
  8.     public static List<Location> getLocationsBetween(Location loc1, Location loc2) {
  9.         // 获取位置所在的世界对象
  10.         World world = loc1.getWorld();

  11.         // 存储所有坐标的列表
  12.         List<Location> locations = new ArrayList<>();

  13.         // 计算坐标轴的最小值和最大值
  14.         int xMin = Math.min(loc1.getBlockX(), loc2.getBlockX());
  15.         int xMax = Math.max(loc1.getBlockX(), loc2.getBlockX());
  16.         int yMin = Math.min(loc1.getBlockY(), loc2.getBlockY());
  17.         int yMax = Math.max(loc1.getBlockY(), loc2.getBlockY());
  18.         int zMin = Math.min(loc1.getBlockZ(), loc2.getBlockZ());
  19.         int zMax = Math.max(loc1.getBlockZ(), loc2.getBlockZ());

  20.         // 生成所有坐标
  21.         for (int x = xMin; x <= xMax; x++) {
  22.             for (int y = yMin; y <= yMax; y++) {
  23.                 for (int z = zMin; z <= zMax; z++) {
  24.                     // 创建新的 Location 对象,并将其添加到列表中
  25.                     Location location = new Location(world, x, y, z);
  26.                     locations.add(location);
  27.                 }
  28.             }
  29.         }

  30.         // 返回所有坐标的列表
  31.         return locations;
  32.     }
复制代码

首先从 loc1 中获取所在的世界对象,然后创建一个空的列表用于存储所有坐标。
通过比较 loc1 和 loc2 在每个坐标轴上的值,计算出 x、y、z 坐标轴上的最小值和最大值。确保坐标生成范围正确。
通过嵌套的三层循环生成所有坐标,这些坐标包括了所有可能的 x、y、z 坐标值组合,将这些坐标添加到列表中返回。

需要注意的是,这个方法坐标获取间隔只为 1。如果需要生成精确到小数点的坐标,可以修改循环部分的实现。

另外使用时请注意性能问题。

Ph-苯
两个点中间的坐标有无穷多个,你想要哪些?整数坐标吗?

第一页 上一页 下一页 最后一页