[AGK2] Fehleranalyse 1

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

hectic

Sieger des IS Talentwettbewerb 2006

Betreff: [AGK2] Fehleranalyse 1

BeitragFr, Apr 07, 2017 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun schlage ich mich mit einem Problem herum nur um am Ende festzustellen, dass der Fehler wohl nicht an mir liegt. Ich bitte daher jeden, der AGK2 auf seinem Rechner hat, folgenden Code zu testen:

Code: [AUSKLAPPEN]

SetErrorMode(2)


//••••·•••·••·•··•···•···· ··· ·· ·  ·   ·    ·


SetScreenResolution(400,400)
SetVirtualResolution(400,400)
SetWindowSize(400,400,0)
SetWindowPosition(GetMaxDeviceWidth()/2-200,GetMaxDeviceHeight()/2-200)


//••••·•••·••·•··•···•···· ··· ·· ·  ·   ·    ·


while GetRawKeyPressed(27)=0
   
   drawline( 200,200, 200,200, -1,-1)
   drawline( 203,200, 220,200, -1,-1)
   
   sync()
endwhile


Wie man unschwer erkennen kann, sollte die erste Linie die sowohl auf x=200 und y=200 beginnt wie auch an der selben Position endet, auf gleicher Höhe liegen wie die zweite Linie, die ebenfalls auf Höhe 200 gezeichnet werden sollte, aber dafür eine gewisse Länge von 17 Pixeln hat.

Bei mir wird die Linie einen Pixel höher gezeichnet als die Linie die nur aus einem Punkt besteht. Leider gibt es anscheinend kein DrawPlot-Befehl, denn sonst hätte ich die gesamte Linie durch Punkte schon selbst gezeichnet. Ich nutze AGK2 aktuell auf LXDE (Lubuntu) Linux 4.8.0-45 welches auf Ubuntu 16.10 aufgebaut wurde.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

PSY

BeitragSa, Apr 08, 2017 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

funzt bei mir wie's soll. Sowohl aufm Win10 als auch per Broadcast auf nem Galaxy S4.

Haste mal ohne SetScreenResolution getestet?
PSY LABS Games
Coders don't die, they just gosub without return

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 08, 2017 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte mich zur Einarbeitung für AGK2 an etwas einfacheres wagen und habe angefangen einen Pixeleditor zu programmieren. Da solche meistens nicht in Vollbild laufen, muss natürlich SetScreenResolution gesetzt werden. Zumindest immer dann, wenn der User die Fenstergröße ändert. Sonst wäre da ja gar nichts mehr pixelgenau. Aber auch ohne SetScreenResolution verhält es sich fehlerhaft.

Beispiel-Code: [AUSKLAPPEN]
SetErrorMode(2)

SetWindowPosition(GetMaxDeviceWidth()/2-GetDeviceWidth()/2,GetMaxDeviceHeight()/2-GetDeviceHeight()/2)

local dx as integer
local dy as integer
local mx as integer
local my as integer


while GetRawKeyPressed(27)=0
   
   dx=GetDeviceWidth()
   dy=GetDeviceHeight()
   
   SetScreenResolution(dx,dy)
   SetVirtualResolution(dx,dy)
   
   mx=20 //GetPointerX()-20
   my=20 //GetPointerY()-20
   
   drawline( mx,my, mx,my, -1,-1)
   
   drawline( mx-3,my, mx-8,my, -1,-1)
   drawline( mx+3,my, mx+8,my, -1,-1)
   
   drawline( mx,my-3, mx,my-8, -1,-1)
   drawline( mx,my+3, mx,my+8, -1,-1)
   
   sync()
endwhile

Ergibt bei mir 4x vergrößert:
user posted image

Die Linie die nur als Punkt dargestellt wird, hat dabei die richtige Koordinate. Die anderen Linien werden anscheinend gerundet und dadurch verschoben
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

PSY

BeitragSa, Apr 08, 2017 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
GetDeviceWidth() und GetDeviceHeight() liefern bei mir 1777x1000
Daher kommt auch der Rundungsfehler

(edit) hmm eben hatte ich als rückgabewerte 1024x768, nach ein paar Tests plötzlich 1829x1000. Muss ich mir mal genauer ansehn...


Der Code hier läuft zB:


Code: [AUSKLAPPEN]
SetErrorMode(2)

local dx as integer
local dy as integer
local mx as integer
local my as integer

dx=GetMaxDeviceWidth()
dy=GetMaxDeviceHeight()


SetVirtualResolution(dx,dy)
SetWindowPosition(GetMaxDeviceWidth()/2-GetDeviceWidth()/2,GetMaxDeviceHeight()/2-GetDeviceHeight()/2)


while GetRawKeyPressed(27)=0
   
   mx=20 //GetPointerX()-20
   my=20 //GetPointerY()-20
   
   drawline( mx,my, mx,my, -1,-1)
   
   drawline( mx-3,my, mx-8,my, -1,-1)
   drawline( mx+3,my, mx+8,my, -1,-1)
   
   drawline( mx,my-3, mx,my-8, -1,-1)
   drawline( mx,my+3, mx,my+8, -1,-1)
   
   sync()
endwhile
PSY LABS Games
Coders don't die, they just gosub without return

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 08, 2017 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das mit ungeraden Fenstergrößen hatte ich zuerst auch in Verdacht. Bestätigt sich bei mir aber nicht. Generell werden Linien anders berechnet als solche die nur als Punkt gezeichnet werden.

Dein Beispiel ist bei mir nur zu etwa 50% korrekt. Man muss also das Fenster in mehreren Positionen variieren, bis man eine passende Stelle findet. Allerdings wird in deinem Beispiel kein SetScreenResolution gesetzt, wodurch auch der ganze Inhalt vom Fenster skaliert wird. Das bringt mir für mein Beispiel leider nicht viel. Ein Pixeleditor muss pixelgenau sein.

Mal sehen ob ich mit meinem schlechtem English einen Bugreport mache. Könnte schon schwierig werden, da der Support für Linux zwar durchaus gegeben aber von den AGK2-Entwicklern nicht so sehr ins Visier genommen wird.

edit1:

so, Bugreport habe ich eben ins offizielle Forum gestellt und befindet sich aktuell in "APPROVAL".

PSY

BeitragSa, Apr 08, 2017 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup,

dauert n bischen bis Dein Post sichtbar ist, is quasi ein Newbieschutz.
PSY LABS Games
Coders don't die, they just gosub without return

PSY

BeitragDi, Apr 11, 2017 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Bug müsste gefixed sein laut patch news, aber patch steht noch aus...müsste die nächsten Stunden kommen
PSY LABS Games
Coders don't die, they just gosub without return

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 12, 2017 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wurde tatsächlich umgefixt. Doch es sind neue Fehler rein gekommen. Habe ich eben gemeldet. Mal sehen wann es abgeschlossen ist.

Der selbe Code wie bereits oben gepostet, sieht nun so aus:
user posted image

Bei einem Kreis aus Linien entstehen nun richtungsabhängige Rundungsfehler:
user posted image
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group