 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
cheatdomi
Anmeldungsdatum: 18.11.2004 Beiträge: 6
|
Verfasst am: 02.03.2005, 22:29 Titel: Kugel |
|
|
Wie kann ich eine Kugel in QBasic 4.5 anzeigen lassen?
Ein Kreis geht z.B. so:
radius=10
for fi=0 to 2*3.1419
x=100+radius*sin(fi)
y=100+radius*cos(fi)
pset(x,y),15
next |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 02.03.2005, 22:35 Titel: |
|
|
Ähmmm, warum mit PI, SIN und COS???
Mach doch das
Code: |
CIRCLE (x, y), Farbe
|
Was meinst du mit Kugel?
Vielleicht in 3D?
Dieses Thema wurde schon unter
http://forum.qbasic.at/viewtopic.php?t=571
diskutiert.
jb
Zuletzt bearbeitet von jb am 02.03.2005, 22:39, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
cheatdomi
Anmeldungsdatum: 18.11.2004 Beiträge: 6
|
Verfasst am: 02.03.2005, 22:38 Titel: |
|
|
Ich möchte gerne den Abstand bestimmen.
Und ja, ich meine es in 3D. Also die 3D -> 2D. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 02.03.2005, 22:41 Titel: |
|
|
Was meinst du jetzt mit Abstand?
Guck mal in die Monster-FAQ
http://www.antonis.de/faq/index.htm
unter "3d"
Da sind viele Formeln und Tutorials aufgelistet, die dir helfen könnten.
jb |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 02.03.2005, 23:13 Titel: |
|
|
Hm..im Grunde ist auch in 3D-Ansicht jede Kugel ein Kreis
Du musst nur einen gewissen Spiegeleffekt einsetzen, damit der Kreis wie eine Kugel aussieht
Ich glaub das Thema hatten wir schonmal irgendwo _________________
 |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 02.03.2005, 23:16 Titel: |
