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)
TransformSprite3D : explication concrète demandée
Re: TransformSprite3D : explication concrète demandée
Re: TransformSprite3D : explication concrète demandée
Je la posterai ce soir ou demain soir
Re: TransformSprite3D : explication concrète demandée
thank you sir Re: TransformSprite3D : explication concrète demandée
Je la récupèrerai aussidjes a écrit :Je la posterai ce soir ou demain soir
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: TransformSprite3D : explication concrète demandée
Djes 
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: TransformSprite3D : explication concrète demandée
@TazNormand
Ne t'ai point demandé de dessiner un rond? !!!
Ne t'ai point demandé de dessiner un rond? !!!
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)Re: TransformSprite3D : explication concrète demandée
Les degrés, pouah! Je modifie (n'y vois pas de mal Ollivier!) et j'ajoute un cercle par racines carrées.
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)Re: TransformSprite3D : explication concrète demandée
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!)
Alors, en effet, on peut améliorer les perfs et étoffer au paramétrique. Mais on se rend très vite compte que le trigonométrique a le dessus sur le paramétrique dans l'aspect applicatif.
Ce qui donne deux codes:
Le code de base
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)Re: TransformSprite3D : explication concrète demandée
@Djes , elle fonctionne toujours la "lib" SuperSprite3D ?
Faut il l'adapté à directx 9 ? si sa marche , je l'adapte à Linux , avec de nouveau exemples.
Faut il l'adapté à directx 9 ? si sa marche , je l'adapte à Linux , avec de nouveau exemples.
Re: TransformSprite3D : explication concrète demandée
Ollivier> J'adore
J'espère que tu as gardé ton Exel... C'est vrai que c'est un algo de base, et vu qu'on apprend la trigo à l'école avec des degrés, c'est plus simple à comprendre. A part ça, je ne cherchais pas à faire de la vitesse 
G-Rom> Oui, ça fonctionne sans aucun problème! Je ne sais pas si c'était la dernière version, ça remonte à ... 2006!!!!!!
G-Rom> Oui, ça fonctionne sans aucun problème! Je ne sais pas si c'était la dernière version, ça remonte à ... 2006!!!!!!
Re: TransformSprite3D : explication concrète demandée
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
Voici un autre exemple qui part de cette base pour visualiser une rotation simple:
C'est toujours le même noyau:
xF = xI + Cos(angle) * Rayon
yF = yI + Sin(angle) * Rayon (si on veut être rigoureux, c'est le signe - devant Sin() )
Et là, on commence à voir les coulisses de l'utilisation de TransformSprite3D().
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)Re: TransformSprite3D : explication concrète demandée
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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: TransformSprite3D : explication concrète demandée
non , mais je vais mettre tout ca au gout du jour avec une doc.
donc pas maintenant
donc pas maintenant
Re: TransformSprite3D : explication concrète demandée
ah ok, alors je vais m'acheter deux sachets de patience
Merci d'avance
Merci d'avance

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels