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:

Elliptische bahnen

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



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 14.12.2005, 21:51    Titel: Elliptische bahnen Antworten mit Zitat

Ich wollte eigentlich nur fragen, ob es eine formel gibt, um einen pixel/kreis/quadrat elliptisch um einen mittelpunkt kreisen zu lassen.

gibts sowas?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 14.12.2005, 22:00    Titel: Antworten mit Zitat

Nimm doch einfach einen größeren Radius und verlege den Mittelpunkt weiter nach rechts...
So sollte es auch klappen...

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



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 14.12.2005, 22:12    Titel: Antworten mit Zitat

dann gibts aber keinen feinen übergang mehr...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 14.12.2005, 22:18    Titel: Antworten mit Zitat

Du kannst den Start- und Endpunkt doch im Bogenmaß angeben verwundert

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



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 14.12.2005, 22:18    Titel: Antworten mit Zitat

Sicher gibt es das.

Einfache, Schnelle Methode:
Siehe Referenz, Eintrag Circle, Parameter Anfangswinkel und Endwinkel
http://fb.exp-soft.de/r.php?s=CIRCLE

Kompliziertere, vielseitigere Methode:
Code:
SCREEN 19

Dim AS DOUBLE rad ' Winkel im Bogenmaß
Dim As Integer x, y ' Koordinaten d. Punktes
Dim As Integer xRadius, yRadius
CONST pi = 3.141592654

xRadius = 20
yRadius = 10

For rad = 0 To 2 * pi Step .01
   x = COS(rad) * xRadius + 400
   y = SIN(rad) * yRadius + 300

   PSET (x, y)
Next
Sleep

Hier wird eine Ellipse mit Seitenverhältnis 2:1 auf die Bildschirmmitte gezeichnet
Wenn du xRadius oder yRadius anpasst, bekommst du andere Seitenverhältnisse.

Umrechnen ins Bogenmaß:

rad = (deg / 180) * pi

Bzw:

deg = (rad / pi) * 180


Have a nice day
Ciao
Dusky_Joe
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 14.12.2005, 22:20    Titel: Antworten mit Zitat

Servus!

Code:
(x*x)   (y*y)
----- + ----- = 1
(a*a)   (b*b)


a und b ist die maximale größe in x bzw. y richtung


