Mi piacerebbe scrivere un programma che consenta agli utenti di disegnare punti, linee e cerchi come se fossero una scala e una bussola. Allora voglio essere in grado di rispondere alla domanda "sono questi tre punti collineari?" Per rispondere correttamente, ho bisogno di evitare errori di arrotondamento durante il calcolo dei punti.Le coordinate dei punti costruttivi possono essere rappresentate esattamente?
È possibile? Come posso rappresentare i punti in memoria?
(ho guardato in alcune librerie numerici inusuali, ma non ho trovato niente che sosteneva di offrire sia aritmetica esatta e confronti esatte che sono garantiti per terminare.)
"È necessario evitare l'errore di arrotondamento"? Questo è facile. Effettua l'aritmetica intera a livello di pixel. Che dire dell'errore quando l'utente umano tenta di disegnare i punti e le linee in primo luogo? Se l'utente crea un errore di 1 pixel, è un problema di input? O rivendicherai che i punti non sono colinear quando l'uso umano pensava che dovessero essere? Non capisco come avrai un input davvero preciso. –
"Non capisco come otterrete un input davvero preciso." Facile: l'interfaccia utente si aggancia a punti interessanti, come l'intersezione di cerchi e linee esistenti. Questi punti potrebbero avere coordinate irrazionali. –
Grazie a tutti per le risposte intelligenti. Questo è stato più divertente di quanto mi aspettassi. :) –