[Java] Program na obliczanie pola powierzchni ze współrzędnych dowolnego wielokąta

Witam, 

mam do napisania program na obliczenie pola powierzchni ze współrzędnych dowolnego wielokąta.

Zamysł miałam taki, że najpierw trzeba wprowadzić liczbę wierzchołków, a następnie odpowiadające im współrzędne.

Moje pytanie brzmi : jak zadeklarować współrzędne dla wcześniej wymyślonej liczby wierzchołków? Do tej pory udało mi się napisać coś takiego:

 

 

 

import java.util.Scanner;

 

public class Pole {

public static void main (String args[]){

 

Scanner wspolrzedne=new Scanner (System.in);

 

System.out.println(“Podaj ilość wierzcholkow”);

int n=wspolrzedne.nextInt();

if (n<=2) {

System.out.println(“To nie jest wielokat”);

}

else

System.out.println(“Podaj współrzędne wielokata - najpierw X pkt a potem Y”);{

for (int i=0; i<n; i++){

double x=wspolrzedne.nextDouble();

double y=wspolrzedne.nextDouble();

}

 

Czy ta forma jest akceptowalna?

Ponadto jak teraz odnieść te współrzędne do wzorów na obliczenie pola?

 

Czy mógłby mi ktoś coś doradzić?

 

Środowisko Eclipse.

//Jestem początkująca, więc proszę o wyrozumiałość.

 

Pozdrawiam.

}

}

Kiedy poznasz już liczbę wierzchołków, kolejne współrzędne czytaj i zapisuj do listy wewnątrz pętli for.

Trochę nie w temacie. Możesz podać wzór, z którego policzysz pole dowolnego wielokąta na podstawie współrzędnych. Głównie chodzi mi o sytuację, jak rozróżnisz takie dwa wielokąty, w którym pole ograniczone przez czarne linie jest wspólne, ale różnią się one częścią niebieską/czerwoną. To jest, jeden z wierzchołków, można zinterpretować, że przynależy w różny sposób do wielokąta (pokrywa inne pole), ale wszystkie współrzędne są identyczne?

I co to zmieni? Jak wygląda wzór, który umożliwi ci podanie odpowiedzi, wiedząc czy podałeś je idąc “wzdłuż” boku oraz znając ich współrzędne?

Można najpierw przeskalować figurę o jakąś dodatnią wymierną liczbę φ, tak aby wierzchołki były w punktach o współrzędnych całkowitych. Wtedy można skorzystać ze wzoru Picka (art na Wikipedii), a następnie podzielić wynik przez φ^2.

Zakładając, że współrzędne wszystkich wierzchołków są wymierne. Oraz zakładając, że ten wielokąt nie ma samo przecięć i dziur. Co raz mniej dowolny ten wielokąt się robi :stuck_out_tongue:

Nie są w stanie być niewymierne, bo zmienna w komputerze ma określoną dokładność dziesiętną, czyli jest wymierna (da się ją wyrazić w postaci ‘ξ / 10^n’ gdzie ξ oraz n są liczbami całkowitymi. Natomiast sam sposób przyjmowania danych wymusza brak “dziur”. Przecież zgodnie z ustaleniem dwa kolejno wprowadzone punkty tworzą końce boku wielokąta => powstaje graf spójny, a dziura jest “synonimem” braku spójności grafu.

Edit: faktycznie, nie pomyślałem o n.p. przykładzie z Wikipedii:

http://i.imgur.com/yyvGV8J.jpg

Jednakże podejrzewam, że autor o takim przypadku też nie pomyślał.

Dobrze, ale to tak naprawdę nie wiele zmienia. Poza tym możemy przyjąć model inny. niż ten, który jest uznany za standardowy w przypadku liczb rzeczywistych (IEEE-754). Przecież mogę sobie reprezentować je jako:

Przepraszam, faktycznie nie podałam wzoru.

 

Wzór brzmi:

 2P = Suma[(Yi+1 -Yi-1 )*Xi