A mon avis c'est qu'il y à une erreur dans un des deux shaders.
Godrik, bah je pense que ça vient de la carte graphique elle-même, parce que ça me semble un bruit étrange pour un ventilateur.
Paulop, normalement le code fournit est censé être juste, mais sur le forum du site je vois que je ne suis pas le seul chez qui le triangle n'apparait pas, pourtant ils n'ont trouvé aucunes solutions.
Sinon pour le bruit de la carte graphique, j'avais exactement le même problème quand j'utilisais la SFML 1.6, je sais si pas si ça a un rapport mais....
En fait je pense que le problème viens de glew, parce que quand je ne l'utilise pas bah j'ai pas de problème, le seul truc c'est que si je ne l'utilise pas j'ai pas accès aux nouvelles fonction d'opengl 3, du moins c'est ce que j'ai compris.
Et au cas ou on me pose la question j'ai utilisé glewinfo pour voir et il affirme que ma CG est bien compatible avec la version 3.3 d'openGL.
salut! j'ai une question liée aux mathématiques dans l'espace. la situation est la suivante:
http://sournoishack.com/uploads/1686712450Sans_titre.PNG
donc j'ai un vecteur U dans l'espace, et j'aimerais trouver son vecteur perpendiculaire V, rien que ça. les deux sont contenus dans un plan qui peut être orienté n'importe comment, mais forcément vertical. Y a t-il une manière simple d'obtenir le vecteur V?
en 2d, il suffit d'échanger les deux coordonnées et d'en inverser une, d'après mes recherches, qui n'ont cependant pas abouti pour la situation qui me concerne. c'est de quelque chose de semblable niveau simplicité dont je suis à la recherche. Merci de vos réponses! ![]()
si un jours vous perdez un fichier je vous conseille le freeware recuva : http://www.piriform.com/recuva
jme suis pris un ecran bleu (windows 8
) en voulant compiler du code. après le reboot, le fichier que j’étais entrain d’éditer était devenus vide, il avais toujours la meme taille mais le data etait devenus des NUL (le fichier était remplis de 0x00). je croyais avoir perdu plus de 4000 lignes de code quand recuva ma retrouver le fichier ou une ancienne version. le gros soulagement
le pire c'est que je comptais faire un backup juste après la compilation ![]()
caelacanthe si u=(x y z) v=(0 z -y)
Ah mince je viens de voir la date tu as dû trouver d'ici là...
justement, absolument pas, merci beaucoup
mais le x de V deviendrait forcément égal à zéro? ça me semble quand même bizarre...
"après le reboot, le fichier que j’étais entrain d’éditer était devenus vide, il avais toujours la meme taille mais le data etait devenus des NUL (le fichier était remplis de 0x00)."
comment c'est possible? les fichiers source sont simplement lus pour une compilation, habituellement. ![]()
Hmmm en effet il y a un souci, j'avais mal compris la question je crois ![]()
Pour u=(x, y, z) tu as v=(zx, zy, -(x² + y²)) en fait.
Demo, comme ça on est sur de se comprendre:
On veut:
- v tel que u soit perpendicuaire à v (1)
- le plan P formé par u et v est vertical (2)
Le plan P formé par u et le vecteur (0 0 1) correspond à cette condition, il a pour normale n = u vect (0 0 1) = (y -x 0)
Donc v doit être perpendiculaire à n et à u d'après (1) et (2) ce qui donne v = u vect n = (zx, zy, -(x² + y²))
C'est bien ce que tu veux?
(awé, mes cours de mathématique de l'espace sont très loins en fait
)
On veut:
- v tel que u soit perpendicuaire à v (1)
- le plan P formé par u et v est vertical (2)
c'est exactement ça. il faut que les deux vecteurs soient perpendiculaires, et contenus dans un plan vertical.
c'est pour la suite que je perds le fil... le vecteur (0 0 1)? ne serait-ce pas plutôt le vecteur (0 1 0)?
après, tu fais un produit vectoriel entre U et ce vecteur, par contre, si U est justement colinéaire à cedit vecteur, le produit vectoriel ne fonctionnera pas, voilà pourquoi je me demandais s'il existe un truc simple avec manipulation judicieuse des coordonnées du vecteur d'entrée comme en 2d, en se limitant à un plan parfaitement connu. ![]()
Je prends le vecteur (0 0 1) car je veux que mon plan soit vertical (donc contienne le vecteur 0 0 1). J'ai oublié de préciser, l'axe z part vers le haut dans ma démo. Si c'est l'axe y qui part vers le haut alors oui il faut prendre (0 1 0) et ça te donnera v=(yx, -(x² + z²), yz)
Si u est collinéaire à (0 0 1) nimporte quel vecteur de la forme(a b 0) marchera. (ou de la forme (a 0 b) si c'est l'axe y qui part vers le haut).
Je crois pas qu'on puisse trouver plus simple étant donné que le plan P n'est pas fixé, il dépends des coordonnées x et y de u.
okay, merci pour ces explications. je testerai une implémentation un de ces jours ![]()
Salut !
Je me posais une question (langage C). Je suis occupée à faire un jeu de type rpg en console pour me mettre à l'épreuve et m'entrainer.
Pour le moment, je fais un système de races (que le jouer pourra choisir à la création du personnage), et j'utilise les structure pour cela.
Comme vous vous en doutez, j'aimerais donner des valeurs par défaut selon tel ou tel type de race.
Je fais bien si pour cela j'envoie la variable de type race à une fonction qui selon le choix de l'utilisateur, initialise les valeurs, ou y a-t-il une manière meilleure de procéder ? Par manière meilleure, je veux dire principalement pour la relecture postérieure du code par exemple.
Et un deuxième petite question au passage, par simple curiosité, existe-il un façon pour créer des structures avec des valeurs prédéfinies ?
Merci beaucoup ! ![]()
En C la seule valeur par defaut possible est "whatever is in the memory".
Par contre, tu peux encapsuler ta structure pour que la seule facon de faire une instance est en appelant une fonction particuliere.
Salut à tous,
J'essaye de repartir des points sur un repère de façon aléatoire, mais avec des densités (par exemple plus grande vers le centre, en se raréfiant à mesure qu'on s'en éloigne).
J'ai regardé la méthode de Monte-Carlo, mais j'ai du mal à l'appliquer en code. Faut-il faire une boucle while() ? Ou au contraire partir d'un nombre de point limité qu'on place 1 par 1 avec une boucle for() ?
Je ne demande pas de solutions toutes faîtes, juste quelques indications pour que je puisse programmer ça
Merci pour votre aide
Tu sais ce qu'est une fonction de répartition ? Si oui, tu peux utiliser F^{-1} dans une boucle for de pas constant.
tu peux faire en plusieurs passes par exemple pour un cercle avec un rayon de 25cm:
une passe avec 15 points pour un rayon entre 1 et 10
une passe avec 10 points pour un rayon entre 11 et 20
une passe avec 5 points pour un rayon entre 21 et 25
tu peux aussi faire une while sur la taille du rayon que tu augmente de facon exponentielle jusqu'a la taille maximum.
Chris : j'ai regardé l'article wikipédia, en effet ça a l'air de correspondre à ce que j'aimerais faire, mais concrètement je ne vois pas comment traduire ça en code !
Elite : je pense que je comprends, mais du coup il faut définir manuellement les passes selon le rayon non ?
Tu veux quoi comme répartition des points ?
En fonction de ça, tu doit pouvoir déterminer F(t) = Proba(rayon <= t).
Deux choix typiques sont :
F(t) = 1 - exp(-t) si tu peux avoir des points arbitrairement loin,
F(t) = sqrt(t) si tu veux un rayon entre 0 et 1.
Du coup, ça te donne F^{-1}(t) = -ln(1-t) ou F^{-1}(t) = t^2 selon les cas.
Après, pour placer 1000 points, tu peux faire par exemple :
Pour i allant de 1 à 1000 faire
| a <- random entre -pi et pi
| t <- random entre 0 et 1
| r <- F^{-1}(t)
| placer le point M de coordonnées (r.cos(a), r.sin(a))
|_