sprite, plot, clearscreen, flipbuffer....au secours!!!
Publié : lun. 02/janv./2006 4:16
Bonne année!
Après un réveil difficile, j'ai mis en application mes bonnes résolutions!!!
Je suis(un débutant) en train de préparer un "tutoriel" pour profs débutants!
Le sujet est un classique des classes de 3ième et 2nde, la cycloïde!
Pour l'instant j'ai crée une roue, je la fais tourner (sans glissements) mais je ne sais pas comment faire pour afficher la trajectoire d'un point de la roue(la valve ou l'axe) au fur et à mesure avec un plot!
J'ai laissé dans le code le calcul des coordonnées de la valve
(positionXvalve;positionYvalve)
Si ce n'est pas possible, peut-on ouvrir un deuxième écran à coté pour tracer la trajectoire simultanément?
D'autres solutions ou idées sont les bienvenues!!!
Merci d'avance!!!
Après un réveil difficile, j'ai mis en application mes bonnes résolutions!!!
Je suis(un débutant) en train de préparer un "tutoriel" pour profs débutants!
Le sujet est un classique des classes de 3ième et 2nde, la cycloïde!
Pour l'instant j'ai crée une roue, je la fais tourner (sans glissements) mais je ne sais pas comment faire pour afficher la trajectoire d'un point de la roue(la valve ou l'axe) au fur et à mesure avec un plot!
J'ai laissé dans le code le calcul des coordonnées de la valve
(positionXvalve;positionYvalve)
Si ce n'est pas possible, peut-on ouvrir un deuxième écran à coté pour tracer la trajectoire simultanément?
D'autres solutions ou idées sont les bienvenues!!!
Code : Tout sélectionner
;*****************variables utilisées********************
#RayonRoue=64
#LargeurEcran=15*#RayonRoue
#HauteurEcran=4*#RayonRoue
#pi=3.1415927
Angle.f=0
PositionXvalve.f=0
PositionYvalve.f=0
PositionXaxe.f=32
PositionYaxe.f=32
;*****************initialisation**************************
InitKeyboard()
InitSprite()
InitSprite3D()
;*****************écrans*********************************
OpenWindow(1,1,1,#LargeurEcran,#HauteurEcran,#PB_Window_SystemMenu,"La cycloïde"); on ouvre une fenêtre
OpenWindowedScreen(WindowID(1),0,0,#LargeurEcran,#HauteurEcran,1,1,1); on met un écran dedans
;**************dessin du sol****************************
;**************dessin de la roue**********************
CreateSprite(0,128,128,#PB_Sprite_Texture);
StartDrawing(SpriteOutput(0))
Circle(64,64,64,RGB(77, 125, 139));pneu(extérieur
Circle(64,64,48,RGB(0,0,0));pneu(intérieur)
LineXY( 32,32,96,96,RGB(193, 49, 54));
LineXY(32,96,96,32,RGB(193, 49, 54));
Box(104,60,8,8,RGB(249, 235, 6));valve
Box(60,60,8,8,RGB(248, 43, 7));axe
StopDrawing()
CreateSprite3D(0,0)
;*******************************************************
Repeat ; boucle principale
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = #Null
Angle=Angle+1
If Angle*#RayonRoue*#pi/ 180>=#LargeurEcran
Angle=0
EndIf
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
Box(0,3*#RayonRoue,#LargeurEcran,#RayonRoue,RGB(166, 240, 89)); dessin du sol (gazon!)
;*************infos provisoires sur le mouvement*******************
Locate(0,0)
DrawText("Distance=" + StrF((Angle)*32*#pi/ 180))
Locate(0,30)
DrawText("Tour(s)=" + StrF(Angle/360))
;******************************************************************
;**********************position de la valve************************
;PositionXvalve=64*Angle*#pi/180+48*Cos(Angle*#pi/180)+68
;PositionYvalve=48*Sin(Angle*#pi/180)+128
;Plot(PositionXvalve,PositionYvalve,RGB(57, 70, 243))
;******************************************************************
StopDrawing()
;******************affichage de la roue****************************
Start3D()
RotateSprite3D(0,Angle,0)
DisplaySprite3D(0,Angle*#RayonRoue*#pi/ 180,#RayonRoue)
Stop3D()
FlipBuffers ()
ForEver
Merci d'avance!!!