Die Version 3.0 des Raytracing-Programms ist jetzt im Download-Bereich verfügbar. Sie erlaubt die Konfiguration der Szene mit Kameraposition und Position und Radien der Kugeln in einer Eingabedatei.
Raytracing v3.0
Die Suche ergab 238 Treffer
- 17.10.2024, 19:20
- Forum: Programmierung
- Thema: Raytracing
- Antworten: 10
- Zugriffe: 16455
- 06.10.2024, 14:45
- Forum: Programmierung
- Thema: Raytracing
- Antworten: 10
- Zugriffe: 16455
Raytracing v2.0
Version 2.0 bringt zwei neue Funktionen:
- Das Bild kann invertiert werden, was insbes. für einen Ausdruck (Hardcopy) hilfreich ist.
- Das Bild kann als PBM-Datei (Portable Bitmap) gespeichert werden.
- 06.10.2024, 14:43
- Forum: Programmierung
- Thema: Raytracing
- Antworten: 10
- Zugriffe: 16455
Re: Raytracing
Die gewünschte stereoskopische Darstellung ("3D-Ansicht") kann man leicht erzeugen, indem man die Kamaraposition verändert. Das ist z.Z. nur durch Änderung des Programmcodes möglich, weil Kameraposition und Szene hartkodiert sind. D.h. man muss den Code ändern und neu kompilieren, was machbar, aber natürlich etwas umständlich ist. In v3.0 des Raytracing-Programms wird man die Szene, d.h. die Kameraposition und die Position und Radien der Kugeln in einer Szene-Datei konfigurieren können.
- 24.09.2024, 17:54
- Forum: Programmierung
- Thema: Raytracing
- Antworten: 10
- Zugriffe: 16455
Raytracing
Raytracing ist ein Verfahren zum Generieren fotorealistischer Bilder auf einem Computer. Unmöglich auf einem Z80-Rechner, der nicht mal Graustufen unterstützt, geschweige denn Farbe? Nun, seht selbst:
Raytracing Download
Raytracing Download
- 23.09.2024, 09:50
- Forum: Hardware
- Thema: Umfrage: Sammelbestellung interne CF-Card Joyce
- Antworten: 7
- Zugriffe: 3315
Re: Umfrage: Sammelbestellung interne CF-Card Joyce
Ich wäre an beiden Varianten interessiert, wenigstens als Bausatz (vielleicht finde ich ja noch jemanden, der mir das zusammenlöten mag ).
Wie wäre die CF-Karte denn formatiert? Ich nehme mal an, im CP/M-Format? Dann würde mich interessieren, wie man sie vom PC aus am besten mit Daten befüllt.
Wie wäre die CF-Karte denn formatiert? Ich nehme mal an, im CP/M-Format? Dann würde mich interessieren, wie man sie vom PC aus am besten mit Daten befüllt.
- 22.12.2023, 13:59
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 59
- Zugriffe: 75446
Re: BASICODE in Java
Damit das Programm auch von Laien leichter zu bedienen ist, wäre eine Menüzeile mit mind. einem File / Open sehr wünschenswert um die BasiCode-Datei in einer File Selection Box auszuwählen. Dann müsste man nicht mit der Kommandozeile herumhantieren, sondern könnte die JAR-Datei einfach per Doppelklick starten (ein installiertes Java 21 vorausgesetzt).
Derzeit muss man eine Shell bemühen (z.B. Windows cmd) und etwa
eintippen. Natürlich kann man den <Pfad zu Java 21> weglassen, wenn die Umgebungsvariablen korrekt gesetzt sind. Ebenso kann man <Pfad zur BasiCode-Datei> weglassen, wenn man sich bereits in dem Verzeichnis befindet, in dem sich die Datei basicode.jar befindet. Sollte dort auch <Dateiname>.bas zu finden sein, dann kann man <Pfad zur BasiCode-Datei> auch noch weglassen. Der kürzeste Aufruf sieht dann wohl so aus:
Ich habe mal eine erste Version von basicode.jar zum Ausprobieren angehängt:
Derzeit muss man eine Shell bemühen (z.B. Windows cmd) und etwa
Code: Alles auswählen
<Pfad zu Java 21>\java -jar <Pfad zu basicode.jar>\basicode.jar <Pfad zur BasiCode-Datei>\<Dateiname>.bas
Code: Alles auswählen
java -jar basicode.jar <Dateiname>.bas
- 26.11.2023, 15:25
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 59
- Zugriffe: 75446
Re: BASICODE in Java
Wie ist denn der aktuelle Stand? Sind mittlerweile alle gültigen BASICODE-Befehle abgedeckt?
Natürlich erwarte ich nicht, dass schon alles fehlerfrei funktioniert. Ich habe die beiden simplen Testprogramme hello.bas und scroll.bas erfolgreich ausführen können. Dann habe ich mich an etwas Größeres gewagt, nämlich das Programm zur Darstellung von Peano-Kurven, das Thomas hier eingestellt hat. Es bricht mit folgendem Fehler ab:
Exception in thread "main" java.lang.IllegalStateException: line not found: 20
at de.haupz.basicode.ast.ProgramNode.resolveJump(ProgramNode.java:57)
at de.haupz.basicode.ast.ProgramNode.run(ProgramNode.java:37)
at de.haupz.basicode.Main.run(Main.java:33)
at de.haupz.basicode.Main.main(Main.java:49)
Natürlich erwarte ich nicht, dass schon alles fehlerfrei funktioniert. Ich habe die beiden simplen Testprogramme hello.bas und scroll.bas erfolgreich ausführen können. Dann habe ich mich an etwas Größeres gewagt, nämlich das Programm zur Darstellung von Peano-Kurven, das Thomas hier eingestellt hat. Es bricht mit folgendem Fehler ab:
Exception in thread "main" java.lang.IllegalStateException: line not found: 20
at de.haupz.basicode.ast.ProgramNode.resolveJump(ProgramNode.java:57)
at de.haupz.basicode.ast.ProgramNode.run(ProgramNode.java:37)
at de.haupz.basicode.Main.run(Main.java:33)
at de.haupz.basicode.Main.main(Main.java:49)
- 28.09.2023, 08:45
- Forum: Hardware
- Thema: LibrePCB - Freie Software für PCB-Design erreicht Version 1.0
- Antworten: 0
- Zugriffe: 8148
- 03.09.2023, 17:35
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 105284
Re: Fragen und Antworten zum C-Kurs
Da hat wohl die Implementierung der printf-Funktion ein Problem mit Strings, die länger als 32.767 Zeichen sind. Das ist wohl ein Bug in der library.
Wenn du den Code folgendermaßen änderst, dann geht's:
Wenn du den Code folgendermaßen änderst, dann geht's:
Code: Alles auswählen
...
char *p;
printf("Wieviele Sterne? ");
scanf("%u", &i);
buffer = (char*) malloc(i + 1); // ein Byte extra für das String-Ende-Zeichen
if (buffer != NULL) { // sonst haben wir keinen Speicher bekommen
buffer[i] = '\0'; // String-Ende-Zeichen setzen
while(i--) {
buffer[i] = '*'; // String mit Sternchen füllen
}
// printf("%s\n", buffer);
p = buffer;
while (*p != '\0') {
putchar(*p++);
}
putchar('\n');
free(buffer); // Wichtig! Speicher wieder freigeben
...
- 03.09.2023, 16:24
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 105284
Re: Fragen und Antworten zum C-Kurs
Wenn du eine Variable lokal anlegst, also innerhalb einer Funktion, dann legt sie der Compiler auf dem Stack an (es sei denn, du deklarierst sie als static). Damit bekommt jeder Funktionsaufruf seine eigenen lokalen Variablen, wodurch z.B. Rekursion ermöglicht wird. Der Speicherplatz wird zur Laufzeit beim Funktionsaufruf durch Ändern des Stack Pointers (dem Z80-Register SP) reserviert und am Ende der Funktion wieder freigegeben (abermals durch Ändern des Stack Pointers). Man spricht auch von "automatischen Variablen". Sie haben naturgemäß keine festen Adressen, da sie vom Inhalt des Stack Pointers abhängen. Ergo macht die Zuordnung einer festen Speicheradresse keinen Sinn und der Compiler quittiert den Versuch mit einer Fehlermeldung.Paul hat geschrieben: ↑03.09.2023, 09:33 Und gleich noch eine Frage hinterher:
beim zweiten Beispiel hast die Variable ch global definiert.
Ich wollte sie natürlich gleich lokal definieren was der compiler nicht mag.
Um so größer war meine Verwunderung das der Compiler die unveränderte Zeile als globale Variable akzeptiert.
..,
Globale Variablen werden vom Compiler zur Compile-Zeit festen Speicheradressen zugeordnet (dasselbe gilt für static-Variablen). Während des Programmlaufs ändern diese sich nicht mehr. Hier macht es also Sinn, dem Compiler eine feste Adresse mit '@* vorzugeben. Diese verwendet er dann anstelle der Adresse, die er ohne '@'-Klausel automatisch ermittelt hätte.