|
|
Ja, glaub ich auch.
Siehe Link oben.
jb |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.03.2005, 01:57 Titel: |
|
|
Hallo!
Ich habe noch ein altes "Kugelprogramm" von mir gefunden. Vielleicht kannst du was damit anfangen.
Code: | SCREEN 12
pi = 3.141593
wla = 2
wlb = -.5
RANDOMIZE TIMER
GOSUB farben
DO
DO
r = FIX(RND ^ 2 * 30) + 5
st = 1 / r
xe = RND * 640
ye = RND * 480
FOR wa = 0 TO pi STEP st
da = ABS(wa - wla)
FOR wb = -pi / 2 TO pi / 2 STEP st
db = ABS(wb - wlb)
dw = SQR(da ^ 2 + db ^ 2)
IF dw >= pi / 2 THEN f = 0: GOTO schwarz
f = 15 - FIX(dw / (pi / 32))
schwarz:
y = SIN(wb) * r + ye
xr = COS(wb) * r
x = COS(wa) * xr + xe
PSET (x, y), f
NEXT
NEXT
t$ = INKEY$
LOOP WHILE t$ = ""
IF ASC(t$) = 27 THEN END ELSE GOSUB farben
LOOP
farben:
ra = RND * 4
rb = RND * 4
rc = RND * 4
FOR a = 0 TO 15
OUT 968, a
OUT 969, a * ra
OUT 969, a * rb
OUT 969, a * rc
NEXT
RETURN |
Mit wla und wlb wird die Richtung der Lichtquelle festgelegt, Tastendruck wechselt die Farbe, ESC zum Beenden.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 03.03.2005, 15:24 Titel: |
|
|
Hat einer noch das alte, dicke, graugelbliche GW-Basic Buch, welches mit dem alten, dicken, graugelblichen Dos-Buch mitgeliefert wurde bei irgendeiner alten Dos-Version? Warum ich frage?! Weil dort auch mal in einem Beispiel Kugeln (eigentlich ihre Drahtgittermodelle) gezeichnet werden.
Hab das Buch leider gerade nicht zur Hand (bin nämlich gerade im Zivildienst ) _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Thomas Antoni

Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 03.03.2005, 19:18 Titel: GW-BASIC Handbücher zum Herunterladen |
|
|
Die englischen GW-BASIC Handbücher stehen auf der QBasic - E-Book - Seite von www.qbasic.de zum Online lesen und zum Herunterladen zur Verfügung! _________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 04.03.2005, 13:32 Titel: |
|
|
Danke Thomas Antoni
Hier hab ich das Beispiel gleich gefunden:
Code: |
Example 3:
10 'This will draw 5 spheres
20 GOTO 160
50 IF VERT GOTO 100
60 CIRCLE (X,Y),R,C,,,.07
70 FOR I = 1 TO 5
80 CIRCLE (X,Y),R,C,,,I*.2:NEXT I
90 IF VERT THEN RETURN
100 CIRCLE (X,Y),R,C,,,1.3
110 CIRCLE (X,Y),R,C,,,1.9
120 CIRCLE (X,Y),R,C,,,3.6
130 CIRCLE (X,Y),R,C,,,9.8
140 IF VERT GOTO 60
150 RETURN
160 CLS: SCREEN 1: COLOR 0,1: KEY OFF: VERT=0
170 X=160: Y=100: C=1: R=50: GOSUB 50
180 X=30: Y=30: C=2: R=30: GOSUB 50
190 X=30: Y=169: GOSUB 50
200 X=289: Y=30: GOSUB 50
210 X=289: Y=169: GOSUB 50
220 LINE (30,30)-(289,169),1
230 LINE (30,169)-(289,30),1
240 LINE (30,169)-(289,30),1,B
250 Z$=INKEY$: IF Z$="" THEN 250
|
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 05.03.2005, 04:03 Titel: |
|
|
Hallo!
Das mit dem CIRCLE ist aber wirklich nur dazu geeignet, um Gitternetze zu zeichen. Um ein Bild (z.B. eine Weltkarte) auf eine Kugeloberfläche zu legen, war der Ansatz in der ersten Frage schon der richtige.
cheatdomi hat Folgendes geschrieben: | radius=10
for fi=0 to 2*3.1419
x=100+radius*sin(fi)
y=100+radius*cos(fi)
pset(x,y),15
next |
Für die dritte Dimension muss man einen weiteren Kreis senkrecht zum ersten legen.
Diesen zweiten Kreis muss man dann in einer zweiten Schleife abarbeiten.
Code: | SCREEN 12
CLS
WINDOW (-320, 239)-(319, -240)
pi = ATN(1) * 4
grad = pi / 180
ra = 57
FOR a = 0 TO 179
wa = (a - 90) * grad
y = SIN(wa) * ra
rb = COS(wa) * ra
FOR b = 0 TO 179
wb = b * grad
x = COS(wb) * rb
PSET (x, y), 15
NEXT
NEXT |
Das zeichnet natürlich nur eine Scheibe. Wenn man nun aber ein 180x180 Pixel grosses Bild hat, kann man es mit
PSET(x, y), farbe(a, b)
oder so die Punkte entsprechend den Gradzahlen a und b auf eine Halbkugel legen.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 05.03.2005, 21:05 Titel: |
|
|
Skilltronic hat Folgendes geschrieben: |
Das mit dem CIRCLE ist aber wirklich nur dazu geeignet, um Gitternetze zu zeichen. Um ein Bild (z.B. eine Weltkarte) auf eine Kugeloberfläche zu legen, war der Ansatz in der ersten Frage schon der richtige.
cheatdomi hat Folgendes geschrieben: |
radius=10
for fi=0 to 2*3.1419
x=100+radius*sin(fi)
y=100+radius*cos(fi)
pset(x,y),15
next
|
|
Nur, dass hinter
Code: |
for fi=0 to 2*3.1419
|
noch ein
fehlt.
jb |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 05.03.2005, 21:53 Titel: |
|
|
So, jetzt muss ich auch einmal bei diesem amüsanten Thema beteiligen:
http://beilagen.dreael.ch/QB/KUGEL.BAS
Mit SCREEN 13 könnte man die Schattierung noch entsprechend verfeinern... ;-) _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 05.03.2005, 23:21 Titel: |
|
|
Hallo!
Schon ganz nett und meinem ersten Beispiel nicht unähnlich, aber seht euch doch das hier mal an:
http://www.skilltronics.de/runterlader/wkugel.rar
Da sind ausser dem Programm noch zwei Dateien dabei, in denen eine Weltkarte und die Farbpalette passend aufbereitet abgelegt sind.
In meinem vorigen Beispiel ist mir noch ein kleiner Fehler aufgefallen. Das Bild wird spiegelverkehrt und um 90° gekippt auf die Kugel projeziert. Man müsste also schreiben
PSET (x, y), farbe(179 - b, a)
um das auszugleichen.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
cheatdomi
Anmeldungsdatum: 18.11.2004 Beiträge: 6
|
Verfasst am: 12.03.2005, 20:53 Titel: |
|
|
Es hat geklappt. Ich bedanke mich für die schnellen antworten. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|