Python sine/cosine problem.

Started by
11 comments, last by smr 18 years, 10 months ago
On a calculator in degree mode: cos(0)/cos(360) returns 1 cos(90) and cos(270) returns 0 cos(180) returns -1. sin() does pretty close to the opposite. For some reason im not getting these numbers when using the equivolent in python. The docs say cos(x) gives an answer in radians...that should be right as far as I can tell but the numbers im getting are all over the place. Am I doing something wrong or just not using it properly? Any help would be appreciated.
C_C(Enter witty/insightful/profound remark here...)
Advertisement
WOOT! NM I figured it out. Have to convert x to radians first then find the cos()/sin().

Thx anyways.
C_C(Enter witty/insightful/profound remark here...)
NM...that wasnt it...hmmm....
C_C(Enter witty/insightful/profound remark here...)
If the numbers you get are:

cos(0)/cos(360) returns 1/-0.283691
cos(90) and cos(270) returns -0.448074/0.984382
cos(180) returns -0.59846.

Then it's working fine. Translated to radians:

cos(0)/cos(2*pi) returns 1
cos(.5*pi) and cos(1.5*pi) returns 0
cos(pi) returns -1.

FYI, cos doesn't return a value in radians, its argument is in radians. To convert degrees to radians, multiply by pi/180 (0.0174532925...)

[Edited by - smart_idiot on May 28, 2005 1:30:57 PM]
Chess is played by three people. Two people play the game; the third provides moral support for the pawns. The object of the game is to kill your opponent by flinging captured pieces at his head. Since the only piece that can be killed is a pawn, the two armies agree to meet in a pawn-infested area (or even a pawn shop) and kill as many pawns as possible in the crossfire. If the game goes on for an hour, one player may legally attempt to gouge out the other player's eyes with his King.
Thats great and all...let my try to explain what im looking for and maybe that will help...

I have an object that I want to move on an x,y cordinate system based on the direction its facing. The direction its facing is based on north which is 0/360. So if the object is facing 180 degrees it will be moving south.

If cos(x) and sin(x) (x being the direction being faced) returned the numbers im looking for it would be really easy to move the object in the cord system. If it returned what my calculator does it would work. but its not.

Thats what stumping me. I dont know why I cant seem to wrap my brain around this...maybe im tired...it is midnight here.

So any help with this would help.
C_C(Enter witty/insightful/profound remark here...)
Make sure your calculator is set to use radians, or try your math with Google. Also, I'm not sure what you're doing for graphics, but when dealing with pixels and bitmaps the origin is at the top left of the screen and increasing y moves you down. That might screw you up if you were expecting positive y to go up.
Chess is played by three people. Two people play the game; the third provides moral support for the pawns. The object of the game is to kill your opponent by flinging captured pieces at his head. Since the only piece that can be killed is a pawn, the two armies agree to meet in a pawn-infested area (or even a pawn shop) and kill as many pawns as possible in the crossfire. If the game goes on for an hour, one player may legally attempt to gouge out the other player's eyes with his King.
I do the same thing in one of my python programs... Here you go:

distance = elapsed_time * velocitydirection = degrees * math.pi / 180x = math.cos(direction) * distance y = math.sin(direction) * distancenewx = oldx + xnewy = oldy + y


It's just a simplified 2d rotation matrix.
accually this has nothing to do with graphics. just a theoretical grid with 0,0 at the center.

Ok trying what you just put...gimme a sec.
C_C(Enter witty/insightful/profound remark here...)
Thx SMR...thats exactly what im looking for. You too Smart_Idiot.
C_C(Enter witty/insightful/profound remark here...)
MUAHAHAH!!! I love it when code finaly works.

Thx again to the both of you.
C_C(Enter witty/insightful/profound remark here...)

This topic is closed to new replies.

Advertisement