Java中使用java.awt.geom.Point2D进行坐标相关的计算(距离、平方等)

场景

在Java中需要对坐标点进行一些计算和判断。

比如计算两点之间的距离、距离的平方、两点是否相等、坐标赋值、克隆等。

可以使用Java自带的java.awt.Point2D的相关API。

API文档:

Point2D (Java Platform SE 8 )

常用方法

变量和类型方法描述
Objectclone()

创建与此对象具有相同类并具有相同内容的新对象。

doubledistance​(double px, double py)

返回此 Point2D到指定点的距离。

static doubledistance​(double x1, double y1, double x2, double y2)

返回两点之间的距离。

doubledistance​(Point2D pt)

返回此 Point2D到指定的 Point2D的距离。

doubledistanceSq​(double px, double py)

返回从此 Point2D到指定点的距离的平方。

static doubledistanceSq​(double x1, double y1, double x2, double y2)

返回两点之间距离的平方。

doubledistanceSq​(Point2D pt)

返回从此 Point2D到指定的 Point2D的距离的平方。

booleanequals​(Object obj)

确定两个点是否相等。

abstract doublegetX()

以 double精度返回此 Point2D的X坐标。

abstract doublegetY()

以 double精度返回此 Point2D的Y坐标。

inthashCode()

返回此 Point2D的哈希 Point2D 。

abstract voidsetLocation​(double x, double y)

将此 Point2D的位置设置为指定的 double坐标。

voidsetLocation​(Point2D p)

将此 Point2D的位置设置为与指定的 Point2D对象相同的坐标。

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、坐标对象声明赋值

        Point2D.Double point1 = new Point2D.Double(200.22555d,546545.454455d);
        Point2D.Double point2 = new Point2D.Double(25656.22555d,151545.4556748d);

2、计算两点之间的距离

        //计算两点之间的距离
        Point2D.Double point1 = new Point2D.Double(200.22555d,546545.454455d);
        Point2D.Double point2 = new Point2D.Double(25656.22555d,151545.4556748d);
        //System.out.println("两点之间的距离"+point1.distance(point2));

3、分别获取x和y

System.out.println("获取x和y"+point1.getX()+" "+point1.getY());

4、两点之间距离的平方

System.out.println("两点之间距离的平方"+point1.distanceSq(point2));

5、两点是否相等

System.out.println("两点是否相等"+point1.equals(point2));

6、返回哈希Point2D

System.out.println("返回此 Point2D的哈希Point2D"+point1.hashCode());

7、设置为指定的坐标

        //point1.setLocation(point2);
        //System.out.println("将此 Point2D的位置设置为与指定的 Point2D对象相同的坐标"+point1);

8、克隆

        Point2D.Double point3 = (Point2D.Double) point1.clone();
        System.out.println(point3);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java 计算两个坐标范围的代码如下: ``` import java.awt.geom.Point2D; public class Main { public static void main(String[] args) { Point2D p1 = new Point2D.Double(1, 2); Point2D p2 = new Point2D.Double(3, 4); double distance = p1.distance(p2); System.out.println("两点间距离为:" + distance); } } ``` 这段代码使用java.awt.geom.Point2D 类,计算了两个点 (1, 2) 和 (3, 4) 之间的欧几里得距离。 ### 回答2: 可以使用Java编程语言计算两个坐标范围的方法如下: 假设两个坐标范围分别为(range1_x1, range1_y1, range1_x2, range1_y2)和(range2_x1, range2_y1, range2_x2, range2_y2)。 首先,我们可以计算第一个坐标范围的宽度range1_width和高度range1_height,分别为range1_width = Math.abs(range1_x2 - range1_x1)和range1_height = Math.abs(range1_y2 - range1_y1)。 接下来,我们可以计算第二个坐标范围的宽度range2_width和高度range2_height,分别为range2_width = Math.abs(range2_x2 - range2_x1)和range2_height = Math.abs(range2_y2 - range2_y1)。 然后,我们可以使用条件语句判断两个范围是否重叠。如果两个范围重叠,则它们的交集宽度(intersect_width)为Math.min(range1_x2, range2_x2) - Math.max(range1_x1, range2_x1),交集高度(intersect_height)为Math.min(range1_y2, range2_y2) - Math.max(range1_y1, range2_y1)。 最后,我们可以判断交集宽度intersect_width和交集高度intersect_height是否大于0,如果大于0,则说明两个范围有交集,否则没有交集。 例如,如果第一个坐标范围为(0, 0, 5, 5),第二个坐标范围为(4, 4, 8, 8),则我们可以计算得到range1_width = 5,range1_height = 5,range2_width = 4,range2_height = 4。交集宽度为Math.min(5, 8) - Math.max(0, 4) = 5 - 4 = 1,交集高度为Math.min(5, 8) - Math.max(0, 4) = 5 - 4 = 1。由于交集宽度和交集高度都大于0,所以可以判断出两个范围有交集。 以上就是使用Java计算两个坐标范围的方法。 ### 回答3: 要计算两个坐标范围,首先需要明确坐标的类型。在Java,常用的坐标类型有经度和纬度坐标(用于地理位置)和x、y坐标(用于平面位置)。 如果是经度和纬度坐标,可以使用大圆距离公式来计算两个坐标之间的距离。根据公式,可以计算出两个坐标之间的直线距离,并将其转换为适当的单位(如米、千米等)。 如果是x、y坐标计算两个坐标范围则需要找出最小和最大的x、y值。可以通过遍历所有坐标,找到最小和最大的x、y值,并计算出范围。范围可以用一个矩形来表示,其最小的x值对应矩形的左边界,最大的x值对应右边界,最小的y值对应下边界,最大的y值对应上边界。 上述方法适用于一般情况下的坐标计算。但在某些特殊情况下,例如计算地理位置上的坐标范围时,可能需要考虑地球曲率的影响。这时可以使用更复杂的算法来计算坐标范围。 总之,在Java计算两个坐标范围需要根据坐标类型选择相应的计算方法,并根据具体需求进行适当的转换或附加处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值