日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java黑皮书课后题第8章:*8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积

發(fā)布時間:2024/7/23 java 38 豆豆

*8.33(幾何:多邊形的子面積)一個具有四個頂點(diǎn)的凸多邊形被分為4個三角形,編寫一個程序,提示用戶輸入4個頂點(diǎn)的坐標(biāo),然后以升序顯示四個三角形的面積

  • 題目
    • 題目描述與運(yùn)行示例
    • 破題
  • 代碼

題目

題目描述與運(yùn)行示例

8.33(幾何:多邊形的子面積)一個具有四個頂點(diǎn)的凸多邊形被分為4個三角形,編寫一個程序,提示用戶輸入4個頂點(diǎn)的坐標(biāo),然后以升序顯示四個三角形的面積

博主補(bǔ)充:
a00 * x + a01 * y = b0
a10 * x + a11 * y = b1
則:
x = (b0 * a11 - b1 * a01) / (a00 * a11 - a01 * a10)
y = (b1 * a00 - b0 * a10) / (a00 * a11 - a01 * a10)
三角形面積公式:
s = (side1 + side2 + side3) / 2
area = Math.sqrt(s(s-side1)(s-side2)(s-side3))
運(yùn)行示例:

Enter x1, y1, x2, y2, x3, y3, x4, y4: -2.5 2 4 4 3 -2 -2 -3.5 The areas are 6.17 7.96 8.08 10.42

破題

  • 獲取四個點(diǎn)的坐標(biāo),使用數(shù)組讀入
  • 求v1v3和v2v4線的交點(diǎn)坐標(biāo)
  • 自定義方法求三角形面積(傳入數(shù)組、下標(biāo)1、下標(biāo)2、交點(diǎn)坐標(biāo)數(shù)組),使用數(shù)組接收
  • 對數(shù)組排序,輸出
  • 代碼

    import java.util.Arrays; import java.util.Scanner;public class Test8_33 {public static void main(String[] args) {//1. 獲取四個點(diǎn)的坐標(biāo),使用數(shù)組讀入double[][] array = new double[4][2];Scanner input = new Scanner(System.in);System.out.println("Enter x1, y1, x2, y2, x3, y3, x4, y4:");for (int i = 0 ; i < 4 ; i++){for (int j = 0 ; j < 2 ; j++){array[i][j] = input.nextDouble();}}//2. 求v1v3和v2v4線的交點(diǎn)坐標(biāo)double[] loc = intersection(array);//3. 自定義方法求三角形面積(傳入數(shù)組、下標(biāo)、交點(diǎn)坐標(biāo)數(shù)組),使用數(shù)組接收double[] area = new double[4];for (int i = 0 ; i < 4 ; i++){area[i] = triangle(array, i, loc);}//4. 對數(shù)組排序,輸出Arrays.sort(area);System.out.print("The areas are ");for (int i = 0 ; i < 4 ; i++){System.out.printf("%.2f ", area[i]);}}/** 求v1v3和v2v4線的交點(diǎn)坐標(biāo) */public static double[] intersection(double[][] arr){double k02 = (arr[2][1] -arr[0][1]) / (arr[2][0] - arr[0][0]);double k13 = (arr[3][1] -arr[1][1]) / (arr[3][0] - arr[1][0]);double b02 = arr[0][1] - k02 * arr[0][0];double b13 = arr[1][1] - k13 * arr[1][0];double x = (b02 - b13) / (k13 - k02);double y = (b02 * k13 - b13 * k02) / (k13 - k02);double[] feedback = {x, y};return feedback;}/** 求三角形面積 */public static double triangle(double[][] arr0, int index0, double[] arr1){int index1 = (index0 + 1) % 4;double side1 = Math.sqrt(Math.pow(arr0[index1][0] - arr0[index0][0], 2) + Math.pow(arr0[index1][1] - arr0[index0][1], 2));double side2 = Math.sqrt(Math.pow(arr1[0] - arr0[index0][0], 2) + Math.pow(arr1[1] - arr0[index0][1], 2));double side3 = Math.sqrt(Math.pow(arr1[0] - arr0[index1][0], 2) + Math.pow(arr1[1] - arr0[index1][1], 2));double s = (side1 + side2 + side3) / 2;return Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));} }

    總結(jié)

    以上是生活随笔為你收集整理的Java黑皮书课后题第8章:*8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。