J'écris un programme avec SDL. Je configure l'écran en 600x600. Je dessine ensuite un cercle sur les fenêtres. Je tire au hasard l'ensemble de l'écran avec des points et enfin compter combien de points sont dans le cercle, ce qui peut être utilisé pour estimer la superficie du cercle. Mais j'ai trouvé que si j'initialiser la fenêtre à plus grande (comme 1024 * 768) alors la même méthode diminuera la précision du calcul de la surface (dans une petite mesure mais pas si petite). Je veux savoir augmenter la résolution des fenêtres ne contribue pas à améliorer la résolution de ce problème? Alors, comment puis-je profiter de la plus grande résolution?concernant la résolution et l'exactitude dans SDL
Répondre
Ensuite, je dessine un cercle sur les fenêtres. Je tire au hasard l'ensemble de l'écran avec des points et enfin compter combien de points sont dans le cercle, ce qui peut être utilisé pour estimer la superficie du cercle.
Zone de cercle est égal à pi*(r^2)
. Où "r" est le rayon du cercle.
Mais je trouve que si j'initialiser la fenêtre pour plus
Votre méthode ne produira pas des résultats fiables à moins générateur de nombres aléatoires est parfait Cela signifie qu'il doit produire une distribution uniforme absolument parfaite de points , ce qui ne va pas arriver. Aussi, vous aurez besoin de connaître la zone d'un "hit", ce qui sera un gros problème.
Si vous insistez pour réinventer la roue (et évitez d'utiliser pi*(r^2)
pour une raison inconnue), alors au lieu de "tirer des points aléatoires". il suffit de numériser l'image ligne par ligne et de calculer le nombre de points qui se trouvent à l'intérieur du cercle. Il va probablement aussi beaucoup plus vite que d'essayer d'abuser du générateur de nombres pseudo-aléatoires. Et vous pouvez accélérer le processus (en perdant la précision) et au lieu de vérifier chaque pixel, vérifiez tous les deuxièmes pixels (et chaque rangée), tous les trois, tous les quatre et ainsi de suite (distribution uniforme parfaite). Ce sera beaucoup plus fiable et prévisible que votre abus PRNG.
- 1. SDL exit fullscreen
- 2. des questions concernant la résolution Solr de gestionnaire et de s'échapper
- 3. SDL, ffmpeg et Android
- 4. SDL - (Hardware) Pixel Scaling
- 5. SDL Camera et l'arrière-plan
- 6. Embedding SDL dans GTK +
- 7. concernant div et jquery
- 8. comment lire la résolution d'écran - et changer cette résolution?
- 9. SDL et Xcode. Générez et exécutez Erreur
- 10. dans la résolution Boost.Python
- 11. Comment implémenter la séquence d'échappement dans SDL
- 12. Concernant Authlogic et la redirection de page
- 13. Problèmes concernant `slice` et` append` dans Go
- 14. violation d'accès en utilisant SDL
- 15. image n'apparaît pas dans SDL
- 16. core dump dans SDL, où?
- 17. concernant Extjs Grid et préchargement?
- 18. Confusion concernant axe descendant et '//'
- 19. comment utiliser SDL dans Linux?
- 20. OpenGL/SDL problème dans Ubuntu
- 21. Confusion concernant Android et TDD
- 22. Question concernant IHttpModule.Dispose et Application_End
- 23. Concernant la sortie gzgrep
- 24. Questions concernant PHP et mootools
- 25. Masquage de la souris Cursor/Warp (SDL 1.3)
- 26. SDL et les méthodes principales() iOS conflit
- 27. PIL Draw.text et la Basse Résolution
- 28. C++ et SDL- Erreur de violation d'accès
- 29. Question concernant dealloc et applicationWillTerminate
- 30. Lazy résolution de chargement et la dépendance
Peut-être parce que 1024x768 n'est pas carré, donc il y a plus de points en dehors du cercle? – Kos
Juste par intérêt, pourriez-vous pas travailler sur la zone du cercle en trouvant plutôt son rayon et en évaluant 'pi * r^2'? Ou est-ce que je manque quelque chose? –
Aussi comment générez-vous vos nombres aléatoires? 'rand()' n'est pas assez aléatoire si vous voulez faire des numériques. Inclure '' et utiliser 'std :: mt19937', vérifiez si cela aide –
Kos