java - 在坐标系中定义三角形的高度
问题描述
我正在编写用户输入坐标系中三个点的练习程序,所以它得到了给定三角形所有边的长度,例如周长和面积。我的目标是定义给定三角形的高度,以便我可以判断输入点是否等于 coo 系统中的直线,三角形不存在,因为高度 = 0,也定义三角形的面积。那么我如何定义高度只给出 A、B 和 C?任何关于键入我的代码以使其看起来更好的建议总是受欢迎的!:) 所以,我的代码如下所示:
import java.text.DecimalFormat;
import java.util.Scanner;
public class MainTriangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double aX;
double aY;
double bX;
double bY;
double cX;
double cY;
System.out.println("-Distance between 3 points in coordinate system-");
System.out.println();
System.out.print("point A(x):");
aX = sc.nextDouble();
System.out.print("point A(y):");
aY = sc.nextDouble();
System.out.print("point B(x):");
bX = sc.nextDouble();
System.out.print("point B(y):");
bY = sc.nextDouble();
System.out.print("point C(x):");
cX = sc.nextDouble();
System.out.print("point C(y):");
cY = sc.nextDouble();
System.out.println();
sc.close();
double dX = bX - aX;
double dY = bY - aY;
double eX = cX - bX;
double eY = cY - bY;
double fX = cX - aX;
double fY = cY - aY;
double sD = Math.pow(dX, 2) + Math.pow(dY, 2);
double d = Math.sqrt(sD); // length of d (from point A to point B)
double sE = Math.pow(eX, 2) + Math.pow(eY, 2);
double e = Math.sqrt(sE); // length of e (from point B to point C)
double sF = Math.pow(fX, 2) + Math.pow(fY, 2);
double f = Math.sqrt(sF); // length of f (from point C to point A)
System.out.println("Distance from point A to point B is "+new DecimalFormat("##.##").format(d));
System.out.println();
System.out.println("Distance from point B to point C is "+new DecimalFormat("##.##").format(e));
System.out.println();
System.out.println("Distance from point C to point A is "+new DecimalFormat("##.##").format(f));
System.out.println();
double p = d+e+f; // (perameter)
System.out.println("Perameter of triangle ABC is "+new DecimalFormat("##.##").format(p));
}
}
解决方案
double p = d + e + f;
double area = Math.sqrt( p * (p-d) * (p-e) * (p-f) );
double heightD = (2 * area) / d; //height of edge d
根据问题;d、e 和 f 是三角形的边。您可以通过知道该边缘的边缘和高度或通过知道 3 个边缘长度来计算面积。如果您知道所有边的长度,则可以获得边的高度
推荐阅读
- .net - .Net SocketAsyncEventArgs 可重用性
- python - Python浮点到字符串(科学记数法),以特定格式
- java - @WebFilter 需要 ServletComponentScan
- r - 为 geom_text 添加新的图例,文本标签作为图例键
- python - 为什么在尝试使用 bs4 获取包含 python 中特定类的链接时得到空列表?
- r - R:将每个值与列中的一组先前值进行比较
- wordpress - Wordpres 帖子未在移动版本上加载
- java - 抑制/避免在更高版本的 Android SDK 中创建的类的 java.lang.NoClassDefFoundError
- java - 弹簧模块和弹簧启动器模块之间的区别
- javascript - 在 Google Colab Notebook 中提供 iframe:localhost 拒绝连接