📄 intsin.c
字号:
#include "headDefine.h"
//Use the Sine functoid () to return the sine of an angle.
//producing value of sine by accessing the table of sine
int intSin(unsigned long Theta)//Theta is expressed by 32 bit
{
int thetaShort; //thetaShort is expressed by 10 bit
int sineResult; //the value of Sine(Theta).
int sinTable[SHORT_PI /2]; //defining a table of sine that include SHORT_PI /2 numbers.
int thetaQuadrant; // the Theta's Quadrant
//making a accessing table of sine
//The value 0 is sineResult of floor(sin(((pi)*0)/2^8)*2^8) in matlab
sinTable[0] = 0;
//The value 3 is sineResult of floor(sin(((pi)*1)/2^8)*2^8) in matlab
sinTable[1] = 3;
//The value 6 is sineResult of floor(sin(((pi)*2)/2^87)*2^8) in matlab
sinTable[2] = 6;
sinTable[3] = 9;
sinTable[4] = 12;
sinTable[5] = 15;
sinTable[6] = 18;
sinTable[7] = 21;
sinTable[8] = 25;
sinTable[9] = 28;
sinTable[10] = 31;
sinTable[11] = 34;
sinTable[12] = 37;
sinTable[13] = 40;
sinTable[14] = 43;
sinTable[15] = 46;
sinTable[16] = 49;
sinTable[17] = 53;
sinTable[18] = 56;
sinTable[19] = 59;
sinTable[20] = 62;
sinTable[21] = 65;
sinTable[22] = 68;
sinTable[23] = 71;
sinTable[24] = 74;
sinTable[25] = 77;
sinTable[26] = 80;
sinTable[27] = 83;
sinTable[28] = 86;
sinTable[29] = 89;
sinTable[30] = 92;
sinTable[31] = 95;
sinTable[32] = 97;
sinTable[33] = 100;
sinTable[34] = 103;
sinTable[35] = 106;
sinTable[36] = 109;
sinTable[37] = 112;
sinTable[38] = 115;
sinTable[39] = 117;
sinTable[40] = 120;
sinTable[41] = 123;
sinTable[42] = 126;
sinTable[43] = 128;
sinTable[44] = 131;
sinTable[45] = 134;
sinTable[46] = 136;
sinTable[47] = 139;
sinTable[48] = 142;
sinTable[49] = 144;
sinTable[50] = 147;
sinTable[51] = 149;
sinTable[52] = 152;
sinTable[53] = 155;
sinTable[54] = 157;
sinTable[55] = 159;
sinTable[56] = 162;
sinTable[57] = 164;
sinTable[58] = 167;
sinTable[59] = 169;
sinTable[60] = 171;
sinTable[61] = 174;
sinTable[62] = 176;
sinTable[63] = 178;
sinTable[64] = 181;
sinTable[65] = 183;
sinTable[66] = 185;
sinTable[67] = 187;
sinTable[68] = 189;
sinTable[69] = 191;
sinTable[70] = 193;
sinTable[71] = 195;
sinTable[72] = 197;
sinTable[73] = 199;
sinTable[74] = 201;
sinTable[75] = 203;
sinTable[76] = 205;
sinTable[77] = 207;
sinTable[78] = 209;
sinTable[79] = 211;
sinTable[80] = 212;
sinTable[81] = 214;
sinTable[82] = 216;
sinTable[83] = 217;
sinTable[84] = 219;
sinTable[85] = 221;
sinTable[86] = 222;
sinTable[87] = 224;
sinTable[88] = 225;
sinTable[89] = 227;
sinTable[90] = 228;
sinTable[91] = 230;
sinTable[92] = 231;
sinTable[93] = 232;
sinTable[94] = 234;
sinTable[95] = 235;
sinTable[96] = 236;
sinTable[97] = 237;
sinTable[98] = 238;
sinTable[99] = 239;
sinTable[100] = 241;
sinTable[101] = 242;
sinTable[102] = 243;
sinTable[103] = 244;
sinTable[104] = 244;
sinTable[105] = 245;
sinTable[106] = 246;
sinTable[107] = 247;
sinTable[108] = 248;
sinTable[109] = 249;
sinTable[110] = 249;
sinTable[111] = 250;
sinTable[112] = 251;
sinTable[113] = 251;
sinTable[114] = 252;
sinTable[115] = 252;
sinTable[116] = 253;
sinTable[117] = 253;
sinTable[118] = 254;
sinTable[119] = 254;
sinTable[120] = 254;
sinTable[121] = 255;
sinTable[122] = 255;
sinTable[123] = 255;
sinTable[124] = 255;
sinTable[125] = 255;
sinTable[126] = 255;
sinTable[127] = 255;
//cuting the back 23 bit from Theta of 32 bit.(BACK_BIT=23)
thetaShort=Theta >> BACK_BIT;
//judging which Quadrant the Theta is
if(thetaShort >= 0 && thetaShort < SHORT_PI /2) {
thetaQuadrant=1;
}else if(thetaShort >= SHORT_PI /2 && thetaShort < SHORT_PI ) {
thetaQuadrant=2;
}else if(thetaShort >= SHORT_PI && thetaShort < SHORT_PI * 3/2){
thetaQuadrant=3;
}else if(thetaShort >= SHORT_PI * 3/2 && thetaShort <SHORT_PI * 2) {
thetaQuadrant=4;
}
switch (thetaQuadrant) {
case 1: sineResult = sinTable[thetaShort]; break;
case 2: sineResult = sinTable[(SHORT_PI - 1) - thetaShort]; break;
case 3: sineResult = - sinTable[thetaShort - SHORT_PI]; break;
case 4: sineResult = - sinTable[(SHORT_PI * 2 - 1) - thetaShort]; break;
default: sineResult = 0;
}
return(sineResult);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -