Sine and Cosine

To overcome the speed - and integer-limitations of the RCX in computing the sine and cosine we propose a new approximation. It is based on Euler's series:

The function has been implemented into Robolab with some additional features -like text oriented variable management- which you can download HERE. How to use the sub.vis is explained at the Robo-Soccer pages 1-ONE and 2-TWO.

Note that the sine and cosine are returned in %.

For those not too familiar with Robolab, here the LASM code for computing sin(74°), the result being stored in variable 0. A_rad is variable 5, h1 var 6 and h2 is var 7:

delt 0 task 0 set 0,5,2,74 <---ANGLE mulv 5,2,281 divv 5,2,161 set 0,6,0,5 divv 6,2,5 set 0,7,0,5 mulv 7,0,5 divv 7,2,-25 mulv 6,0,7 divv 6,2,-480 sumv 7,2,10000 divv 7,2,32 mulv 6,0,7 divv 6,2,-313 sumv 6,0,5 chkl 2,100,1,0,6,Label1002 set 0,6,2,100 jmpl Label1003 Label1002: Label1003: set 0,0,0,6 endt |

Tests show that one computation needs about 50ms, which is much quicker than our previous Sinus approximation.

The following test-program demonstrates the quality of the function:

with an important LABVIEW global variable , with reset-containers and for-loop.

DOWNLOAD all the files

- Conv_dec_to_quotient.vi
- COSINE.vi
- FOR_LOOP.vi
- FOR_NEXT.vi
- Read_variables.vi
- RESET_CONTAINERS.vi
- S_RCX C-Container.vi
- S_RCX Generic Container.vi
- S_Value of C-Container.vi
- S_Value of Generic Container.vi
- SINE.vi
- Test_sinus2.vi
- Variable.gbl.vi