我试图找到两点之间的距离
Im trying to find the distance between two points
我已经研究了几天了,我似乎无法弄清楚如何找到 2 点之间的距离以及如何制作包含和重叠
这是UML图
我已经完成了所有的 setter 和 getter 对象,除了包含和重叠
这是具有预期输出的测试参数
https://i.stack.imgur.com/HJMYG.png
这是我完成的代码
public class Question03 {
public static void main(String[] args) {
Circle c1 = new Circle(new Point(0, 0), 1.0);
System.out.println(c1.getArea());
Circle c2 = new Circle(new Point(1, 0), 1.0);
System.out.println(c2.getArea());
System.out.println(c1.getCenter().distance(c2.getCenter()));
System.out.println(c1.contains(new Point(0, 0.5)));
System.out.println(c1.overlaps(c2));
Circle c3 = new Circle(new Point(0, 4), 1.0);
System.out.println(c3.contains(new Point(0, 0)));
System.out.println(c3.overlaps(c1));
public class Circle {
Point center;
double radius;
Circle (Point center, double radius){
this.center=center;
this.radius=radius;
}
public Point getCenter() {
return this.center;
}
public double getRadius(){
return this.radius;
}
public Point setCenter(){
return this.center;
}
public double setRadius(){
return this.radius;
}
public double getArea(){
double area = Math.PI * radius * radius;
return area;
}
public double getPerimeter(){
double perimeter = Math.PI * (radius * 2);
return perimeter;
}
public boolean contains(Point p){
return contains;
}
public boolean overlaps(Circle c){
return overlaps;
}
}
public class Point {
double x;
double y;
Point(double x, double y){
this.x=x;
this.y=y;
}
public double getX(){
return this.x;
}
public double getY(){
return this.y;
}
public double setX(){
return this.x;
}
public double setY(){
return this.y;
}
public double distance(Point p){
double distance = Math.sqrt((-x)*(-x) + (-y)*(-y));
return distance;
}
}
在此之后我不知道该怎么办我真的卡住了,我在互联网上找不到任何关于此的内容请帮忙:(
你想要的距离公式是d=√((x_2-x_1)²+(y_2-y_1)²)
。试试这个:
public double distance(Point p) {
double xDiff = p.getX() - this.x;
double yDiff = p.getY() - this.y;
double xPow = xDiff * xDiff;
double yPow = yDiff * yDiff;
double distance = Math.sqrt(xPow + yPow);
return distance;
}
这是一个使用数学 class 的 hypot method 的 shorthand 版本。
public double distance(Point p) {
return Math.hypot(p.getX() - this.x, p.getY() - this.y);
}
正确应用“this”点和作为参数传入的“p”之间的距离公式。如果作为参数距离传入的点“p”小于圆半径,则 Next contains 为真。如果中心之间的距离小于每个圆的半径之和,则最后重叠为真。
该代码未经测试,但如果项目中的其他一切正常,它可能会正常工作。
public double distance(Point p){
return Math.sqrt( (this.x - p.getX()) * (this.x - p.getX()) +
(this.y - p.getY()) * (this.y - p.getY())
);
}
public boolean contains(Point p){
return this.center.distance(p) < this.radius;
}
public boolean overlaps(Circle c){
double d = this.center.distance(c.getCenter());
return d < this.radius + c.getRadius();
}
我已经研究了几天了,我似乎无法弄清楚如何找到 2 点之间的距离以及如何制作包含和重叠
这是UML图
我已经完成了所有的 setter 和 getter 对象,除了包含和重叠
这是具有预期输出的测试参数 https://i.stack.imgur.com/HJMYG.png
这是我完成的代码
public class Question03 {
public static void main(String[] args) {
Circle c1 = new Circle(new Point(0, 0), 1.0);
System.out.println(c1.getArea());
Circle c2 = new Circle(new Point(1, 0), 1.0);
System.out.println(c2.getArea());
System.out.println(c1.getCenter().distance(c2.getCenter()));
System.out.println(c1.contains(new Point(0, 0.5)));
System.out.println(c1.overlaps(c2));
Circle c3 = new Circle(new Point(0, 4), 1.0);
System.out.println(c3.contains(new Point(0, 0)));
System.out.println(c3.overlaps(c1));
public class Circle {
Point center;
double radius;
Circle (Point center, double radius){
this.center=center;
this.radius=radius;
}
public Point getCenter() {
return this.center;
}
public double getRadius(){
return this.radius;
}
public Point setCenter(){
return this.center;
}
public double setRadius(){
return this.radius;
}
public double getArea(){
double area = Math.PI * radius * radius;
return area;
}
public double getPerimeter(){
double perimeter = Math.PI * (radius * 2);
return perimeter;
}
public boolean contains(Point p){
return contains;
}
public boolean overlaps(Circle c){
return overlaps;
}
}
public class Point {
double x;
double y;
Point(double x, double y){
this.x=x;
this.y=y;
}
public double getX(){
return this.x;
}
public double getY(){
return this.y;
}
public double setX(){
return this.x;
}
public double setY(){
return this.y;
}
public double distance(Point p){
double distance = Math.sqrt((-x)*(-x) + (-y)*(-y));
return distance;
}
}
在此之后我不知道该怎么办我真的卡住了,我在互联网上找不到任何关于此的内容请帮忙:(
你想要的距离公式是d=√((x_2-x_1)²+(y_2-y_1)²)
。试试这个:
public double distance(Point p) {
double xDiff = p.getX() - this.x;
double yDiff = p.getY() - this.y;
double xPow = xDiff * xDiff;
double yPow = yDiff * yDiff;
double distance = Math.sqrt(xPow + yPow);
return distance;
}
这是一个使用数学 class 的 hypot method 的 shorthand 版本。
public double distance(Point p) {
return Math.hypot(p.getX() - this.x, p.getY() - this.y);
}
正确应用“this”点和作为参数传入的“p”之间的距离公式。如果作为参数距离传入的点“p”小于圆半径,则 Next contains 为真。如果中心之间的距离小于每个圆的半径之和,则最后重叠为真。
该代码未经测试,但如果项目中的其他一切正常,它可能会正常工作。
public double distance(Point p){
return Math.sqrt( (this.x - p.getX()) * (this.x - p.getX()) +
(this.y - p.getY()) * (this.y - p.getY())
);
}
public boolean contains(Point p){
return this.center.distance(p) < this.radius;
}
public boolean overlaps(Circle c){
double d = this.center.distance(c.getCenter());
return d < this.radius + c.getRadius();
}