; **************************************************************************** ; * By PBFrance : http://www.pbfrance.com/?url=source&cmd=viewer&val=36 ; **************************************************************************** Procedure Ellipse_rotation(Axex.l, Axey.l, Xrayon.d, Yrayon.d, Rot.d, Debut.l, Fin.l, Couleur.l) ; procedure ellipse by kernadec Protected angle.d, R.d, X.d, Y.d, Posx1.l, Posy1.l, Posx2.l, Posy2.l R = Radian(Rot) For o = Debut To fin Angle = Radian(o) x = Cos(Angle) * Xrayon y = - Sin(Angle) * Yrayon Posx1 = Round(X * Cos(R) + Y * Sin(R), #PB_Round_Nearest) + Axex ;round pour un meilleur tracé Posy1 = Round(X * Sin(R) - Y * Cos(R), #PB_Round_Nearest) + Axey ;round For a better traced If Posx2 = 0 And Posy2 = 0 : Posx2 = Posx1 : Posy2 = Posy1 : EndIf LineXY(Posx2, Posy2, Posx1, Posy1, Couleur) Posx2 = Posx1 Posy2 = Posy1 Next o EndProcedure Procedure chart(Axex.l, Axey.l, Xrayon.d, Yrayon.d, Rot.d, Debut.l, Fin.l, Couleur1.l,Couleur2.l) ; Procedure chart by kernadec If Debut > fin : Swap Debut , Fin : EndIf Ellipse_rotation(Axex, Axey, Xrayon, Yrayon, Rot.d, Debut, Fin, Couleur1) x.l = Axex + Xrayon * Cos(Radian(Debut)) y.l = Axey + Yrayon * Sin(Radian(Debut)) LineXY(Axex, Axey, x , y, Couleur1) x = Axex + Xrayon * Cos(Radian(Fin)) y = Axey + Yrayon * Sin(Radian(Fin)) LineXY(Axex, Axey, x , y, Couleur1) ; Calculating the size of the sector for Fillarea() Secteur.l = Abs(Fin - debut) ; Calcul la taille du secteur pour Fillarea() If couleur1 <> couleur2 And Secteur > 1 x = Axex + ((Xrayon + 0.001) - 2 ) * Cos(Radian(debut + (Fin - debut) / 2 )) ;point medium y = Axey + ((Yrayon + 0.001) - 2 ) * Sin(Radian(debut + (Fin - debut) / 2 )) FillArea(x, y, Couleur1, Couleur2) EndIf EndProcedure Procedure efface_chart(Axex.l, Axey.l, Xrayon.d, Yrayon.d, fin.l, Debut.l, Taille.l, Couleur1.l, Couleur2.l) ; Clears the full chart object.../ set starting loop thickness To 0 To clear all pixels For i = 0 To Taille + 1 ; efface l'objet chart entier départ de la boucle = 0 Chart(Axex, i + Axey, Xrayon, Yrayon, 0, fin, Debut, Couleur1, Couleur2) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, fin, Debut, Couleur1, Couleur2) EndProcedure If OpenWindow(0, 0, 0, 500,500, " Pie Chart 3D animé ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CanvasGadget(0, 10, 10, 480, 480) ;********************************************************************************************************** Taille.l = 13 Axex.l = 205 Axey.l = 225 Xrayon.d = 190 Yrayon.d = 75 Debut.l = 160 Fin.l = 240 For u = 1 To Abs(fin - debut) ; Blue StartDrawing(CanvasOutput(0)) For i = 1 To Taille Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut , Debut + u , RGB(0, 100, 171), RGB(100, 0, 170)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Debut , Debut + u , RGB(0, 0, 226), RGB(0, 0, 225)) StopDrawing() Delay(5) Next u ;********************************************************************************************************** Taille = 16 Axex = 235 Axey = 220 Xrayon = 200 Yrayon = 75 Debut = 240 Fin = 315 For u = 1 To Abs(fin - debut) ; Green StartDrawing(CanvasOutput(0)) For i = 1 To Taille Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut, Debut + u , RGB(2, 182, 2), RGB(0, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Debut, Debut + u , RGB(0, 226, 0), RGB(0, 225, 0)) StopDrawing() Delay(5) Next u ;********************************************************************************************************** Taille = 18 Axex = 250 Axey = 245 Xrayon = 220 Yrayon = 75 Debut = - 48 Fin = 160 For u = 1 To Abs(fin - debut) ; Yellow StartDrawing(CanvasOutput(0)) For i = 1 To Taille Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut, Debut + u, RGB(225, 181, 0), RGB(225, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Debut, Debut + u, RGB(225, 226, 0), RGB(225, 225, 0)) StopDrawing() Next u ;*********************************** CHART EN MODE RETRO *********************************************** ; Taille = 18 ; Axex = 250 ; Axey = 245 ; Xrayon = 220 ; Yrayon = 75 ; Debut = - 48 ; Fin = 160 For u = Abs(fin - debut) To 1 Step - 1 ; Yellow StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut, fin - (Abs(Debut - fin) - u), RGB(225, 181, 0), RGB(225, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Debut, fin - (Abs(Debut - fin) - u), RGB(225, 226, 0), RGB(225, 225, 0)) StopDrawing() Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** Taille = 16 Axex = 235 Axey = 220 Xrayon = 200 Yrayon = 75 Debut = 240 Fin = 315 For u = Abs(fin - debut) To 1 Step - 1 ; Green StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut, fin - (Abs(Debut - fin) - u), RGB(2, 182, 2), RGB(0, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Debut, fin - (Abs(Debut - fin) - u), RGB(0, 226, 0), RGB(0, 225, 0)) StopDrawing() Delay(5) Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** Taille = 14 Axex = 205 Axey = 225 Xrayon = 190 Yrayon = 75 Debut = 160 Fin = 240 For u = Abs(fin - debut) To 1 Step - 1 ; Blue StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Debut, fin - (Abs(Debut - fin) - u), RGB(0, 100, 171), RGB(100, 0, 170)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0,Debut, fin - (Abs(Debut - fin) - u), RGB(0, 0, 226), RGB(0, 0, 225)) StopDrawing() Delay(5) Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** StartDrawing(CanvasOutput(0)) ; DrawText(70, 45, " ROTATIONS CONTRARY TO THE PREVIOUS", RGB(0, 0, 0), RGB(255, 255, 225)) DrawText(70, 70, "ROTATIONS CONTRAIRES AUX PRECEDENTES", RGB(0, 0, 0), RGB(255, 255, 225)) StopDrawing() Delay(1000) ;*********************************** ROTATIONS CONTRAIRE AUX PRECEDENTES *********************************** ;*********************************** ROTATIONS CONTRARY TO THE PREVIOUS *********************************** Taille = 18 Axex = 250 Axey = 245 Xrayon = 220 Yrayon = 75 Debut = - 48 Fin = 160 For u = 1 To Abs(fin - debut) ; Yellow StartDrawing(CanvasOutput(0)) For i = 1 To Taille Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(225, 181, 0), RGB(225, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(225, 226, 0), RGB(225, 225, 0)) StopDrawing() Next u ;********************************************************************************************************** Taille = 16 Axex = 235 Axey = 220 Xrayon = 200 Yrayon = 75 Debut = 240 Fin = 315 For u = 1 To Abs(fin - debut) ; Green StartDrawing(CanvasOutput(0)) For i = 1 To 16 Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(2, 182, 2), RGB(0, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(0, 226, 0), RGB(0, 225, 0)) StopDrawing() Delay(5) Next u ;********************************************************************************************************** Taille = 14 Axex = 205 Axey = 225 Xrayon = 190 Yrayon = 75 Debut = 160 Fin = 240 For u = 1 To Abs(fin - debut) ; Blue StartDrawing(CanvasOutput(0)) For i = 1 To 14 Chart(Axex, i + Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(0, 100, 171), RGB(100, 0, 170)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, Fin, Fin - u, RGB(0, 0, 226), RGB(0, 0,225)) StopDrawing() Delay(5) Next u ;*********************************** CHART ROTATION CONTRAIRE MODE RETRO ********************************* ; Taille = 14 ; Axex = 205 ; Axey = 225 ; Xrayon = 190 ; Yrayon = 75 ; Debut = 160 ; Fin = 240 For u = Abs(fin - debut) To 1 Step - 1 ; Blue StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 100, 171), RGB(100, 0, 170)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 0, 226), RGB(0, 0, 225)) StopDrawing() Delay(5) Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** Taille = 16 Axex = 235 Axey = 220 Xrayon = 200 Yrayon = 75 Debut = 240 Fin = 315 For u = Abs(fin - debut) To 1 Step - 1 ; Green StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(2, 182, 2), RGB(0, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 226, 0), RGB(0, 225, 0)) StopDrawing() Delay(5) Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** Taille = 18 Axex = 250 Axey = 245 Xrayon = 220 Yrayon = 75 Debut = - 48 Fin = 160 For u = Abs(fin - debut) To 1 Step - 1 ; Yellow StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) ; redraws the object modified chart mode-return For i = 1 To Taille ; redessine l'objet chart modifié mode-retro Chart(Axex, i + Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(225, 181, 0), RGB(225, 180, 0)) Next i Chart(Axex, Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(225, 226, 0), RGB(225, 225, 0)) StopDrawing() Next u StartDrawing(CanvasOutput(0)) efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255)) StopDrawing() ;********************************************************************************************************** Delay(300) StartDrawing(CanvasOutput(0)) Box(10, 10, 480, 480, RGB(255, 255, 255)) DrawText(190, 220, " TERMINE ", RGB(0, 0, 0), RGB(255, 255, 225)) StopDrawing() Delay(1000) Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf