Определить функцию нахождения площади треугольника по координатам его вершин
Привет всем! Я новичок в программировании,нам дали такую задачу
"Определить функцию нахождения площади треугольника по координатам его вершин. Найти площадь выпуклого многоугольника, по координатам его вершин, используя полученную функцию." Бьюсь над ней уже месяц,никак не могу решить(( а сроки поджимают( Помогите кто может,plz! ) Язык программирования Java |
А что удалось за месяц? Выкладывай, не стесняйся.
|
В том то и дело,что вообще ничего :((( Попыток много,что было даже выкладывать стыдно(
|
ребята,плиииз кто-нить хелп ми! :(
|
Начни с формулы Герона (насколько геометрию помню).
|
Поддерживаю предыдущего подсказчика :). Так же, чтобы решить вторую часть читайте про триангуляцию, и методах разбиения многоугольников на симплексы, применяется в игровой индустрии.
|
Если даны координаты вершин треугольника, сначала можете воспользоваться формулой нахождения длины отрезка по координатам его концов, и только после этого - формулой Герона.
По второй части - разбивайте многоугольник на конечное число треугольников и вычисляйте площадь каждого треугольника отдельно, затем полученные площади суммируйте. |
спасибо,додумала первую часть )
код мало немного получился ) теперь возник вопрос,а как разбить многоугольник на треугольники? |
Все,додумала вторую часть :)
class SqareMn { int m,x1,x2,x3,y1,y2,y3; double p,a,b,c,s; int [][]A; SqareMn(int size){ m=size; A=new int [m][2]; for(int i=0;i<m;i++) for(int j=0;j<2;j++){ A[i][j]=(int)((Math.random()*10)); } x1=A[0][0];y1=A[0][1];//отмечаем первую точку for (int i=1;i<A.length-1; ){ x2=A[i][0]; y2=A[i][1];i++; x3=A[i][0]; y3=A[i][1]; //разбиваем на треугольники a=Math.sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))); b=Math.sqrt(((x3-x1)*(x3-x1))+((y3-y1)*(y3-y1))); c=Math.sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); p=(a+b+c)/2; s+=Math.sqrt(p*(p-a)*(p-b)*(p-c));} // формула Герона System.out.println("Площадь многоугольника с "+m+" вершинами = "+s+" кв.ед");//выводим for(int i=0;i<m;i++){ for(int j=0;j<2;j++) System.out.print(A[i][j]+ " "); System.out.println(); } } } вот что получилось ) все вроде работает ) |
Часовой пояс GMT +4, время: 02:17. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.