Kurve zwischen Punkten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

joKe

Betreff: Kurve zwischen Punkten

BeitragDi, März 30, 2004 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ne Mathematische Frage

Sagen wir mal ich hab von 2 Punkten die Koordinaten die auf der X - Achse 100 auseinander liegen .... nun will ich die beiden nicht mit einer Graden sondern geschwungen verbinden wie macht man sowas ?!?

danke im vorraus , j0k3
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra]

Kryan

BeitragDi, März 30, 2004 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
man könnte es mit sinus machen
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Boris0190

BeitragDi, März 30, 2004 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
kommt drauf an, wie du die Kurfe haben willst. wenns ein einfacher Halbkreisbogen sein soll reicht sinus. Wenn nich, dann nimm ne Parabelgleichung. Meld dich, wennde mehr hilfe dazu brauchst, dann schreib ich was auf *G*
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one
 

Ava

Gast

BeitragDi, März 30, 2004 18:36
Antworten mit Zitat
Huhu J0k3,

Ich kann Dir eine Funktion anbieten, die ich mir mal erarbeitet habe, vielleicht kann die Dir ja irgendwie weiterhelfen.

Code: [AUSKLAPPEN]
Graphics 800, 600, 16, 2


Global start_x = 100
Global start_y = 300
Global steps = 1000

Repeat
  SetBuffer BackBuffer() : Cls
  For i = 0 To steps - 1
    time# = (1.00 / steps) * i
    Plot bezierCurve#(start_x, start_x + 200, MouseX() - 200, MouseX(), time#), bezierCurve#(start_y, star_y - 200, MouseY() - 200, MouseY(), time#)
  Next
   
   time2# = (time2# + 0.01) Mod 1.00
   Oval bezierCurve#(start_x, start_x + 200, MouseX() - 200, MouseX(), time2#) - 5, bezierCurve#(start_y, star_y - 200, MouseY() - 200, MouseY(), time2#) - 5, 10, 10

  Flip
Until KeyHit(1) : End


; --------------------------------------------------------------------------------------------------------------------------------------
;   errechnen einer Bezierkurve  /  Startpunkt  /  Startpunkt BCP  /  Endpunkt BCP  /  Endpunkt
; --------------------------------------------------------------------------------------------------------------------------------------


Function   bezierCurve#(x1#, x2#, x3#, x4#, time#)

   Return   (x1# * ((1 - time#) ^ 3)) + (x2# * 3 * time# * ((1 - time#) ^ 2)) + (x3# * 3 * (time# ^ 2) * (1 - time#))  + (x4# * (time# ^ 2)) 

End Function


Zur Erklärung (falls ich mich jetzt noch genau erinnere):
x1# und x4# sind die Endpunkte der Kurve.
x2# und x3# sind die "Hilfspunkte", durch die die Kurve geht.
time# ist die Position innerhalb der Kurve(0.0 = x1# / 1.0 = x4#)

Der restliche Code ist nur eine Hilfe und soll die Anwendungweise demonstrieren. Müsstest halt einfach mal n bissel mit den Werten (vorallem halt x2# und x3#) rumprobieren! Very Happy

Liebe Grüsse
~+ Ava +~

Boris0190

BeitragDi, März 30, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh hätt auch noch was, is allerdings ne symetrische Kurfe à la Sinus Smile
Code: [AUSKLAPPEN]
Global a#,b#,x#,y#,c#
Graphics 800,600,16,1
SetBuffer BackBuffer()
x=200 ;x Koordinate Erster Punkt
y=280;x Koordinate zweiter Punkt
While Not KeyHit (1)
   c=((y-x)/180);Wegen dem Sinus müssen alle Differenzen von x und y durch 180 geteilt werden (Einheitskreis)
   Cls
   Color 255,255,0
   For a=1 To 180 ;Wegen Einheitskreis 180°
       Line (x-c)+(a*c),Sin(a-1)*b+x+50,x+(a*c),Sin(a)*b+x+50 ;Zwischen beiden Sinuswerten ne Linie malen
   Next
   If KeyDown(200) Then b=b-1 ;Wert für den Sinusmultiplikator verringern
   If KeyDown(208) Then b=b+1 ;Wert für den Sinusmultiplikator erhöhen
   If KeyDown(203) Then y=y-1 ;Den 2.Punkt nach links bewegen
   If KeyDown(205) Then y=y+1 ;Den 2.Punkt nach rechts bewegen
   Flip
Wend

Ich hoffe es hilft dir Smile
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one

joKe

BeitragDi, März 30, 2004 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
@Kryan : watt heisst hier Trash ??? ... nicht so vorlaut mein lieber ^^

@Ava : Danke ... mal gucken was ich damit anfangen kann ... ist nicht 100% das was ich suche aber scchonmal ein anfang !!!!

@Boris : Deins guck ich mir auch mal an , aber ymetrische Kurven ist eher schlecht
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra]

Kryan

BeitragDi, März 30, 2004 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist meine signatur Laughing
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Triton

BeitragDi, März 30, 2004 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
...die du übrigens bitte entfernst.

Kryan

BeitragDi, März 30, 2004 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
andere haben auch so komische sigs, " ich schreibe auch "sigs:" hin, ok Very Happy
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

TheShadow

Moderator

BeitragDi, März 30, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
b.l.i.t.z.b.a.s.e - gibts glaub bezier-codes im archiv
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Vertex

BeitragDi, März 30, 2004 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
http://blitzbasic.com/codearcs...p?code=652
Weiss garnicht wo Markus noch seinen Hermitecode hat.
mfg olli
vertex.dreamfall.at | GitHub
 

Ava

Gast

BeitragMi, März 31, 2004 5:48
Antworten mit Zitat
@the Shadow

Schau mal was ich da oben gepostet habe... Rolling Eyes

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group