forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Are sin/cos boken/non-standard in pspdev?

 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development
View previous topic :: View next topic  
Author Message
Kojima



Joined: 26 Jun 2006
Posts: 275

PostPosted: Sat Jul 22, 2006 9:42 pm    Post subject: Are sin/cos boken/non-standard in pspdev? Reply with quote

Are sin/cos different than usual implentations? I ask cos I've experienced a number of problems when porting the rotation/matrix code of my engine.

I convert the angle (In range of 0-360) to a radian and log the output in a txt file. the output is below.
Note the dramatic change in output from angle 1 to angle 2.

Here's my degree to radian function,

Code:

const float PI = 3.14159265;

inline float DegToRad(float ang)
{

   return ang*180.0f/PI;
}



Code:

Angle:1
 Cos Output:0.733657
 
Angle:2
 Cos Output:0.076504
 
Angle:3
 Cos Output:-0.621401
 
Angle:4
 Cos Output:-0.988294
 
Angle:5
 Cos Output:-0.828736
 
Angle:6
 Cos Output:-0.227722
 
Angle:7
 Cos Output:0.494597
 
Angle:8
 Cos Output:0.953451
 
Angle:9
 Cos Output:0.904414
 
Angle:10
 Cos Output:0.373608
 
Angle:11
 Cos Output:-0.356214
 
Angle:12
 Cos Output:-0.896286
 
Angle:13
 Cos Output:-0.958918
 
Angle:14
 Cos Output:-0.510747
 
Angle:15
 Cos Output:0.209491
 
Angle:16
 Cos Output:0.818137
 
Angle:17
 Cos Output:0.990972
 
Angle:18
 Cos Output:0.635929
 
Angle:19
 Cos Output:-0.057864
 
Angle:20
 Cos Output:-0.720834
 
Angle:21
 Cos Output:-0.999825
 
Angle:22
 Cos Output:-0.746223
 
Angle:23
 Cos Output:-0.095118
 
Angle:24
 Cos Output:0.606656
 
Angle:25
 Cos Output:0.985272
 
Angle:26
 Cos Output:0.839047
 
Angle:27
 Cos Output:0.245873
 
Angle:28
 Cos Output:-0.478274
 
Angle:29
 Cos Output:-0.947651
 
Angle:30
 Cos Output:-0.912227
 
Angle:31
 Cos Output:-0.390871
 
Angle:32
 Cos Output:0.338696
 
Angle:33
 Cos Output:0.887844
 
Angle:34
 Cos Output:0.964050
 
Angle:35
 Cos Output:0.526719
 
Angle:36
 Cos Output:-0.191188
 
Angle:37
 Cos Output:-0.807324
 
Angle:38
 Cos Output:-0.993303
 
Angle:39
 Cos Output:-0.650143
 
Angle:40
 Cos Output:0.039204
 
Angle:41
 Cos Output:0.707846
 
Angle:42
 Cos Output:0.999302
 
Angle:43
 Cos Output:0.758450
 
Angle:44
 Cos Output:0.113698
 
Angle:45
 Cos Output:-0.591797
 
Angle:46
 Cos Output:-0.981905
 
Angle:47
 Cos Output:-0.849000
 
Angle:48
 Cos Output:-0.263938
 
Angle:49
 Cos Output:0.461893
 
Angle:50
 Cos Output:0.941520
 
Angle:51
 Cos Output:0.919673
 
Angle:52
 Cos Output:0.407999
 
Angle:53
 Cos Output:-0.321175
 
Angle:54
 Cos Output:-0.879093
 
Angle:55
 Cos Output:-0.968816
 
Angle:56
 Cos Output:-0.542507
 
Angle:57
 Cos Output:0.172938
 
Angle:58
 Cos Output:0.796085
 
Angle:59
 Cos Output:0.995277
 
Angle:60
 Cos Output:0.664315
 
Angle:61
 Cos Output:-0.020652
 
Angle:62
 Cos Output:-0.694439
 
Angle:63
 Cos Output:-0.998437
 
Angle:64
 Cos Output:-0.770570
 
