首页 > 解决方案 > 在坐标系中定义三角形的高度

问题描述

我正在编写用户输入坐标系中三个点的练习程序,所以它得到了给定三角形所有边的长度,例如周长和面积。我的目标是定义给定三角形的高度,以便我可以判断输入点是否等于 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));

    }

}

标签: java

解决方案


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 个边缘长度来计算面积。如果您知道所有边的长度,则可以获得边的高度


推荐阅读