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

📄 transform.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
static char version[] = "Version 1.1";static char     sccsid[] = "@(#)transform.c 1.1 7/30/92 Copyright 1988 Sun Micro";/* Rendering routine for wings by Curtis Priem, Oct 1988 */#include "render_main.h"float sine[SINE_SIZE] = {#include "create_sine.h"};float cosine[COSINE_SIZE] = {#include "create_cosine.h"};/* #define  DELAYLOOP	{int iii; for(iii=0; iii<50; iii++);} */#define DELAYLOOP	{}int sinehgt;	/* set before call to build_view_matrix */build_view_matrix(){  register int    *tec_base_ptr;  register int    zero, one;  float  fzero=0.0, fone=1.0;  zero = *(int*)&fzero;  one  = *(int*)&fone;  tec_base_ptr = tec_base;  write_lego_tec(tec_base_ptr+L_TEC_CLIPCHECK,   0x00000000);  write_lego_tec(tec_base_ptr+L_TEC_VDC_MATRIX,  0x00004000);sinehgt += 0x0045;  /***** load translation matrix *****/  {    register int    tranx, trany, tranz;float fheight, ftmpz;fheight = cosine[(sinehgt & 0xffff)>>(16-COSINE_POWER)];    tranx = *(int*)&(Shmem->pos_x) ^ 0x80000000;    trany = *(int*)&(Shmem->pos_y) ^ 0x80000000;    tranz = *(int*)&(Shmem->pos_z) ^ 0x80000000;ftmpz = Shmem->pos_z * fheight / -2.0;    write_lego_tec(tec_base_ptr+L_TEC_DATA48,  one  );    write_lego_tec(tec_base_ptr+L_TEC_DATA49,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA50,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA51,  tranx);    write_lego_tec(tec_base_ptr+L_TEC_DATA52,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA53,  one  );    write_lego_tec(tec_base_ptr+L_TEC_DATA54,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA55,  trany);    write_lego_tec(tec_base_ptr+L_TEC_DATA56,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA57,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA58,  *(int*)&fheight);    write_lego_tec(tec_base_ptr+L_TEC_DATA59,  *(int*)&ftmpz);    write_lego_tec(tec_base_ptr+L_TEC_DATA60,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA61,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA62,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA63,  one  );  }  /***** load rotation x matrix *****/  {    register int    sinx, cosx, msinx;     sinx  = *(int*)&sine[(Shmem->rot_x & 0xffff)>>(16-SINE_POWER)];     msinx = sinx ^ 0x80000000;     cosx  = *(int*)&cosine[(Shmem->rot_x & 0xffff)>>(16-COSINE_POWER)];    write_lego_tec(tec_base_ptr+L_TEC_DATA32,  one  );    write_lego_tec(tec_base_ptr+L_TEC_DATA33,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA34,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA35,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA36,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA37,  cosx );    write_lego_tec(tec_base_ptr+L_TEC_DATA38,  sinx );    write_lego_tec(tec_base_ptr+L_TEC_DATA39,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA40,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA41,  msinx);    write_lego_tec(tec_base_ptr+L_TEC_DATA42,  cosx );    write_lego_tec(tec_base_ptr+L_TEC_DATA43,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA44,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA45,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA46,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA47,  one  );  }  /***** concatenate *****/  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0302010);  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0312011);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0322012);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0332013);DELAYLOOP  /***** load rotation y matrix *****/  {    register int    siny, cosy, msiny;     siny  = *(int*)&sine[(Shmem->rot_y & 0xffff)>>(16-SINE_POWER)];     msiny = siny ^ 0x80000000;     cosy  = *(int*)&cosine[(Shmem->rot_y & 0xffff)>>(16-COSINE_POWER)];    write_lego_tec(tec_base_ptr+L_TEC_DATA32,  cosy );    write_lego_tec(tec_base_ptr+L_TEC_DATA33,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA34,  msiny);    write_lego_tec(tec_base_ptr+L_TEC_DATA35,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA36,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA37,  one  );    write_lego_tec(tec_base_ptr+L_TEC_DATA38,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA39,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA40,  siny );    write_lego_tec(tec_base_ptr+L_TEC_DATA41,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA42,  cosy );    write_lego_tec(tec_base_ptr+L_TEC_DATA43,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA44,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA45,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA46,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA47,  one  );  }  /***** concatenate *****/  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0102030);  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0112031);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0122032);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0132033);DELAYLOOP  /***** load rotation z matrix *****/  {    register int    sinz, cosz, msinz;     sinz  = *(int*)&sine[(Shmem->rot_z & 0xffff)>>(16-SINE_POWER)];     msinz = sinz ^ 0x80000000;     cosz  = *(int*)&cosine[(Shmem->rot_z & 0xffff)>>(16-COSINE_POWER)];    write_lego_tec(tec_base_ptr+L_TEC_DATA32,  cosz );    write_lego_tec(tec_base_ptr+L_TEC_DATA33,  sinz );    write_lego_tec(tec_base_ptr+L_TEC_DATA34,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA35,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA36,  msinz);    write_lego_tec(tec_base_ptr+L_TEC_DATA37,  cosz );    write_lego_tec(tec_base_ptr+L_TEC_DATA38,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA39,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA40,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA41,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA42,  one  );    write_lego_tec(tec_base_ptr+L_TEC_DATA43,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA44,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA45,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA46,  zero );    write_lego_tec(tec_base_ptr+L_TEC_DATA47,  one  );  }  /***** concatenate *****/  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0302010);  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0312011);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0322012);DELAYLOOP  write_lego_tec(tec_base_ptr+L_TEC_COMMAND4,  0xf0332013);DELAYLOOP  /***** load VDC matrix *****/  {    float fscalex=0.10, ftranx, fscaley= -0.10, ftrany;    ftranx = (Shmem->window_minx + Shmem->window_maxx)/2;    ftrany = (Shmem->window_miny + Shmem->window_maxy)/2;    write_lego_tec(tec_base_ptr+L_TEC_DATA12,  *(int*)&fscalex);    write_lego_tec(tec_base_ptr+L_TEC_DATA13,  *(int*)&ftranx );    write_lego_tec(tec_base_ptr+L_TEC_DATA14,  *(int*)&fscaley);    write_lego_tec(tec_base_ptr+L_TEC_DATA15,  *(int*)&ftrany );  }  {    register int clipcheck;    clipcheck = read_lego_tec(tec_base_ptr+L_TEC_CLIPCHECK);    if(clipcheck < 0)	errorprint(-25, "build_view_matrix: TEC_EXCEPTION" );  }}

⌨️ 快捷键说明

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