 |
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 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 14.12.2005, 21:51 Titel: Elliptische bahnen |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 22:00 Titel: |
|
|
Nimm doch einfach einen größeren Radius und verlege den Mittelpunkt weiter nach rechts...
So sollte es auch klappen...
jb |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 14.12.2005, 22:12 Titel: |
|
|
dann gibts aber keinen feinen übergang mehr... |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 22:18 Titel: |
|
|
Du kannst den Start- und Endpunkt doch im Bogenmaß angeben
jb |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 14.12.2005, 22:18 Titel: |
|
|
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 |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 14.12.2005, 22:20 Titel: |
|
|
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 Ifer[/code] |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.12.2005, 22:31 Titel: |
|
|
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)
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 |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 14.12.2005, 22:50 Titel: |
|
|
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 |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 15.12.2005, 08:17 Titel: |
|
|
@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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.12.2005, 15:37 Titel: |
|
|
@Michael_Frey:
..oder du machst 'ne function Pi As Double..
Aber es ist wohl doch zu umständlich
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 15.12.2005, 18:07 Titel: |
|
|
#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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.12.2005, 18:19 Titel: |
|
|
Ooops, das hatte ich nicht bedacht
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
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..  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 15.12.2005, 19:02 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|