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    imagelinein GD per disegnare una linea che taglia l'immagine (l'asse Y invertito è un problema minore irrilevante a questa domanda). Ad esempio, l'equazioney = xpuò tagliare un'immagine in diagonale.
- Memorizzato in un file. La struttura nel file deve essere uguale a quella del codice.
-  Implementa i metodi   equalsehashCodeche 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 cperax^2 + bx + c = 0) o un cerchio (datiPoint centeredouble 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?