So, ich mir eben mal ein Program in Purebasic geschrieben, welches mir diese Tabellen für Sinus und Cosinus als Textdatei angefertigt hat, so wie sie abgedruckt sind, tolle Sache. Ich habe den Wert mal 1000 genommen, damit die genaugigkeit hoch ist.
Nun eine Frage an den Fachman, wie kann man diese Tabelle verkürzen und wie sieht dann der Code aus für ein ganzen Kreis von 0-360 Grad.
Also bitte , kürzt mir die Tabelle und setzt mir dafür ein Code, der die Kürtzung ersetzt damit ich eine Kreis von 360 Grad zeichnen kann.
Wenn ich jetzt die Floatsinuswerte * 1024 nehmen würde, müsste doch nachher die Teilung einfach durch eine Bitverschiebung schneller sein, oder? x=sinus[179]*100 zb und dann x Teilen durch eine Bitverschiebung(1024)?
static const int sinus[360] = {
0x0000 ,0x0011 ,0x0022 ,0x0034 ,0x0045 ,0x0057 ,0x0068 ,0x0079 ,0x008B ,0x009C ,
0x00AD ,0x00BE ,0x00CF ,0x00E0 ,0x00F1 ,0x0102 ,0x0113 ,0x0124 ,0x0135 ,0x0145 ,
0x0156 ,0x0166 ,0x0176 ,0x0186 ,0x0196 ,0x01A6 ,0x01B6 ,0x01C5 ,0x01D5 ,0x01E4 ,
0x01F4 ,0x0203 ,0x0211 ,0x0220 ,0x022F ,0x023D ,0x024B ,0x0259 ,0x0267 ,0x0275 ,
0x0282 ,0x0290 ,0x029D ,0x02A9 ,0x02B6 ,0x02C3 ,0x02CF ,0x02DB ,0x02E7 ,0x02F2 ,
0x02FE ,0x0309 ,0x0314 ,0x031E ,0x0329 ,0x0333 ,0x033D ,0x0346 ,0x0350 ,0x0359 ,
0x0362 ,0x036A ,0x0372 ,0x037B ,0x0382 ,0x038A ,0x0391 ,0x0398 ,0x039F ,0x03A5 ,
0x03AB ,0x03B1 ,0x03B7 ,0x03BC ,0x03C1 ,0x03C5 ,0x03CA ,0x03CE ,0x03D2 ,0x03D5 ,
0x03D8 ,0x03DB ,0x03DE ,0x03E0 ,0x03E2 ,0x03E4 ,0x03E5 ,0x03E6 ,0x03E7 ,0x03E7 ,
0x03E7 ,0x03E7 ,0x03E7 ,0x03E6 ,0x03E5 ,0x03E4 ,0x03E2 ,0x03E0 ,0x03DE ,0x03DB ,
0x03D8 ,0x03D5 ,0x03D2 ,0x03CE ,0x03CA ,0x03C5 ,0x03C1 ,0x03BC ,0x03B7 ,0x03B1 ,
0x03AB ,0x03A5 ,0x039F ,0x0398 ,0x0391 ,0x038A ,0x0382 ,0x037B ,0x0372 ,0x036A ,
0x0362 ,0x0359 ,0x0350 ,0x0346 ,0x033D ,0x0333 ,0x0329 ,0x031E ,0x0314 ,0x0309 ,
0x02FE ,0x02F2 ,0x02E7 ,0x02DB ,0x02CF ,0x02C3 ,0x02B6 ,0x02A9 ,0x029D ,0x0290 ,
0x0282 ,0x0275 ,0x0267 ,0x0259 ,0x024B ,0x023D ,0x022F ,0x0220 ,0x0211 ,0x0203 ,
0x01F4 ,0x01E4 ,0x01D5 ,0x01C5 ,0x01B6 ,0x01A6 ,0x0196 ,0x0186 ,0x0176 ,0x0166 ,
0x0156 ,0x0145 ,0x0135 ,0x0124 ,0x0113 ,0x0102 ,0x00F1 ,0x00E0 ,0x00CF ,0x00BE ,
0x00AD ,0x009C ,0x008B ,0x0079 ,0x0068 ,0x0057 ,0x0045 ,0x0034 ,0x0022 ,0x0011 ,
0x0000 ,-0x0011 ,-0x0022 ,-0x0034 ,-0x0045 ,-0x0057 ,-0x0068 ,-0x0079 ,-0x008B ,-0x009C ,
-0x00AD ,-0x00BE ,-0x00CF ,-0x00E0 ,-0x00F1 ,-0x0102 ,-0x0113 ,-0x0124 ,-0x0135 ,-0x0145 ,
-0x0156 ,-0x0166 ,-0x0176 ,-0x0186 ,-0x0196 ,-0x01A6 ,-0x01B6 ,-0x01C5 ,-0x01D5 ,-0x01E4 ,
-0x01F3 ,-0x0203 ,-0x0211 ,-0x0220 ,-0x022F ,-0x023D ,-0x024B ,-0x0259 ,-0x0267 ,-0x0275 ,
-0x0282 ,-0x0290 ,-0x029D ,-0x02A9 ,-0x02B6 ,-0x02C3 ,-0x02CF ,-0x02DB ,-0x02E7 ,-0x02F2 ,
-0x02FE ,-0x0309 ,-0x0314 ,-0x031E ,-0x0329 ,-0x0333 ,-0x033D ,-0x0346 ,-0x0350 ,-0x0359 ,
-0x0362 ,-0x036A ,-0x0372 ,-0x037B ,-0x0382 ,-0x038A ,-0x0391 ,-0x0398 ,-0x039F ,-0x03A5 ,
-0x03AB ,-0x03B1 ,-0x03B7 ,-0x03BC ,-0x03C1 ,-0x03C5 ,-0x03CA ,-0x03CE ,-0x03D2 ,-0x03D5 ,
-0x03D8 ,-0x03DB ,-0x03DE ,-0x03E0 ,-0x03E2 ,-0x03E4 ,-0x03E5 ,-0x03E6 ,-0x03E7 ,-0x03E7 ,
-0x03E7 ,-0x03E7 ,-0x03E7 ,-0x03E6 ,-0x03E5 ,-0x03E4 ,-0x03E2 ,-0x03E0 ,-0x03DE ,-0x03DB ,
-0x03D8 ,-0x03D5 ,-0x03D2 ,-0x03CE ,-0x03CA ,-0x03C5 ,-0x03C1 ,-0x03BC ,-0x03B7 ,-0x03B1 ,
-0x03AB ,-0x03A5 ,-0x039F ,-0x0398 ,-0x0391 ,-0x038A ,-0x0382 ,-0x037B ,-0x0372 ,-0x036A ,
-0x0362 ,-0x0359 ,-0x0350 ,-0x0346 ,-0x033D ,-0x0333 ,-0x0329 ,-0x031E ,-0x0314 ,-0x0309 ,
-0x02FE ,-0x02F2 ,-0x02E7 ,-0x02DB ,-0x02CF ,-0x02C3 ,-0x02B6 ,-0x02A9 ,-0x029D ,-0x0290 ,
-0x0282 ,-0x0275 ,-0x0267 ,-0x0259 ,-0x024B ,-0x023D ,-0x022F ,-0x0220 ,-0x0211 ,-0x0203 ,
-0x01F4 ,-0x01E4 ,-0x01D5 ,-0x01C5 ,-0x01B6 ,-0x01A6 ,-0x0196 ,-0x0186 ,-0x0176 ,-0x0166 ,
-0x0156 ,-0x0145 ,-0x0135 ,-0x0124 ,-0x0113 ,-0x0102 ,-0x00F1 ,-0x00E0 ,-0x00CF ,-0x00BE ,
-0x00AD ,-0x009C ,-0x008B ,-0x0079 ,-0x0068 ,-0x0057 ,-0x0045 ,-0x0034 ,-0x0022 ,-0x0011 ,
};
static const int cosinus[360] = {
0x03E8 ,0x03E7 ,0x03E7 ,0x03E6 ,0x03E5 ,0x03E4 ,0x03E2 ,0x03E0 ,0x03DE ,0x03DB ,
0x03D8 ,0x03D5 ,0x03D2 ,0x03CE ,0x03CA ,0x03C5 ,0x03C1 ,0x03BC ,0x03B7 ,0x03B1 ,
0x03AB ,0x03A5 ,0x039F ,0x0398 ,0x0391 ,0x038A ,0x0382 ,0x037B ,0x0372 ,0x036A ,
0x0362 ,0x0359 ,0x0350 ,0x0346 ,0x033D ,0x0333 ,0x0329 ,0x031E ,0x0314 ,0x0309 ,
0x02FE ,0x02F2 ,0x02E7 ,0x02DB ,0x02CF ,0x02C3 ,0x02B6 ,0x02A9 ,0x029D ,0x0290 ,
0x0282 ,0x0275 ,0x0267 ,0x0259 ,0x024B ,0x023D ,0x022F ,0x0220 ,0x0211 ,0x0203 ,
0x01F3 ,0x01E4 ,0x01D5 ,0x01C5 ,0x01B6 ,0x01A6 ,0x0196 ,0x0186 ,0x0176 ,0x0166 ,
0x0156 ,0x0145 ,0x0135 ,0x0124 ,0x0113 ,0x0102 ,0x00F1 ,0x00E0 ,0x00CF ,0x00BE ,
0x00AD ,0x009C ,0x008B ,0x0079 ,0x0068 ,0x0057 ,0x0045 ,0x0034 ,0x0022 ,0x0011 ,
0x0000 ,-0x0011 ,-0x0022 ,-0x0034 ,-0x0045 ,-0x0057 ,-0x0068 ,-0x0079 ,-0x008B ,-0x009C ,
-0x00AD ,-0x00BE ,-0x00CF ,-0x00E0 ,-0x00F1 ,-0x0102 ,-0x0113 ,-0x0124 ,-0x0135 ,-0x0145 ,
-0x0156 ,-0x0166 ,-0x0176 ,-0x0186 ,-0x0196 ,-0x01A6 ,-0x01B6 ,-0x01C5 ,-0x01D5 ,-0x01E4 ,
-0x01F4 ,-0x0203 ,-0x0211 ,-0x0220 ,-0x022F ,-0x023D ,-0x024B ,-0x0259 ,-0x0267 ,-0x0275 ,
-0x0282 ,-0x0290 ,-0x029D ,-0x02A9 ,-0x02B6 ,-0x02C3 ,-0x02CF ,-0x02DB ,-0x02E7 ,-0x02F2 ,
-0x02FE ,-0x0309 ,-0x0314 ,-0x031E ,-0x0329 ,-0x0333 ,-0x033D ,-0x0346 ,-0x0350 ,-0x0359 ,
-0x0362 ,-0x036A ,-0x0372 ,-0x037B ,-0x0382 ,-0x038A ,-0x0391 ,-0x0398 ,-0x039F ,-0x03A5 ,
-0x03AB ,-0x03B1 ,-0x03B7 ,-0x03BC ,-0x03C1 ,-0x03C5 ,-0x03CA ,-0x03CE ,-0x03D2 ,-0x03D5 ,
-0x03D8 ,-0x03DB ,-0x03DE ,-0x03E0 ,-0x03E2 ,-0x03E4 ,-0x03E5 ,-0x03E6 ,-0x03E7 ,-0x03E7 ,
-0x03E7 ,-0x03E7 ,-0x03E7 ,-0x03E6 ,-0x03E5 ,-0x03E4 ,-0x03E2 ,-0x03E0 ,-0x03DE ,-0x03DB ,
-0x03D8 ,-0x03D5 ,-0x03D2 ,-0x03CE ,-0x03CA ,-0x03C5 ,-0x03C1 ,-0x03BC ,-0x03B7 ,-0x03B1 ,
-0x03AB ,-0x03A5 ,-0x039F ,-0x0398 ,-0x0391 ,-0x038A ,-0x0382 ,-0x037B ,-0x0372 ,-0x036A ,
-0x0362 ,-0x0359 ,-0x0350 ,-0x0346 ,-0x033D ,-0x0333 ,-0x0329 ,-0x031E ,-0x0314 ,-0x0309 ,
-0x02FE ,-0x02F2 ,-0x02E7 ,-0x02DB ,-0x02CF ,-0x02C3 ,-0x02B6 ,-0x02A9 ,-0x029D ,-0x0290 ,
-0x0282 ,-0x0275 ,-0x0267 ,-0x0259 ,-0x024B ,-0x023D ,-0x022F ,-0x0220 ,-0x0211 ,-0x0203 ,
-0x01F3 ,-0x01E4 ,-0x01D5 ,-0x01C5 ,-0x01B6 ,-0x01A6 ,-0x0196 ,-0x0186 ,-0x0176 ,-0x0166 ,
-0x0156 ,-0x0145 ,-0x0135 ,-0x0124 ,-0x0113 ,-0x0102 ,-0x00F1 ,-0x00E0 ,-0x00CF ,-0x00BE ,
-0x00AD ,-0x009C ,-0x008B ,-0x0079 ,-0x0068 ,-0x0057 ,-0x0045 ,-0x0034 ,-0x0022 ,-0x0011 ,
0x0000 ,0x0011 ,0x0022 ,0x0034 ,0x0045 ,0x0057 ,0x0068 ,0x0079 ,0x008B ,0x009C ,
0x00AD ,0x00BE ,0x00CF ,0x00E0 ,0x00F1 ,0x0102 ,0x0113 ,0x0124 ,0x0135 ,0x0145 ,
0x0156 ,0x0166 ,0x0176 ,0x0186 ,0x0196 ,0x01A6 ,0x01B6 ,0x01C5 ,0x01D5 ,0x01E4 ,
0x01F3 ,0x0203 ,0x0211 ,0x0220 ,0x022F ,0x023D ,0x024B ,0x0259 ,0x0267 ,0x0275 ,
0x0282 ,0x0290 ,0x029D ,0x02A9 ,0x02B6 ,0x02C3 ,0x02CF ,0x02DB ,0x02E7 ,0x02F2 ,
0x02FE ,0x0309 ,0x0314 ,0x031E ,0x0329 ,0x0333 ,0x033D ,0x0346 ,0x0350 ,0x0359 ,
0x0362 ,0x036A ,0x0372 ,0x037B ,0x0382 ,0x038A ,0x0391 ,0x0398 ,0x039F ,0x03A5 ,
0x03AB ,0x03B1 ,0x03B7 ,0x03BC ,0x03C1 ,0x03C5 ,0x03CA ,0x03CE ,0x03D2 ,0x03D5 ,
0x03D8 ,0x03DB ,0x03DE ,0x03E0 ,0x03E2 ,0x03E4 ,0x03E5 ,0x03E6 ,0x03E7 ,0x03E7 ,
};
Alles anzeigen
Wer sich für das Purebasicprogramm interessiert:
Global a.f
Global b.f
Global c.s
Global d.w
Global wert.w
Global um.w
b=#PI/180
CreateFile(1, "d:\winvice\sinus.txt")
WriteStringN(1,"static const int sinus[360] = {")
um=1
For d=0 To 359
a=d*b
wert=Int(Sin(a)*1000)
If um <11
If wert < 0
wert=Abs(wert)
WriteString(1, "-0x"+ RSet(Hex(wert), 4, "0")+" ,")
Else
WriteString(1, "0x"+ RSet(Hex(wert), 4, "0")+" ,")
EndIf
Else
WriteStringN(1,"")
d=d-1
um=0
EndIf
um=um+1
Next
WriteStringN(1,"")
WriteStringN(1,"};")
CloseFile(1)
CreateFile(1, "d:\winvice\cosinus.txt")
WriteStringN(1,"static const int cosinus[360] = {")
um=1
For d=0 To 359
a=d*b
wert=Int(Cos(a)*1000)
If um <11
If wert < 0
wert=Abs(wert)
WriteString(1, "-0x"+ RSet(Hex(wert), 4, "0")+" ,")
Else
WriteString(1, "0x"+ RSet(Hex(wert), 4, "0")+" ,")
EndIf
Else
WriteStringN(1,"")
d=d-1
um=0
EndIf
um=um+1
Next
WriteStringN(1,"")
WriteStringN(1,"};")
CloseFile(1)
Alles anzeigen