[Gfoss] Un problema interessante

Andrea Peri aperi2007 a gmail.com
Gio 20 Dic 2012 20:37:44 CET


NOn sono sicuro di aver compreso il problema in ogni suo aspetto.

Io pero' proverei cosi'.

La prima domanda che mi porrei è capire se i punti-quotati sono sulla
medesima proiezione planare della linea di contorno
del poligono3D.

Credo che gli attuali sistemi (come spatialite 4.0) consentano di fare
intersezioni sul piano, ma se sono oggetti in quota esrpimono anche la
quota di contatto per cui dovresti riuscire a farlo.

creare una linea ideale verticale tra il punto quotato e la libea a
quota zero con stesse coordinate x,y.

G1 = MakeLine(MakePointZ(x1 y1 z1), MakePointZ(x1 y1 0));

Intersechi con il contorno del poligono ricavando con la Intersection
le coordinate del punto di intersezione
e a quel punto fai la differenza di quota.

G2 = Intersection(G1, ExteriorRing(PolygonZ));

se ti va bene ottieni un punto se ti va male ottieni un NULL.

Poi una volta ottenuto il punto di intersezione G2,
basta fare la differenza di quota tra i due punti.

Prova cosi' e vedi quanti punti riesci a risolvere.

Infatti il problema è che a causa delle approssimazioni
dell'aritmetica finita, il punto quotato potrebbe non essere sulla
planare del confine.
Se fosse cosi' allora avresti troppi null e non arriveresti allo scopo.



-- 
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------


Maggiori informazioni sulla lista Gfoss