Re: Portal BGE

Posté par gui36fr le 21/10/2010 23:36:31
Parfois le portail bleu disparait ! C'est une erreur ou c'est voulu ?

Citation :
le produit vectoriel

Je l'avais complètement oublié celui-là !

Bon, pour le système de rotation, je suis resté avec les complexes pour éviter des sinus et cosinus dans tout les sens.

Voilà ce que j'ai à te proposer, tu n'aura qu'à greffer ce code où tu voudras, mais fais un ou deux tests car doué comme je suis il y a peut-être des erreurs :
from bge import logic as gl

#on aura besoin de phase pour le calcul d'angle d'un complexe, du sinus et cosinus
from cmath import phase
from math import cos, sin

#on defini i
i = complex(0, 1)

x, y, z = 0, 1, 2

rot = Joueur.orientation

#ici tu mets les coordonnees de la normale du portail "d'envoi"
nor_1 = ...
#la le portail de "reception"
nor_2 = ...

#calcul des modules des projections des normales pour ajuster la longueur des projections
mod_1 = (nor_1[x]**2 + nor_1[y]**2)**0.5
mod_2 = (nor_2[x]**2 + nor_2[y]**2)**0.5

#phi est l'angle entre le joueur et la normale du premier portail sur le plan horizontal
phi = phase(complex(-rot[y][x], -rot[y][y])) - phase(complex(nor_1[x]/mod_1, nor_1[y]/mod_1))

#calcul de l'angle entre la normale du 2eme portail et le joueur
angle =  phase(complex(nor_2[x]/mod_2, nor_2[y]/mod_2)) -phi

axey = complex(cos(angle), sin(angle))
axex = -i*axey

Joueur.orientation = [[axex.real, axex.imag, 0.], [axey.real, axey.imag, 0.], [0., 0., 1.]]


Voilà pour l'instant. Si ça ne marche pas fait moi signe et je trouverais un moment où j'aurais le temps d'y réfléchir plus profondément

@+

EDIT : correction des erreurs du script

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=27924&post_id=347349