FRACTALIS 4 : ALGO. DE REMPLISSAGE ET POO EN VB .NET
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018
-
17 févr. 2003 à 11:33
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011
-
14 avril 2007 à 13:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011 14 avril 2007 à 13:07
de rien :)
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 14 avril 2007 à 08:07
Merci, mais je suis en train de corriger cette source et j'ai tout simplement enlevé les thread, car dans plusieurs bouquins j'ai trouvé que les thread était déconseillés avec le GDI (alors que pourtant c'était une démo d'animation multithread en GDI qui m'avais donnée l'idée d'utiliser les threads). Au final, les threads ne servent à rien du tout ici, un simple DoEvents à intervalle régulier suffit à traiter les événements de l'interface, et cela marche parfaitement maintenant (c'est vrai qu'en DotNet2, le bug du thread devient problématique, mais cela n'apparaissait pas en DotNet1).
Mais je suis en train aussi de deboguer un système qui combine en POO les QuadTree et l'algo de remplissage de façon à tracer plus rapidement les fractales, mais il y a encore un petit bug de précision (anomalie des pixels), à suivre donc.
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011 14 avril 2007 à 01:24
protection thread safe a rajouté (quand je click droit pour le panneau de reglage ca plante) :
dans le fichier =>FrmConfig.vb :
Public WriteOnly Property iAvancement%()
...Set(ByVal iVal%)
......Me.pbAvancement.Value = Math.Min(iVal, 100) ' pb : ProgressBar
...End Set
End Property
===================A remplacer par ====================
Public WriteOnly Property iAvancement%()
...Set(ByVal iVal%)
......SetpbAvancementValue(iVal)
...End Set
End Property
Private Delegate Sub SetpbAvancementValueCallBack(ByVal iVal%)
Private Sub SetpbAvancementValue(ByVal iVal%)
...If Me.pbAvancement.InvokeRequired Then
......Dim dlg As New SetpbAvancementValueCallBack(AddressOf SetpbAvancementValue)
......Me.Invoke(dlg, New Object() {iVal})
...Else
......Me.pbAvancement.Value = Math.Min(iVal, 100) ' pb : ProgressBar
...End If
End Sub
(dsl pour les "." je me rapelle jamais si il vire les espace tout seul ou pas)
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 12 juil. 2005 à 13:14
Pour info, Fractalis est actuellement mon seul logiciel .Net dont le bytecode fonctionne tel quel sous Mono (donc sous linux !), affaire à suivre pour mes autres logiciels...
www.go-mono.com/archive/1.1.8/windows/mono-1.1.8-gtksharp-1.9.5-win32-0.0.exe
cs_Geff
Messages postés192Date d'inscriptionvendredi 2 mars 2001StatutMembreDernière intervention10 janvier 2006 29 avril 2003 à 20:37
kool sympa comme code je vais le prendre comme base pour voir a quoi ressemble le VB.net, ca me tente bien, mais le probleme c'est que j'ai windows 98 SE et que le SDK ne fonction pas sur ce systeme! Donc passage obligé a 2000! M'enfin! Mandelbrot je l'ai vu en vrai, a une conférence, chouette gar bien sympa! ;)
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 27 mars 2003 à 11:58
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 17 févr. 2003 à 11:33
Attention, pour ceux qui veulent réutiliser la classe ClsPile, j'ai corrigé 2 bugs qui ne se voient pas dans le remplissage, mais qui se verront sans doute dans d'autres applications :
Public Function bParcourirPile() As Boolean
' On parcours la pile et on renvoit True si on reboucle
m_iIndicePileL += 1
' Bug de la version 4 corrigé : > et non >=
If m_iIndicePileL > m_iIndicePileMax Then _
m_iIndicePileL 0 : bParcourirPile True
End Function
Public Function bEmpiler(ByVal iX%, ByVal iY%, ByVal iPas%) As Boolean
bEmpiler = True
' Si on atteint la fin de pile, on réutilise les emplacements
' au début de la pile
' Bug de la version 4 corrigé : m_iIndicePileE + 1 <> m_iIndicePileL
If m_iIndicePileE + 1 = m_iIndicePileMax And _
m_iIndicePileE + 1 <> m_iIndicePileL Then m_iIndicePileE = -1
...
14 avril 2007 à 13:07
14 avril 2007 à 08:07
Mais je suis en train aussi de deboguer un système qui combine en POO les QuadTree et l'algo de remplissage de façon à tracer plus rapidement les fractales, mais il y a encore un petit bug de précision (anomalie des pixels), à suivre donc.
14 avril 2007 à 01:24
dans le fichier =>FrmConfig.vb :
Public WriteOnly Property iAvancement%()
...Set(ByVal iVal%)
......Me.pbAvancement.Value = Math.Min(iVal, 100) ' pb : ProgressBar
...End Set
End Property
===================A remplacer par ====================
Public WriteOnly Property iAvancement%()
...Set(ByVal iVal%)
......SetpbAvancementValue(iVal)
...End Set
End Property
Private Delegate Sub SetpbAvancementValueCallBack(ByVal iVal%)
Private Sub SetpbAvancementValue(ByVal iVal%)
...If Me.pbAvancement.InvokeRequired Then
......Dim dlg As New SetpbAvancementValueCallBack(AddressOf SetpbAvancementValue)
......Me.Invoke(dlg, New Object() {iVal})
...Else
......Me.pbAvancement.Value = Math.Min(iVal, 100) ' pb : ProgressBar
...End If
End Sub
(dsl pour les "." je me rapelle jamais si il vire les espace tout seul ou pas)
12 juil. 2005 à 13:14
www.go-mono.com/archive/1.1.8/windows/mono-1.1.8-gtksharp-1.9.5-win32-0.0.exe
29 avril 2003 à 20:37
27 mars 2003 à 11:58
Microsoft .NET Framework Redistribuables en français :
http://download.microsoft.com/download/NETFrameworkRedistributable/Install/1.0/W982KMexp/FR/dotnetredist.exe
17 févr. 2003 à 11:33
Public Function bParcourirPile() As Boolean
' On parcours la pile et on renvoit True si on reboucle
m_iIndicePileL += 1
' Bug de la version 4 corrigé : > et non >=
If m_iIndicePileL > m_iIndicePileMax Then _
m_iIndicePileL 0 : bParcourirPile True
End Function
Public Function bEmpiler(ByVal iX%, ByVal iY%, ByVal iPas%) As Boolean
bEmpiler = True
' Si on atteint la fin de pile, on réutilise les emplacements
' au début de la pile
' Bug de la version 4 corrigé : m_iIndicePileE + 1 <> m_iIndicePileL
If m_iIndicePileE + 1 = m_iIndicePileMax And _
m_iIndicePileE + 1 <> m_iIndicePileL Then m_iIndicePileE = -1
...