Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Kugel

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
cheatdomi



Anmeldungsdatum: 18.11.2004
Beiträge: 6

BeitragVerfasst am: 02.03.2005, 22:29    Titel: Kugel Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.03.2005, 22:35    Titel: Antworten mit Zitat

Ähmmm, warum mit PI, SIN und COS???

Mach doch das
Code:

CIRCLE (x, y), Farbe


durchgeknallt

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
cheatdomi



Anmeldungsdatum: 18.11.2004
Beiträge: 6

BeitragVerfasst am: 02.03.2005, 22:38    Titel: Antworten mit Zitat

Ich möchte gerne den Abstand bestimmen.
Und ja, ich meine es in 3D. Also die 3D -> 2D.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.03.2005, 22:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 02.03.2005, 23:13    Titel: Antworten mit Zitat

Hm..im Grunde ist auch in 3D-Ansicht jede Kugel ein Kreis zwinkern
Du musst nur einen gewissen Spiegeleffekt einsetzen, damit der Kreis wie eine Kugel aussieht

Ich glaub das Thema hatten wir schonmal irgendwo
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.03.2005, 23:16    Titel: Antworten mit Zitat

Ja, glaub ich auch.

Siehe Link oben.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 03.03.2005, 01:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 03.03.2005, 15:24    Titel: Antworten mit Zitat

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 zwinkern )
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 03.03.2005, 19:18    Titel: GW-BASIC Handbücher zum Herunterladen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 04.03.2005, 13:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.03.2005, 04:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 05.03.2005, 21:05    Titel: Antworten mit Zitat

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
Code:

STEP .1

fehlt.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 05.03.2005, 21:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.03.2005, 23:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
cheatdomi



Anmeldungsdatum: 18.11.2004
Beiträge: 6

BeitragVerfasst am: 12.03.2005, 20:53    Titel: Antworten mit Zitat

Es hat geklappt. Ich bedanke mich für die schnellen antworten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz