Input utente: Bounding Box, best practice?

3

Sto creando una funzione in MATLAB che accetta due coordinate lat / long (angoli opposti di un rettangolo) e restituisce informazioni sui dati nella regione.

Come faccio a raggruppare i miei input?

es. [lat1, long1] e [lat2, long2]; o [lat1, lat2], [long1, long2].

Per semplificare l'utente, al momento ho lats e longs raggruppati come l'ultimo esempio, ma penso che il primo sia un po 'più appropriato per la scienza / matematica.

    
posta tenwest 01.09.2015 - 01:54
fonte

2 risposte

1

Dipende, ovviamente, dalla semantica che l'utente della tua funzione si aspetterebbe, in base al dominio. Con lat1, long1, lat2, long2 stai essenzialmente prendendo due punti: lat1, long1 e lat2, long2 .

  *-(lat1, long1)     --+
  |                     |



  |                     |
  +--                  -* (lat2, long2)

Mentre con lat1, lat2, long1, long2 , stai prendendo i limiti di 4 assi: la parte superiore, inferiore, sinistra e destra. Non l'ho mai visto prima, ma posso immaginare che potrebbe essere comune in alcuni domini, o per esempio quando si utilizza l'aritmetica a intervalli.

  |                     |
 -+---------lat1--------+-
  |                     |
  |                     |
long1                 long2
  |                     |
  |                     |
 -+---------lat2--------+-
  |                     |

Non so come Matlab si occupi di tipi, ma in un linguaggio imperativo convenzionale mi aspetterei che le funzioni prendano argomenti di tipi più descrittivi, ad esempio:

Info rect_info(Point top_left, Point bottom_right)
Info area_info(Range vertical, Range horizontal)

Vale anche la pena considerare la terminologia. Due numeri arbitrari non sono necessariamente un Point , ma puoi rappresentare un Point con essi: se la tua API prende numeri quando vuole dei punti, stai esponendo i dettagli di implementazione all'utente. Potresti fare un ulteriore passo avanti: due% arbitrari Point s non sono necessariamente Rectangle , e due% arbitrari Range s non sono necessariamente Area .

    
risposta data 01.09.2015 - 02:20
fonte
1

In MATLAB un rettangolo in coordinate cartesiane viene tipicamente rappresentato come un vettore di riga a 4 elementi della forma [x, y, larghezza, altezza], dove [x, y] sono le coordinate dell'angolo superiore sinistro. Potresti considerare di seguire la stessa convenzione con latitudine e longitudine.

    
risposta data 17.09.2015 - 21:34
fonte

Leggi altre domande sui tag