bezier ?!
Übersicht

getloseBetreff: bezier ?! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 800,600,16,2 ;strg: ;MouseHit(1) : Punkt setzen ;MouseHit(2) : Strecke berechnen ;sinn der ganzen sache ist, das man punkte ;setzt und daraus, anhand der winkel, einen ;smoothen "track" berechnen lässt. ;das problem : der erste punkt wird ;noch richtig berechnet, aber der zweite ;dagegen komplett falsch. ;Ps : das mit dem fehlenden übergang, von 0 zu 359, ;ist KEIN fehler. hab es nur noch nicht integriert. Global mpx,mpy,mx,my,psize=10,lthick=2,track_image Type points Field x# Field y# End Type font=LoadFont ("verdena",14,1) SetFont font SetBuffer BackBuffer() While Not KeyHit(1) Cls mx=MouseX() my=MouseY() If MouseHit(1) Then AddPoint() If MouseHit(2) Then ;Erst die Funktion "CreateSmoothTrackImage()" anpassen ;mpx=mpx-(old_mx-mx) ;mpy=mpy-(old_my-my) CreateSmoothTrackImage() EndIf GetInfosAboutPoint() If Not img=0 Then DrawImage img,0,0 DrawPoints() old_mx=mx old_my=my Flip Wend Function AddPoint() points.points=New points points\x=mx-mpx points\y=my-mpy End Function Function DrawPoints() For points.points=Each points Color 150,230,120 Rect points\x-(psize/2)+mpx,points\y-(psize/2)+mpy,psize,psize Color 150,120,110 Rect points\x-((psize/2)-lthick)+mpx,points\y-((psize/2)-lthick)+mpy,(psize-(lthick*2)),(psize-(lthick*2)) Next End Function Function GetInfosAboutPoint() For points.points=Each points If RectsOverlap (mx,my,1,1,points\x-(psize/2)+mpx,points\y-(psize/2)+mpy,psize,psize) Then Color 200,200,220 Rect points\x+psize-3+mpx,points\y-3+mpy,StringWidth("PosX : "+points\x)+6,(FontHeight()*2)+6 Color 100,100,120 Rect points\x+psize-2+mpx,points\y-2+mpy,StringWidth("PosX : "+points\x)+4,(FontHeight()*2)+4 Color 230,230,255 Text points\x+psize+mpx,points\y+mpy,"PosX : "+points\x Text points\x+psize+mpx,points\y+FontHeight()+mpy,"PosY : "+points\y EndIf Next End Function Function CreateSmoothTrackImage() If Not track_image=0 Then FreeImage track_image track_image=CreateImage (GraphicsWidth(),GraphicsHeight()) SetBuffer ImageBuffer(track_image) z.points=First points If z.points=Null Then Return 0 If After z.points=Null Then Return 0 track_step_size#=1 ;also 1 Pixel pro Schritt winkel_step#=4 ;die Kurve geht also Pro Schritt einen Richtungswechsel von 4 Grad an a.points=After First points b.points=Before a.points ziel_winkel#=(ATan2((a\y#-b\y#),(a\x#-b\x#))) act_posx#=b\x act_posy#=b\y ziel_posx#=a\x ziel_posy#=a\y act_winkel#=0 While k=0 If act_winkel#<ziel_winkel# Then act_winkel#=act_winkel#+winkel_step# If act_winkel#>ziel_winkel# Then act_winkel#=act_winkel#-winkel_step# old_px#=act_posx# old_py#=act_posy# act_posx#=act_posx#+Cos(act_winkel#)*track_step_size# act_posy#=act_posy#+Sin(act_winkel#)*track_step_size# ziel_winkel#=(ATan2((a\y#-act_posy#),(a\x#-act_posx#))+360) Mod 360 SetBuffer BackBuffer() ;<-- debug Color 255,255,255 Line old_px#,old_py#,act_posx#,act_posy# drawpoints() ;<-- debug Flip ;<-- debug debug(act_posx#,act_posy#,ziel_posx#,ziel_posy#,act_winkel#,ziel_winkel#,kk) If act_posx#>ziel_posx#-3 Then If act_posx#<tiel_posx#+3Then If act_posy#>ziel_posy#-3 Then If act_posy#<tiel_posy#+3 Then ende=1 EndIf EndIf EndIf EndIf If ende=1 Then kk=1 If ende=1 Then a.points=After a.points If a.points=Null Then Goto end1 b.points=Before a.points ziel_winkel#=(ATan2((a\y#-act_posy#),(a\x#-act_posx#))+360) Mod 360 ; <-- :( ziel_posx#=a\x ziel_posy#=a\y ende=0 EndIf Wend .end1 SetBuffer BackBuffer() Return track_image End Function Function debug(w1#,w2#,w3#,w4#,w5#,w6#,w7#) SetBuffer BackBuffer() Color 200,100,100 Rect 0,0,100,140 Color 255,255,255 Text 10,2,w1# Text 10,22,w2# Text 10,42,w3# Text 10,62,w4# Text 10,82,w5# Text 10,102,w6# Text 10,122,w7# Flip End Function :/ ich verzweifle langsam |
||
morszeck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und was sollen wir machen? Gehe mal auf www.blitzbase.de da findest du eine fertige Routine... | ||
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB |
getlose |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
den beitrag hättest du dir schenken können "admin" husky ![]() wenn ich was fertiges will würde ich hier nicht nachfragen. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@getlose_back
Was soll denn das mal werden ? |
||
getlose |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So ne Art Streckeneditor in 2D der das ganze dann in 3D erstellt.
Meine Mathekenntnisse sind nur leider unter aller Sau. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group