Punti di una retta dati l'inizio e la fine
Mi serve un aiuto per un programma che sto sviluppando.
In un piano come questo:

Se ho due punti start(x,y) e end(x,y) che rappresentano il primo e l'ultimo punto di una retta, come faccio ad avere le coordinate di tutti i punti della retta?
Io ho provato a trovare il coefficiente angolare della retta ed ottenere tutti i punti, e per le rette in cui la larghezza era maggiore dell'altezza riuscivo facendo \(\displaystyle y = mx \) ma nel caso in cui l'altezza era maggiore non riuscivo, in quanto non sapevo come farlo.
In un piano come questo:

Se ho due punti start(x,y) e end(x,y) che rappresentano il primo e l'ultimo punto di una retta, come faccio ad avere le coordinate di tutti i punti della retta?
Io ho provato a trovare il coefficiente angolare della retta ed ottenere tutti i punti, e per le rette in cui la larghezza era maggiore dell'altezza riuscivo facendo \(\displaystyle y = mx \) ma nel caso in cui l'altezza era maggiore non riuscivo, in quanto non sapevo come farlo.
Risposte
Come hai trovato il coefficiente angolare della retta?
Se chiami $(x_s,y_s)$ le coordinate di $text(start)(x,y)$ ed $(x_e,y_e)$ le coordinate di $text(end)(x,y)$, le coordinate $(x,y)$ del generico punto della retta che passa per i due punti scelti sono legate dall’equazione della retta:
\[
y = \frac{y_e - y_s}{x_e - x_s}\ (x - x_s) + y_s\;.
\]
\[
y = \frac{y_e - y_s}{x_e - x_s}\ (x - x_s) + y_s\;.
\]
"fftrisete":
Io ho provato a trovare il coefficiente angolare della retta ed ottenere tutti i punti, e per le rette in cui la larghezza era maggiore dell'altezza riuscivo facendo \(\displaystyle y = mx \) ma nel caso in cui l'altezza era maggiore non riuscivo.
Trovo molto strana questa frase, dato che il ragionamento è identico; solo, nel primo caso hai $m<1$ e nel secondo $m>1$. Parli però di programmare ed il numero di pixel deve essere un intero; forse non riesci perché hai fatto i calcoli con numeri interi. Falli invece usando numeri con la virgola, che trasformerai in interi solo al momento di mandarli al disegno.
Un'altra possibile causa è che almeno uno fra i punti iniziali e finali del segmento (non della retta: una retta non ha inizio né fine) esca dal tuo disegno; occorre allora un ragionamento per ottenere altri punti che vi rientrino.
Inoltre, come ti ha fatto notare gugo82, l'equazione $y=mx$ vale solo per le rette passanti per l'origine e non per tutte le rette. Puoi invece usare l'equazione da lui data oppure la sua formula equivalente $y=m(x-x_0)+y_0$, in cui $(x_0,y_)$ è uno dei due punti dati.