Angle:65
 Cos Output:-0.132117
 
Angle:66
 Cos Output:0.576535
 
Angle:67
 Cos Output:0.978221
 
Angle:68
 Cos Output:0.858785
 
Angle:69
 Cos Output:0.281794
 
Angle:70
 Cos Output:-0.445134
 
Angle:71
 Cos Output:-0.935105
 
Angle:72
 Cos Output:-0.926894
 
Angle:73
 Cos Output:-0.424873
 
Angle:74
 Cos Output:0.303543
 
Angle:75
 Cos Output:0.869975
 
Angle:76
 Cos Output:0.973304
 
Angle:77
 Cos Output:0.558005
 
Angle:78
 Cos Output:-0.154628
 
Angle:79
 Cos Output:-0.784867
 
Angle:80
 Cos Output:-0.996926
 
Angle:81
 Cos Output:-0.678073
 
Angle:82
 Cos Output:0.002093
 
Angle:83
 Cos Output:0.681144
 
Angle:84
 Cos Output:0.997209
 
Angle:85
 Cos Output:0.782267
 
Angle:86
 Cos Output:0.150492
 
Angle:87
 Cos Output:-0.561473
 
Angle:88
 Cos Output:-0.974146
 
Angle:89
 Cos Output:-0.868146
 
Angle:90
 Cos Output:-0.299553
 
Angle:91
 Cos Output:0.428658
 
Angle:92
 Cos Output:0.928276
 
Angle:93
 Cos Output:0.933701
 
Angle:94
 Cos Output:0.441601
 
Angle:95
 Cos Output:-0.285807
 
Angle:96
 Cos Output:-0.860674
 
Angle:97
 Cos Output:-0.977396
 
Angle:98
 Cos Output:-0.573310
 
Angle:99
 Cos Output:0.136265
 
Angle:100
 Cos Output:0.772922
 
Angle:101
 Cos Output:0.998208
 
Angle:102
 Cos Output:0.691597
 
Angle:103
 Cos Output:0.016467
 
Angle:104
 Cos Output:-0.667074
 
Angle:105
 Cos Output:-0.995652
 
Angle:106
 Cos Output:-0.793693
 
Angle:107
 Cos Output:-0.168814
 
Angle:108
 Cos Output:0.545610
 
Angle:109
 Cos Output:0.969785
 
Angle:110
 Cos Output:0.877208
 
Angle:111
 Cos Output:0.317208
 
Angle:112
 Cos Output:-0.411371
 
Angle:113
 Cos Output:-0.921214
 
Angle:114
 Cos Output:-0.940185
 
Angle:115
 Cos Output:-0.458176
 
Angle:116
 Cos Output:0.267502
 
Angle:117
 Cos Output:0.851076
 
Angle:118
 Cos Output:0.981151
 
Angle:119
 Cos Output:0.588418
 
Angle:120
 Cos Output:-0.117371
 
Angle:121
 Cos Output:-0.761012
 
Angle:122
 Cos Output:-0.999147
 
Angle:123
 Cos Output:-0.704884
 
Angle:124
 Cos Output:-0.035509
 
Angle:125
 Cos Output:0.653133
 
Angle:126
 Cos Output:0.993751
 
Angle:127
 Cos Output:0.804847
 
Angle:128
 Cos Output:0.187557
 
Angle:129
 Cos Output:-0.529962
 
Angle:130
 Cos Output:-0.965090
 
Angle:131
 Cos Output:-0.885967
 
Angle:132
 Cos Output:-0.335215
 
Angle:133
 Cos Output:0.394384
 
Angle:134
 Cos Output:0.913834
 
Angle:135
 Cos Output:0.946346
 
Angle:136
 Cos Output:0.475024
 
Angle:137
 Cos Output:-0.249573
 
Angle:138
 Cos Output:-0.841185
 
Angle:139
 Cos Output:-0.984569
 
Angle:140
 Cos Output:-0.603712
 
Angle:141
 Cos Output:0.098919
 
Angle:142
 Cos Output:0.748841
 
