Ich versuche, einen Graphenrechner zu erstellen und ihn korrekt auf einem "Canvas" darzustellen. Wenn ich die HTML-Datei lade und x schreibe, beginnt sie beispielsweise von der oberen linken Ecke bis zur unteren rechten Ecke. Das Problem ist also, dass die Grafik auf dem Kopf steht und keine negativen Werte enthält. Ich weiß, dass die Leinwand beginnt von (0,0) in Pixelwert in der oberen linken Ecke und endet bei (300,300) in der unteren rechten Ecke. Ich will es von diesem Link so etwas wie die grüne Leinwand angezeigt werden: http://www.cse.chalmers.se/edu/course/TDA555/lab4.htmlMeine Leinwand den Graphen korrekt anzeigen lassen
points :: Expr -> Double -> (Int,Int) -> [Point]
points exp scale (x, y) = [(x, realToPix (eval exp (pixToReal x))) | x<-[0..(fromIntegral canWidth)] ]
where
pixToReal :: Double -> Double --converts a pixel x-coordinate to a real x-coordinate
pixToReal x = x * 0.02
realToPix :: Double -> Double --converts a real y-coordinate to a pixel y-coordinate
realToPix y = y/0.02
Vielen Dank für den Vorschlag. Die y-Achse wurde korrekt verschoben, aber wenn x = x * 0,02 -150 angewendet wird, verschiebt sich die y-Achse nicht zur Mitte und verschwindet stattdessen. –
Ah, mein Fehler. Danke, dass du es aufgezeigt hast. Ich habe es aus der Post heraus bearbeitet. –
Keine Probleme, danke für die Hilfe. x = (x - ((fromIntegral y)/2)) * Die Skala hat sich als richtig erwiesen. –