Come conservare una linea retta (lunghezza infinita, non un segmento di linea) in modo efficiente?
Questa non è una duplicazione di Come rappresentare una linea geometrica a livello di codice ? , perché la domanda collegata riguarda il 3D e non risponde al problema principale riflesso in questa domanda.
Definizione di una linea retta:
Questa domanda riguarda la struttura dei dati, non l'interfaccia utente. Non mi interessa come viene definita o presentata l'equazione (perché non sto facendo un calcolatore grafico).
In sostanza, una retta è un'equazione (non necessariamente una funzione di x
o y
) che, quando viene disegnata su un sistema di coordinate rettangolari, produce una linea infinitamente lunga, di qualsiasi inclinazione (pendenza), a qualsiasi intercettazione (supponendo che l'intervallo in virgola mobile non sia superato).
Pertanto, queste sono tutte equazioni lineari valide:
y = x
y = -2x
y = x + 3
y = 4x + 5
x = 6
y = 7
Stanno tutti per una linea retta, come mostrato in link
Sto provando a creare un tipo (classe o gerarchia di classi) (in Java, se il linguaggio è importante) che può rappresentare una qualsiasi di queste linee rette.
Possibili usi di una linea retta:
- Utilizzato in un'immagine, come
imageline
in GD per disegnare una linea che taglia l'immagine (l'asse Y invertito è un problema minore irrilevante a questa domanda). Ad esempio, l'equazioney = x
può tagliare un'immagine in diagonale. - Memorizzato in un file. La struttura nel file deve essere uguale a quella del codice.
- Implementa i metodi
equals
ehashCode
che funzionano con linee identiche. - Valuta il punto di intersezione di due linee rette.
- Valuta i punti di intersezione di una linea retta e, per esempio, un'equazione quadratica (dato
double a, double b, double c
perax^2 + bx + c = 0
) o un cerchio (datiPoint center
edouble radius
)
La mia domanda
Ho preso in considerazione tre metodi possibili, che verranno elencati come risposta di seguito: link
La mia domanda è, c'è una quarta soluzione? O c'è un modo per minimizzare gli svantaggi di questi metodi?