Angle:143
 Cos Output:0.999752
 
Angle:144
 Cos Output:0.718267
 
Angle:145
 Cos Output:0.054051
 
Angle:146
 Cos Output:-0.638966
 
Angle:147
 Cos Output:-0.991508
 
Angle:148
 Cos Output:-0.815723
 
Angle:149
 Cos Output:-0.205277
 
Angle:150
 Cos Output:0.513713
 
Angle:151
 Cos Output:0.959926
 
Angle:152
 Cos Output:0.894640
 
Angle:153
 Cos Output:0.352643
 
Angle:154
 Cos Output:-0.377261
 
Angle:155
 Cos Output:-0.906140
 
Angle:156
 Cos Output:-0.952180
 
Angle:157
 Cos Output:-0.490849
 
Angle:158
 Cos Output:0.232033
 
Angle:159
 Cos Output:0.830732
 
Angle:160
 Cos Output:0.987723
 
Angle:161
 Cos Output:0.618404
 
Angle:162
 Cos Output:-0.080434
 
Angle:163
 Cos Output:-0.736412
 
Angle:164
 Cos Output:-0.999991
 
Angle:165
 Cos Output:-0.730723
 
Angle:166
 Cos Output:-0.072087
 
Angle:167
 Cos Output:0.624198
 
Angle:168
 Cos Output:0.988851
 
Angle:169
 Cos Output:0.826593
 
Angle:170
 Cos Output:0.223882
 
Angle:171
 Cos Output:-0.498125
 
Angle:172
 Cos Output:-0.954705
 
Angle:173
 Cos Output:-0.902568
 
Angle:174
 Cos Output:-0.369495
 
Angle:175
 Cos Output:0.359552
 
Angle:176
 Cos Output:0.897919
 
Angle:177
 Cos Output:0.957827
 
Angle:178
 Cos Output:0.507355
 
Angle:179
 Cos Output:-0.213463
 
Angle:180
 Cos Output:-0.820536


Here's the actual code I used to generate the output. It relies havily on my engine so you won't be able to run it without some modifcation. sorry.

Code:

   while(1)
  {
 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);      // Clear The Screen And The Depth Buffer
      //vcam->Move(0,0,0);
   //   vcam->Other(joy->_x,0,joy->_y);
      glLoadIdentity();
      
     joy->Update();
       
       cy++;
       if(cy>360) cy=0;
       //vcam->Rotate(cp,cy,0);
            
     
     //FontRenderer->RenderText(0,0,"Gui Test Alpha 1");
 
   
       Renderer->RenderScene();     
       
       sys->Draw2D();
       
       if( !(yawtxt == NULL ) )
       {
          free( (void *)yawtxt );
       }
       
       angtxt = StringUtil->Num( (int)cy );
       yawtxt = StringUtil->Num( (float)cos(DegToRad(cy)) );
       FontRenderer->RenderText( 0,0,angtxt );
       FontRenderer->RenderText( 0,20,yawtxt );
     
      Logger->Log("Angle:%s Cos Output:%s \n",angtxt,yawtxt );
     
    //   sys->Draw2D();
      if(joy->_select==1)
      {
         sceKernelExitGame();
      }
     if( joy->_rtrigger )
     {
        screenshot("mplay");
     }
     glutSwapBuffers();
  }



So are sin/cos different than say visual C++ or Blitzmax? If not degrees or radians as input, what else could it be? Any help would be much appreciated, this has completely stalled our game.
Back to top
View user's profile Send private message
jockyw2001



Joined: 29 Sep 2005
Posts: 339

PostPosted: Sat Jul 22, 2006 9:48 pm    Post subject: Reply with quote

if you convert from degree to radian the formula is:
return ang*PI/180.0f;
Back to top
View user's profile Send private message
Kojima



Joined: 26 Jun 2006
Posts: 275

PostPosted: Sat Jul 22, 2006 9:49 pm    Post subject: Reply with quote

You're right Jock, I just checked and I mistakenly used the same code as I did for RadToDeg. Thanks for the spot.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development All times are GMT + 10 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group