试对平面直角坐标上的点,线段,三角形等图形编写一个程序,并在程序中求出对应图形的面积和周长
时间: 2024-10-21 21:12:38 浏览: 65
对于平面直角坐标系上的简单图形,如点、线段和三角形,我们可以先创建对应的类来存储它们的信息。以下是简化版的示例代码,用于计算点、线段和基础类型的三角形(非共线三点构成)的面积和周长:
```java
import java.awt.geom.Point2D;
// 点类
class Point {
double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
}
// 线段类
class LineSegment {
Point start, end;
public LineSegment(Point start, Point end) {
this.start = start;
this.end = end;
}
public double length() {
return Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));
}
@Override
public String toString() {
return "Line from " + start + " to " + end;
}
}
// 三角形类,基于三点
class Triangle {
Point a, b, c;
public Triangle(Point a, Point b, Point c) {
this.a = a;
this.b = b;
this.c = c;
}
public double area() {
double sideA = lineLength(a, b);
double sideB = lineLength(b, c);
double sideC = lineLength(c, a);
double s = (sideA + sideB + sideC) / 2; // 半周长
return Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC));
}
public double perimeter() {
return lineLength(a, b) + lineLength(b, c) + lineLength(c, a);
}
private double lineLength(Point p1, Point p2) {
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
}
@Override
public String toString() {
return "Triangle with vertices at " + a + ", " + b + ", and " + c;
}
}
public class Main {
public static void main(String[] args) {
Point point = new Point(0, 0);
LineSegment segment = new LineSegment(new Point(0, 0), new Point(1, 1));
Triangle triangle = new Triangle(new Point(0, 0), new Point(1, 0), new Point(0, 1));
System.out.println("Point area: " + point.getArea()); // 点没有面积,此处假设为0
System.out.println("Segment length: " + segment.length());
System.out.println("Triangle area: " + triangle.area());
System.out.println("Triangle perimeter: " + triangle.perimeter());
}
}
```
请注意,这里的点类没有面积属性,因为点没有面积。实际上,我们在这里计算的是线段长度和三角形面积。在实际应用中,可能会需要更复杂的几何库来精确处理各种形状。
阅读全文
相关推荐


















