Newsgroup: it.comp.lang.visual-basic
Titolo: [forse OT] area poligono

qcheduno sa come calcolare l'aera di un poligono conoscendo i vertici
dello stesso?
grazie
___________________________________________
"in fondo anche l'amore è un sovrappensiero..."
m.querc...@sis-ter.it
Togli NOSPAM dall'e-mail per rispondere.

dello stesso?
Fai il modulo del prodotto vettore di 2 lati.
Se non sai che significa, approfondiamo :)
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-IV --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

Se non sai che significa, approfondiamo :)
Questa non sarebbe male saperla...
Ciao

Questa non sarebbe male saperla...
+++ Prima parte: spiegazione di quello che intendevo
Piccola premessa di geometria: l'area di un parallelogrammo e'
fondamentalmente base * altezza. Il volume di un prisma anche non
retto e' area di base * altezza.
Partiamo dal parallelogrammo.
Se hai le coordinate dei 4 vertici, basta che ti crei i 2 vettori
rappresentativi di 2 lati adiacenti e poi che ne fai il prodotto
vettore.
Intuitivamente, l'area e' la base per l'altezza. La base e' un lato a
piacere. L'altezza e' la proiezione di un lato adiacente alla base
sulla perpendicolare alla base. Che guardacaso e' proprio il lato per
il seno dell'angolo compreso tra i 2 lati.
Quindi devi fare:
area=lato1 * (lato2 * sin alpha)
che si nota immediatamente che e' il modulo del prodotto vettore dei 2
lati.
Una volta che hai l'area di base, se devi fare il volume di un prisma,
la moltiplichi per l'altezza. Nuovamente, l'altezza e' la proiezione
del terzo lato --quello concorrente ai primi 2 in uno spigolo-- lungo
la perpendicolare alla base, ovvero e' la lunghezza del lato per il
coseno dell'angolo che questo forma con l'altezza --che e' la
perpendicolare alla base--, da cui hai immediatamente che il volume e'
il prodotto misto dei 3 lati che partono da un vertice.
+++ Seconda parte: risposta alla domanda originaria
Non so per quale motivo, avevo letto che voleva fare l'area di un
parallelogramma... Non e' vero :) Chiedeva l'area di un poligono
qualsiasi. Per farlo mi vengono in mente 2 sistemi, uno piu' grezzo e
veloce e facilmente generalizzabile a qualsiasi poligonale, l'altro
piu' raffinato specifico per quadrilateri.
1. metodo raffinato. Costruisci il vettore che congiunge 2 vertici
opposti. Diciamo i vertici A e C. Questo fara' da base a 2 triangoli
che si troveranno su questa base. Poi costruisci le 2 altezze come
rette di minima distanza dei vertici B e D dalla base AC --sono tutte
formule note che non ricordo--. A questo punto e' immediato calcolare
l'area..
2. metodo grezzo ma efficace per qualsiasi poligonale di cui si ha
l'array delle coordinate dei punti. Fai un calcolo per trapezi.
Prima di tutto, sposti il sistema di riferimento in modo che tutti i
punti stiano nel quadrante con x>0 e y>0 --cosi' risolvi in partenza
il problema che nasce se hai meta' poligono a y positivo e meta' a y
negativo o la stessa situazione sulla x--. Questo e' relativamente
facile e lo salto. Eventualmente ne riparliamo.
Al solito, ABCD sono i vertici. Ora fai l'area sotto il lato AB:
(xb-xa)*(yb+ya)/2
Ora calcoli quella sotto il lato BC
(xc-xb)*(yc+yb)/2
E ora le altre 2
(xd-xc)*(yd+yc)/2
(xa-xd)*(ya+yd)/2
Naturalmente, 2 di queste saranno positive e 2 saranno negative
--y1+y2 e' sempre positivo, mentre x1-x2 da' 2 volte un risultato
positivo e 2 volte uno negativo--.
Ora le sommi e ne fai il valore assoluto e l'area e' fatta. Il valore
assoluto e' necessario perche' se giri in senso orario viene positiva
mentre se giri in senso antiorario viene negativa.
Naturalmente, se hai una curva a 5 vertici, basta che calcoli una
ulteriore area e lo stesso vale per n punti, con n grande a piacere
--ci vuole solo del tempo in piu'--.
Spero di essere stato chiaro. Eventualmente, ripeto ed approfondisco.
Questo secondo procedimento e' anche una delle varianti dell'algoritmo
di un tale di cui non ricordo il nome, che permette di calcolare
l'integrale di una curva di cui e' nota la funzione matematica
discretizzandola in un numero finito di punti consecutivi --che e'
quello che ho fatto in un programma dove calcolavo parametri meccanici
di profili di travi particolari--.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!


 ha scritto nel messaggio
news:99po6t092ue23ua07...@4ax.com...


Ciao al Ng,
uso VB5 con CR4,6
come faccio a nascondere o a disabilitare,
in anteprima di stampa di CR,
la possibilita' di inviare mail, di stampare su file ...
Grazie
    Steve

