⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icossin2.c

📁 在x86平台上运行不可信任代码的sandbox。
💻 C
字号:
#include "u.h"#include "lib.h"#include "draw.h"/* * Sine and Cosine of arctangents, calculated by  *   (sin(atan(index/100.0))*1024.+0.5) *   (cos(atan(index/100.0))*1024.+0.5) * To use, get rational tangent between 0<=tan<=1, scale by 100, * and look up sin and cos, and use linear interpolation.  divide by 1024. * Maximum error is 0.0020.  Without linear interpolation, it's 0.010. */staticshort sinus[] = {	0,	/* 0.00 */	10,	/* 0.01 */	20,	/* 0.02 */	31,	/* 0.03 */	41,	/* 0.04 */	51,	/* 0.05 */	61,	/* 0.06 */	72,	/* 0.07 */	82,	/* 0.08 */	92,	/* 0.09 */	102,	/* 0.10 */	112,	/* 0.11 */	122,	/* 0.12 */	132,	/* 0.13 */	142,	/* 0.14 */	152,	/* 0.15 */	162,	/* 0.16 */	172,	/* 0.17 */	181,	/* 0.18 */	191,	/* 0.19 */	201,	/* 0.20 */	210,	/* 0.21 */	220,	/* 0.22 */	230,	/* 0.23 */	239,	/* 0.24 */	248,	/* 0.25 */	258,	/* 0.26 */	267,	/* 0.27 */	276,	/* 0.28 */	285,	/* 0.29 */	294,	/* 0.30 */	303,	/* 0.31 */	312,	/* 0.32 */	321,	/* 0.33 */	330,	/* 0.34 */	338,	/* 0.35 */	347,	/* 0.36 */	355,	/* 0.37 */	364,	/* 0.38 */	372,	/* 0.39 */	380,	/* 0.40 */	388,	/* 0.41 */	397,	/* 0.42 */	405,	/* 0.43 */	412,	/* 0.44 */	420,	/* 0.45 */	428,	/* 0.46 */	436,	/* 0.47 */	443,	/* 0.48 */	451,	/* 0.49 */	458,	/* 0.50 */	465,	/* 0.51 */	472,	/* 0.52 */	480,	/* 0.53 */	487,	/* 0.54 */	493,	/* 0.55 */	500,	/* 0.56 */	507,	/* 0.57 */	514,	/* 0.58 */	520,	/* 0.59 */	527,	/* 0.60 */	533,	/* 0.61 */	540,	/* 0.62 */	546,	/* 0.63 */	552,	/* 0.64 */	558,	/* 0.65 */	564,	/* 0.66 */	570,	/* 0.67 */	576,	/* 0.68 */	582,	/* 0.69 */	587,	/* 0.70 */	593,	/* 0.71 */	598,	/* 0.72 */	604,	/* 0.73 */	609,	/* 0.74 */	614,	/* 0.75 */	620,	/* 0.76 */	625,	/* 0.77 */	630,	/* 0.78 */	635,	/* 0.79 */	640,	/* 0.80 */	645,	/* 0.81 */	649,	/* 0.82 */	654,	/* 0.83 */	659,	/* 0.84 */	663,	/* 0.85 */	668,	/* 0.86 */	672,	/* 0.87 */	676,	/* 0.88 */	681,	/* 0.89 */	685,	/* 0.90 */	689,	/* 0.91 */	693,	/* 0.92 */	697,	/* 0.93 */	701,	/* 0.94 */	705,	/* 0.95 */	709,	/* 0.96 */	713,	/* 0.97 */	717,	/* 0.98 */	720,	/* 0.99 */	724,	/* 1.00 */	728,	/* 1.01 */};staticshort cosinus[] = {	1024,	/* 0.00 */	1024,	/* 0.01 */	1024,	/* 0.02 */	1024,	/* 0.03 */	1023,	/* 0.04 */	1023,	/* 0.05 */	1022,	/* 0.06 */	1022,	/* 0.07 */	1021,	/* 0.08 */	1020,	/* 0.09 */	1019,	/* 0.10 */	1018,	/* 0.11 */	1017,	/* 0.12 */	1015,	/* 0.13 */	1014,	/* 0.14 */	1013,	/* 0.15 */	1011,	/* 0.16 */	1010,	/* 0.17 */	1008,	/* 0.18 */	1006,	/* 0.19 */	1004,	/* 0.20 */	1002,	/* 0.21 */	1000,	/* 0.22 */	998,	/* 0.23 */	996,	/* 0.24 */	993,	/* 0.25 */	991,	/* 0.26 */	989,	/* 0.27 */	986,	/* 0.28 */	983,	/* 0.29 */	981,	/* 0.30 */	978,	/* 0.31 */	975,	/* 0.32 */	972,	/* 0.33 */	969,	/* 0.34 */	967,	/* 0.35 */	963,	/* 0.36 */	960,	/* 0.37 */	957,	/* 0.38 */	954,	/* 0.39 */	951,	/* 0.40 */	947,	/* 0.41 */	944,	/* 0.42 */	941,	/* 0.43 */	937,	/* 0.44 */	934,	/* 0.45 */	930,	/* 0.46 */	927,	/* 0.47 */	923,	/* 0.48 */	920,	/* 0.49 */	916,	/* 0.50 */	912,	/* 0.51 */	909,	/* 0.52 */	905,	/* 0.53 */	901,	/* 0.54 */	897,	/* 0.55 */	893,	/* 0.56 */	890,	/* 0.57 */	886,	/* 0.58 */	882,	/* 0.59 */	878,	/* 0.60 */	874,	/* 0.61 */	870,	/* 0.62 */	866,	/* 0.63 */	862,	/* 0.64 */	859,	/* 0.65 */	855,	/* 0.66 */	851,	/* 0.67 */	847,	/* 0.68 */	843,	/* 0.69 */	839,	/* 0.70 */	835,	/* 0.71 */	831,	/* 0.72 */	827,	/* 0.73 */	823,	/* 0.74 */	819,	/* 0.75 */	815,	/* 0.76 */	811,	/* 0.77 */	807,	/* 0.78 */	804,	/* 0.79 */	800,	/* 0.80 */	796,	/* 0.81 */	792,	/* 0.82 */	788,	/* 0.83 */	784,	/* 0.84 */	780,	/* 0.85 */	776,	/* 0.86 */	773,	/* 0.87 */	769,	/* 0.88 */	765,	/* 0.89 */	761,	/* 0.90 */	757,	/* 0.91 */	754,	/* 0.92 */	750,	/* 0.93 */	746,	/* 0.94 */	742,	/* 0.95 */	739,	/* 0.96 */	735,	/* 0.97 */	731,	/* 0.98 */	728,	/* 0.99 */	724,	/* 1.00 */	720,	/* 1.01 */};voidicossin2(int x, int y, int *cosp, int *sinp){	int sinsign, cossign, tan, tan10, rem;	short *stp, *ctp;	if(x == 0){		if(y >= 0)			*sinp = ICOSSCALE, *cosp = 0;		else			*sinp = -ICOSSCALE, *cosp = 0;		return;	}	sinsign = cossign = 1;	if(x < 0){		cossign = -1;		x = -x;	}	if(y < 0){		sinsign = -1;		y = -y;	}	if(y > x){		tan = 1000*x/y;		tan10 = tan/10;		stp = &cosinus[tan10];		ctp = &sinus[tan10];	}else{		tan = 1000*y/x;		tan10 = tan/10;		stp = &sinus[tan10];		ctp = &cosinus[tan10];	}	rem = tan-(tan10*10);	*sinp = sinsign*(stp[0]+(stp[1]-stp[0])*rem/10);	*cosp = cossign*(ctp[0]+(ctp[1]-ctp[0])*rem/10);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -