On 19 déc. 07, at 10:22, Souvarine wrote:
> For your task there is an easy way to go : Just create a vector
> oriented
> toward north with your scene (world) as parent. Then create a vector
> with your character as parent and oriented toward the front of your
> character. And that's it, any time you want to check the
> orientation of
> your character from north you use the angle_to method with those two
> vectors. Easy :)
But take care that this vector may not be in the horizontal plane
(as the north vector is). Therefor, the angle_to methode will not
return the exact angle to north. you have project this vector on the
horizontal plane
(example where the horizontal plane's equation is "y=0" (or any
constant))
# Having
field = World()
north = Vector(field,43,0,53) # the 0 is mandatory. The two other
value (43, and 54) have to be set as wished)
agent= Body(field)
# You get the angle to north with :
agent_front = Vector(agent,0,0,-1) # you get the agent front
agent_front %= field # convert the agent_front vector in the field
coordonate
agent_front.y # project the vector on the horizontal plane
angle = agent_front.angle_to(north) # calculate the angle to north
(yeah it's the most useful comment
#######################################
### But beware ! ! ! This is the angle to north, not the orientation,
I mean than east and west will have the same value. You have to
determine this another way.
# but when your north vector run along the X ou Z axis you just have
to test the value of the other axis
# Having
north = Vector(field,0,0,-1) # the north run along the Z axis
#add this after angle calculation
if agent_front.x < 0: # If the vector is at East.
angle = 360-angle
It may be a good idea to make a tutorial of it. :-)
Have fun.
--
marmoute
_______________________________________________
Soya-user mailing list
[email protected]
https://mail.gna.org/listinfo/soya-user