Triangle2D类(Java)
时间: 2023-10-08 13:06:35 浏览: 65
Triangle2D类是一个表示二维平面上三角形的类,具体实现如下:
```java
public class Triangle2D {
private MyPoint p1, p2, p3; // 三个顶点
// 构造函数
public Triangle2D(double x1, double y1, double x2, double y2, double x3, double y3) {
p1 = new MyPoint(x1, y1);
p2 = new MyPoint(x2, y2);
p3 = new MyPoint(x3, y3);
}
// 计算周长
public double getPerimeter() {
double side1 = p1.distance(p2);
double side2 = p2.distance(p3);
double side3 = p3.distance(p1);
return side1 + side2 + side3;
}
// 计算面积
public double getArea() {
double s = getPerimeter() / 2;
double side1 = p1.distance(p2);
double side2 = p2.distance(p3);
double side3 = p3.distance(p1);
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
// 判断点是否在三角形内部
public boolean contains(MyPoint point) {
double x = point.getX();
double y = point.getY();
double x1 = p1.getX();
double y1 = p1.getY();
double x2 = p2.getX();
double y2 = p2.getY();
double x3 = p3.getX();
double y3 = p3.getY();
double alpha = ((y2 - y3)*(x - x3) + (x3 - x2)*(y - y3)) /
((y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3));
double beta = ((y3 - y1)*(x - x3) + (x1 - x3)*(y - y3)) /
((y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3));
double gamma = 1.0 - alpha - beta;
return alpha > 0 && beta > 0 && gamma > 0;
}
// 判断两个三角形是否相等
public boolean equals(Triangle2D t) {
double x1 = p1.getX();
double y1 = p1.getY();
double x2 = p2.getX();
double y2 = p2.getY();
double x3 = p3.getX();
double y3 = p3.getY();
double tx1 = t.getP1().getX();
double ty1 = t.getP1().getY();
double tx2 = t.getP2().getX();
double ty2 = t.getP2().getY();
double tx3 = t.getP3().getX();
double ty3 = t.getP3().getY();
return x1 == tx1 && y1 == ty1 && x2 == tx2 && y2 == ty2 && x3 == tx3 && y3 == ty3;
}
// 获取三个顶点
public MyPoint getP1() {
return p1;
}
public MyPoint getP2() {
return p2;
}
public MyPoint getP3() {
return p3;
}
}
```
在这个类中,我们实现了计算三角形周长和面积的方法,并且实现了判断一个点是否在三角形内部的方法。我们还实现了判断两个三角形是否相等的方法,以及获取三个顶点的方法。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)