Rev 563 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 563 | Rev 587 | ||
---|---|---|---|
Line 18... | Line 18... | ||
18 | 18 | ||
Line 19... | Line 19... | ||
19 | const uint8_t pgm_atan[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
19 | const uint8_t pgm_atan[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
20 | 20 | ||
21 | //############################################################################ |
21 | //############################################################################ |
22 | // Arkustangens2 im Gradmaß |
22 | // Arkustangens2 im Gradmaß |
23 | signed int atan2_i(long x, long y) |
23 | signed int atan2_i(signed int x, signed int y) |
24 | //############################################################################ |
24 | //############################################################################ |
25 | { |
25 | { |
Line 31... | Line 31... | ||
31 | if (y < 0) m=-1; |
31 | if (y < 0) m=-1; |
32 | else m=1; |
32 | else m=1; |
Line 33... | Line 33... | ||
33 | 33 | ||
Line 34... | Line 34... | ||
34 | if (!x) return (90*m); // atan2 = 90° für x = 0 |
34 | if (!x) return (90*m); // atan2 = 90° für x = 0 |
Line 35... | Line 35... | ||
35 | 35 | ||
36 | i = abs((y*64) / x); // Berechne i für die Lookup table (Schrittweite atan(x) ist 0,015625 -> y *64) |
36 | i = abs(((long)y*64) / x); // Berechne i für die Lookup table (Schrittweite atan(x) ist 0,015625 -> y *64) |
37 | 37 | ||
38 | if (i<346) angle = pgm_read_byte(&pgm_atan[i]); // Lookup für 1° bis 79° |
38 | if (i<346) angle = pgm_read_byte(&pgm_atan[i]); // Lookup für 1° bis 79° |