Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1190 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Wolf 3D , raycasting et gestion des vecteurs.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Wolf 3D , raycasting et gestion des vecteurs.

n°2215801
archseven
Posté le 10-01-2014 à 23:44:36  profilanswer
 

bonjour je vous écris car je fais un wolf3D (j'essaie) j'ai compris le principe du raycasting en théorie mais en pratique j'ai du mal.
 
le principe j'ai les coordonnées de la position du joueur, par exemple (5.5 , 5.5)  
la map est un double tableau de char, 1 = plein 0 = vide)
 
la vision du joueur est une série de vecteur pour chaque X de l'image, qui partent de la position du joueur si la case est pleine j'affiche un mur en fonction de la longueur du vecteur (distance entre l'oeil et l'obstacle), plus la distance est grande plus le mur sera petit. bref
 
j'ai deux question :
 
par exemple
la vision fait 100 degré radians et le plan de projection est à une demi case donc 0.5
on a un tableau de 8 sur 8 char avec les cases en bordure à 1 donc plein et on est situé en (5.5, 5.5) on regarde verticalement vers le haut du tableau...
je voudrais calculé le vecteur en position X le plus a droite de la fenêtre.
 
par logique je vois bien que le vecteur sera (x1 = 5.5, y1 = 5.5 ; x2 = 7, y2 = 3).
 
Mais comment savoir en pratique que le vecteur va traverser la case pleine en ces positions d'arrivée, je sais qu'il faut utilliser les sinus et cosinus mais je ne comprend pas les formules que j'ai dans mon cours tel que l'équation paramétrique X' = Xcos(angle) - Ysin(angle) ; Y' = Xsin(angle) + Ycos(angle).
 
2eme question quand je fais un système D et que j'essaie de calculer l'hypothènuse par rapport au coté adjacent avec l'angle j'obtiens des résultat incohérent.
 
je ne peux pas copier coller mon code car pas sur cet ordi et pas encore configurer internet, mais ca ressemble a ca
 
double angle;
double adj;
double hyp;
 
angle = 1;
hyp = 1 / cos(angle);
 
vu que le cosinus en math c'est adjacent sur hypothenuse, si l'angle est de 1 l'hypothénuse sera légerement plus grande que l'adjacent donc adj sur hyp = 0.99 et des poussières inversé ca donne 1,1 et quelques mais quand j effectue le code ci desus ca me donne 1 / 0.54 donc pas loin de 2.
 
si quelqu'un sait manier les cos et les sin en C, ca me serait d'une grande aide.
 
Merci.

mood
Publicité
Posté le 10-01-2014 à 23:44:36  profilanswer
 

n°2215805
SICKofitAL​L
misanthrope
Posté le 11-01-2014 à 01:28:23  profilanswer
 

Regardes sur ce tuto : http://www.permadi.com/tutorial/raycast/
Tu verras que c'est plus "simple" qu'il n'y parait ;)
 
Edit :
jetes un oeil là aussi, la technique est un peu différente, mais ya du code qui peut servir de base : http://lodev.org/cgtutor/raycasting.html


Message édité par SICKofitALL le 11-01-2014 à 01:29:42

---------------
We deserve everything that's coming...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Wolf 3D , raycasting et gestion des vecteurs.

 

Sujets relatifs
Pont entre ciel gestion commercial et SQL/php - OU Access voir autre..Difficulté dans la gestion alternée de deux formulaires
[RESOLU][php]pb gestion des accents dans formulairegénérer des previews de modèles 3D
gestion de la réponse Y / N de Xcopy /P en MSDOS (WS2003 R2)gestion d erreur, rollback
Aide pourde la gestion de base de données sans Acces[XLib] Gestion des fenêtres filles sans XQueryTree
Recherche developpeurs pour jeu de gestionGestion du temps entre deux commandes?
Plus de sujets relatifs à : Wolf 3D , raycasting et gestion des vecteurs.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR