91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 3 次
    發布日期: 2021-06-11
  • 語言: C/C++
  • 標簽: atan??asin??C語言??

資源簡介

采用優化的單片機查表法計算atan角度的方法,重點解決了幾個問題:
(1)且用asin曲線計算代替難以描述的atan曲線,快速開方函數
(2)全部采用整形運算,加快了運算速度,返回的角度范圍是0~360.00,包含4個象限,輸出角度值
(3)asin曲線使用了一半的曲線,解決了asin鄰近90度時十分陡峭的難題。本代碼稍微加以修改也可以作為asin和acos的計算。

資源截圖

代碼片段和文件信息

#include?
#include?
#define?PI?3.1415926

typedef?unsigned?char?uint8_t;
typedef?char?int8_t;

typedef?unsigned?short?int?uint16_t;
typedef?short?int?int16_t;
typedef?unsigned?int?uint32_t;
typedef?int?int32_t;


//計算求得183個點?
static?const?uint16_t?tb_asin[183]?=?{
023456890112135157
180202224247269292314336
359381404426449471493516
538561583606628651673696
719741764786809832854877
899922945967990101310361058
10811104112711501172119512181241
12641287131013331356137914021425
14481471149515181541156415871611
16341657168117041728175117741798
18211845186918921916194019631987
20112035205920832107213121552179
22032227225122762300232423492373
23972422244724712496252125452570
25952620264526702695272027452771
27962821284728722898292329492975
30003026305230783104313131573183
32093236326232893316334333693396
34233451347835053532356035873615
36433671369937273755378338123840
38693897392639553984401440434072
41024132416241924222425242824313
4344437544064437446845004532
};

uint16_t?sqrt_16(uint32_t?a)?
{
????uint8_t?i;
????uint16_t?b?=?0;
????uint32_t?c;
????for(i=0;?i<16;?i++)
????{
????????c?=?((unsigned?long)1?<????????if(c?<=?a?)
????????{
????????????a?-=?c;
????????????b?+=?(1?<????????}
????}
????return?b;
}

static?uint16_t?calc_atan_phase(int16_t?real?int16_t?imag)
{
????uint16_t?sum;
????uint32_t?real_abs;
????uint16_t?sin_valsin_duansin_yu;
????uint16_t?s_je_jx_j;//初角,結束角,斜率角
????uint8_t?sin_flag=1;

if?(real==0?&&?imag==0)
{
x_j?=?0;?
}
else?if(real==0?&&?imag>0)
{
x_j?=?0;
}
else?if(real>0?&&?imag==0)
{
x_j?=?9000;
}
else?if(real==0?&&?imag<0)
{
x_j?=?18000;
}
else?if(real<0?&&?imag==0)
{
x_j?=?27000;
}
else
{
sum=sqrt_16((int32_t)real*real+(int32_t)imag*imag);
real_abs=real<0?(-real):real;
????sin_val=(real_abs<<14)/sum;
????sin_duan=sin_val>>6;
????
????//arcsin曲線的后半段,斜率越來越陡,為了解決這個問題,用虛部代替實部的方法解決,求出角以后,用90-角,即是sin角?
????if(sin_duan>=183)
????{
real_abs=imag<0?-imag:imag;
????sin_val=(real_abs<<14)/sum;
????sin_duan=sin_val>>6;
????sin_flag=0;
}
sin_yu=sin_val-(sin_duan<<6);
s_j?=?tb_asin[sin_duan];
? e_j?=?tb_asin[sin_duan+1];
? //printf(“%d?%d?%d?%d?%d?\n“sin_valsin_duansin_yue_js_j);
????x_j=(((e_j-s_j)*sin_yu)>>6)+s_j;
}
????
????if(!sin_flag)
????{
x_j=9000-x_j;
}

//判斷象限
//printf(“%d?%d?\n“realimag);

if(real>0?&&?imag>0)
{
x_j?=?x_j;
}
if(real>0?&&?imag<0)
{
x_j?=??18000-x_j;
}
if(real<0?&&?imag>0)
{
x_j?=??36000-x_j;
}
????if(real<0?&&?imag<0)
{
x_j?=??18000+x_j;
}

return?x_j/10;
}

int?main(int?argc?char?*argv[])
{
float?i;

uint16_t?j1;

for

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3355??2020-03-20?00:48??C語言利用半曲線法查表實現arctan?arcsin?反正切?反正弦計算.c

評論

共有 條評論