Gruß
Lutz böse Ifer[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 14.12.2005, 22:31    Titel: Antworten mit Zitat

Hi,
Wer sich in Mathe auskennt, kann auch problemlos in
Dusky_Joe hat Folgendes geschrieben:
Umrechnen ins Bogenmaß:

rad = (deg / 180) * pi

Bzw:

deg = (rad / pi) * 180
ersetzen mit:
rad=(deg/45)*Atn(1)
deg=(rad/Atn(1)*45
Wobei ich für Pi immer 4*Atn(1) empfehle(leichter zu merken und einzutippeln) grinsen
Grüße
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 15.12.2005, 18:52, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 14.12.2005, 22:50    Titel: Antworten mit Zitat

das was ich suchte, hab ich jetz gefunden:

Code:


'you just need one screen
screen 20,16,1,1
'hide mouse
setmouse ,,0

T!=0
DO
   'separe calculations from drawing (to make drawing faster)
   T!=T!+.01
        'lisajous curves (that fills the screen)
   X1=512+ 400* sin(2*t!)
   y1=384+320*sin(3*t!)
   
   X2=512+ 400* sin(2.1*(t!+.4))
   y2=384+320*sin(3.2*(t!+.4))
   
   X3=512+ 400* sin(1.81*(t!+.2))
   y3=384+320*sin(1.11*(t!+.2))
   
   X4=512+ 400* sin(2.16*(t!+.25))
   y4=384+320*sin(2.9*(t!+.25))
   
   
   'block refreshing
   screenlock
   'clear screen
   cls
   'draw it
   circle (x1,y1),50,&hc0c0c0,,,,F
   circle (x2,y2),45,&hffff00,,,,F
   circle (x3,y3),45,&h00ffff,,,,F
   circle (x4,y4),45,&hff0000,,,,F
   'wait for sync to avoid flickering (this keeps a constant speed too)
   screensync
   'let the screen refresh again
   screenunlock
LOOP UNTIL LEN(INKEY$)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 15.12.2005, 08:17    Titel: Antworten mit Zitat

@ytwinky
Also wenn ich Pi brauche, mach ich
#Define pi 4*Atn(1)
oder auch
const pi=4*Atn(1)
Dann ist sind die Abgeleiten Formel logischer und das weg optimiren der 4 übernimmt der Compiler.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.12.2005, 15:37    Titel: Antworten mit Zitat

@Michael_Frey:
..oder du machst 'ne function Pi As Double..
Aber es ist wohl doch zu umständlich zwinkern
Auf alle Fälle darf der Wert von Pi im Programm nicht verändert werden können, ist schon richtig.
btw:Ich habe auch irgendwo ein Programm|File mit Pi auf 2000 Stellen genau(???), aber das ist für FB natürlich unbrauchbar, da es keinen Sinn hat, für Berechnungen Zahlen unterschiedlicher Genauigkeit zu verwenden.
Deshalb benutze ich die FB-Funktionen, da so der 'Fehler' für alle Zahlen derselbe ist und somit nicht mehr wichtig wird.
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 15.12.2005, 18:07    Titel: Antworten mit Zitat

#define pi 4#*atn(1#) gab unter QB n genaueres PI, vllt is das in FB immernoch so, ich denk ma schon.. weil so rechnet der beides als double und nich nur als single.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.12.2005, 18:19    Titel: Antworten mit Zitat

Ooops, das hatte ich nicht bedacht geschockt
Danke für den Tipp, wird natürlich SOFORT umgesetzt!
Gruß
ytwinky
[Edit]
@MisterD:
Bringt aber nix, wie der folgende
Code:
'$include: "vbCompat.bi"
Function Pi1 As Double
   Function=4*Atn(1)
End Function

Function Pi2 As Double
   Function=4#*Atn(1#)
End Function

Sub ShowIt(byVal Titel As String, byVal Wert As Double)
  Const el=21
  ?String$(el-Len(Titel), " "); Titel; Format$(Wert, "0." &String$(25, "0"))
End Sub

#Define Pi3 4*Atn(1)
#Define Pi4 4#*Atn(1#)
Const Pi5=4*Atn(1)
Const Pi6=4#*Atn(1#)
ShowIt("Function 4*Atn(1)=", Pi1)
ShowIt("Function 4#*Atn(1#)=", Pi2)
ShowIt("Define 4*Atn(1)=", Pi3)
ShowIt("Define 4#*Atn(1#)=", Pi4)
ShowIt("Const 4*Atn(1)=", Pi5)
ShowIt("Const 4#*Atn(1#)=", Pi6)
Sleep
zeigt, ist aber nicht schädlich zwinkern
Es läßt sich vllt. bei Tutorien und Dokumentationen einsetzen, wenn es darauf ankommt, zu zeigen, daß wirklich Double-Werte benutzt werden
War aber gut, daß wir mal drüber gesprochen haben.. zwinkern
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 15.12.2005, 19:02    Titel: Antworten mit Zitat

Code:
screen 12
? 4#*atn(1#)
? 4*atn(1)
sleep

Gibt zweimal:
3.14159265358979
Beides gibt das gleiche und wenn jetzt einer sagt, der Bildschirm würde stellen abschneiden, dann will ich sehen, wieso er die Präzision braucht (weil sie eben nicht angezeigt wird) ...
Zum Verleich mein Taschenrechner:
3.14159265359
und das mit den Stellen die er nicht Anzeigt, aber berechnet.

Und noch ein Vergleich, der Windows-"Tachenrechner":
3.1415926535897932384626433832795
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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