j'avoue que cette lib m'intéresserais aussidjes a écrit :Un truc vite fait à partir de vieux sources (sinon le mieux pour les exemples c la lib supersprite3d de cpl, j'en ai une copie)

j'avoue que cette lib m'intéresserais aussidjes a écrit :Un truc vite fait à partir de vieux sources (sinon le mieux pour les exemples c la lib supersprite3d de cpl, j'en ai une copie)
Je la récupèrerai aussidjes a écrit :Je la posterai ce soir ou demain soir
Code : Tout sélectionner
; Une application de base de la trigonométrie : Dessiner un rond
; (µSoft)
OpenWindow(0, 0, 0, 400, 300, "", $CF0001)
RondRayon.F = 100.0
RondPositionX.F = 200
RondPositionY.F = 150
Repeat
StartDrawing(WindowOutput(0) )
For AngleEnDegraes = 0 To 359
AngleEnRadians.F = AngleEnDegraes * 2.0 * #PI / 360.0
x.F = RondPositionX + Cos(AngleEnRadians) * RondRayon
y.F = RondPositionY + Sin(AngleEnRadians) * RondRayon
Plot(x, y, 0)
Next
StopDrawing()
Until WaitWindowEvent() = 16
CloseWindow(0)
Code : Tout sélectionner
; Une application de base de la trigonométrie : Dessiner un rond
; (µSoft)
OpenWindow(0, 0, 0, 400, 300, "", $CF0001)
StartDrawing(WindowOutput(0) )
x.f = 0
rayon.f = 100
x_centre.f = 120
y_centre.f = 150
Repeat
y.f = Sqr(rayon * rayon - x * x)
Plot(x_centre + x, y_centre + y, 0)
Plot(x_centre + x, y_centre - y, 0)
Plot(x_centre - x, y_centre + y, 0)
Plot(x_centre - x, y_centre - y, 0)
x + 1
Until x = rayon
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
x_centre.f = 220
angle.f = 0
perimetre_cercle_rayon1.f = 2 * #PI
perimetre_notre_cerle.f = 2 * #PI * rayon
pas.f = perimetre_cercle_rayon1 / perimetre_notre_cerle
Repeat
Plot(x_centre + rayon * Cos(angle), y_centre + rayon * Sin(angle), RGB($FF, 0, 0))
angle + pas
Until angle >= perimetre_cercle_rayon1 ;>= au lieu d'= car les flottants manquent toujours de précision
StopDrawing()
Repeat
Until WaitWindowEvent() = 16
CloseWindow(0)
Si tu divises un cercle en un peu plus de 23000 arcs d'angle égal et que tu en fais ta mesure de référence (le «degré perso»Djes a écrit :Les degrés, pouah! Je modifie (n'y vois pas de mal Ollivier!)
Code : Tout sélectionner
; 1.1. Une application de base de la trigonométrie :
; Dessiner un rond avec la fonction Cosinus()
; et sa fonction quadratique Sinus()
; (µSoft)
; Auteurs : Ollivier / Djes
OpenWindow(0, 0, 0, 400, 300, "", $CF0001)
RondRayon.F = 100.0
RondPositionX.F = 200
RondPositionY.F = 150
RondPasDeLAngle.F = 1 / RondRayon
RondCirconference = 2 * RondRayon * #PI
Repeat
StartDrawing(WindowOutput(0) )
For I = 0 To RondCirconference
x.F = RondPositionX + Cos(AngleEnRadians.F) * RondRayon
y.F = RondPositionY + Sin(AngleEnRadians.F) * RondRayon
Plot(x, y, 0)
AngleEnRadians + RondPasDeLAngle
Next
StopDrawing()
Until WaitWindowEvent() = 16
CloseWindow(0)
Code : Tout sélectionner
; 1.2. Une application de base de la trigonométrie :
; Dessiner un rond par une application paramétrique
; du théorème de Pythagore,
; et en déterminer l'analogie trigonométrique
; (µSoft)
; Auteurs : Ollivier / Djes
OpenWindow(0, 0, 0, 400, 300, "", $CF0001)
RondRayon.F = 100.0
RondPositionX.F = 200
RondPositionY.F = 150
Repeat
StartDrawing(WindowOutput(0) )
For I = 0 - RondRayon To 0 + RondRayon
X.F = I
If Random(1) ; Un coup de pifomètre, car...
Y.F = Sqr(RondRayon * RondRayon - X * X) ; Ceci égale...
Else
Y.F = Sin(ACos(X / RondRayon) ) * RondRayon ; ...cela!
EndIf
Plot(RondPositionX + X, RondPositionY - Y, 0)
Plot(RondPositionX + X, RondPositionY + Y, 0)
Next
StopDrawing()
Until WaitWindowEvent() = 16
CloseWindow(0)
Je n'ai plus tout cet ancien matériel d'une marque bouffée par µsoft.Djes a écrit :Ollivier> J'adore J'espère que tu as gardé ton Exel...
A priori, moi non plus puisque je fais le dessin sur une fenêtre... Mais l'algo trigo, lui est optimisé, presque prêt à utiliser des tables au lieu des fonctions et user de l'écran et les "joies" de DirectX.Djes a écrit :A part ça, je ne cherchais pas à faire de la vitesse
Code : Tout sélectionner
; 2. Application trigonométrique d'une rotation
; (µSoft)
; Auteurs : Ollivier
Global RondRayon.F = 100.0
Global RondPositionX.F = 200
Global RondPositionY.F = 150
Global RondPasDeLAngle.F = 1 / RondRayon
Global RondCirconference = 2 * RondRayon * #PI
Global AngleL1.F = #PI / 4.0
Global RayonL1.F = RondRayon
Global AngleL2.F = 3.0 * #PI / 4.0
Global RayonL2.F = RondRayon
Global AngleL12.F
Procedure DrawCircle()
StartDrawing(WindowOutput(0) )
Box(0, 40, 400, 260, #White)
For I = 0 To RondCirconference
x.F = RondPositionX + Cos(AngleEnRadians.F) * RondRayon
y.F = RondPositionY + Sin(AngleEnRadians.F) * RondRayon
Plot(x, y, 0)
AngleEnRadians + RondPasDeLAngle
Next
Lx1 = RondPositionX + Cos(AngleL1 + AngleL12) * RayonL1
Ly1 = RondPositionY + Sin(AngleL1 + AngleL12) * RayonL1
Lx2 = RondPositionX + Cos(AngleL2 + AngleL12) * RayonL2
Ly2 = RondPositionY + Sin(AngleL2 + AngleL12) * RayonL2
LineXY(Lx1, Ly1, Lx2, Ly2, 0)
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 400, 300, "", $CF0001)
ScrollBarGadget(0, 10, 10, 324, 16, 0, 628, 20)
Repeat
AngleL12 = GetGadgetState(0) / 100.
DrawCircle()
Until WaitWindowEvent() = 16
CloseWindow(0)
Je viens de tester en PB 4.50 ça marche bien (en activant OpenGL dans les options de compilation sinon écran noir), par contr, ni a t il aucun fichier d'aide de dispo ?djes a écrit :C'est là : http://djes.free.fr/purebasic/SuperSprite3D.rar et là : http://djes.free.fr/purebasic/SuperSprite3D2.rar