亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fftcode.c

?? 基于java的3d開發(fā)庫。對坐java3d的朋友有很大的幫助。
?? C
字號:
/***************************************************************************  **************************************************************************                  Spherical Harmonic Transform Kit 2.7       Contact: Peter Kostelec            geelong@cs.dartmouth.edu       Copyright 1997-2003  Sean Moore, Dennis Healy,                        Dan Rockmore, Peter Kostelec       Copyright 2004  Peter Kostelec, Dan Rockmore     SpharmonicKit is free software; you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by     the Free Software Foundation; either version 2 of the License, or     (at your option) any later version.       SpharmonicKit is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details.       You should have received a copy of the GNU General Public License     along with this program; if not, write to the Free Software     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.       Commercial use is absolutely prohibited.     See the accompanying LICENSE file for details.    ************************************************************************  ************************************************************************//*  FFT routines for use in fast convolution */#include <stdio.h>#include <string.h>  /* for memcpy */#include "indextables.h"#include "permroots.h"#define compmult(a,b,c,d,e,f) (e) = ((a)*(c))-((b)*(d)); (f) = ((a)*(d))+((b)*(c))#define compadd(a,b,c,d,e,f) (e) = (a) + (c); (f) = (b) + (d)/************************************************************************//* table lookup to compute logs of powers of 2 */static int ilog2fast(int value){  switch (value)    {    case 1: return 0;    case 2: return 1;    case 4: return 2;    case 8: return 3;    case 16: return 4;    case 32: return 5;    case 64: return 6;    case 128: return 7;    case 256: return 8;    case 512: return 9;    case 1024: return 10;    case 2048: return 11;    case 4096: return 12;    case 8192: return 13;    case 16384: return 14;    case 32768: return 15;    case 65536: return 16;    default: return -1;    }}/************************************************************************//************************************************************************//* This is an FFT procedure which has been modified to do the evaluation   at K nodes given N coefficients.  This is used to speed up convolution   by zero-striped sequences.  Expects K to be larger than N *//* arguments   reals, imags - input double arrays each of size N   r_vals, i_vals - output double arrays each of size K   N is the number of coefficients, K the number of samples    Assumes that coefficients are ordered from 0 to N-1.   NOTA BENE!   When the evaluation is complete, the data is in bit-reverse   order.     Since the purpose of this is to speed up convolution,   once the series is evaluated it should be left in bit reversed order.   In this case, brflag should be set to 0.  If you set brflag to   1, then the results are bit-reversed    This evaluation is modeled on polynomial division tree.   workspace needs to be double array of size 2 * K*/void FFTEval( double *reals, double *imags,	      double *r_vals,double *i_vals,	      int N,	      int K,	      double *workspace,	      int brflag){  const double *rootptr;  double *rcptr, *icptr, *rrptr, *irptr;  double rtemp, itemp;  int rem2, j, k, l, toggle;  double tmproot0, tmproot1;  memcpy(workspace, reals, sizeof(double) * N);  memcpy(workspace+K, imags, sizeof(double) * N);  rootptr = r4096; /* point to roots of unity in BR order */  rem2 = N/2; /* current size of remainders */  rcptr = workspace;  /* points to real part of current poly coeff */  icptr = workspace+K;  /* points to imag part of current poly coeff */  rrptr = r_vals; /* points to real part of current remainder coeff */  irptr = i_vals; /* points to imag part of current remainder coeff */  toggle = 0;  for (l=0; l < ilog2fast(N); l++)    {      for (k=0; k<K; k+=rem2) 	{	  tmproot0 = rootptr[0]; tmproot1 = rootptr[1];	  for (j=0; j<rem2; j++) 	    {	      compmult(tmproot0,tmproot1,rcptr[rem2+j],icptr[rem2+j],		       rtemp,itemp);	      compadd(rtemp,itemp,rcptr[j],icptr[j],		      rrptr[j],irptr[j]);	    }	  rrptr += rem2;	  irptr += rem2;	  rootptr += 2;	  toggle++;	  if ((toggle % 2) == 0) 	    {	      /* check l==0 here. If l==0, then we need to		 fake it into thinking that there are multiple		 copies of the input coeffs */	      if (l != 0) 		{ 		  rcptr += 2*rem2;		  icptr += 2*rem2;		}	      else 		{		  rcptr = workspace;		  icptr = workspace+K;		}	    }	} /* closes k loop - done with one level */          if ((l % 2) == 0) 	{	  rcptr = r_vals;	  icptr = i_vals;	  rrptr = workspace;	  irptr = workspace + K;	}      else 	{	  rcptr = workspace;	  icptr = workspace + K;	  rrptr = r_vals;	  irptr = i_vals;	}          rem2 /= 2;      rootptr = r4096;    }  if ((l % 2) == 0)     {      memcpy(r_vals, workspace, sizeof(double) * K);      memcpy(i_vals, workspace+K, sizeof(double) * K);    }    if (brflag == 1) { /* bitreverse the data */    bitreverse(r_vals,K, workspace);    bitreverse(i_vals,K, workspace);  }  }/************************************************************************//************************************************************************//* This is an Inverse FFT procedure which has been modified to do the    interpolation to K coefficients given N samples of a function.   Expects K <= N, all numbers are powers of 2 *//* arguments   reals, imags - input double arrays each of size N   r_vals, i_vals - output double arrays each of size N - not K -                    since this double as workspace.   N is the number of samples, K the number of coefficents   ALERT!!  ALERT!!  ALERT!!  ALERT!!  ALERT!!  ALERT!!  ALERT!!     If brflag == 0, assumes that input samples are in    bit-reverse order !!!!!!!!!! If brflag == 1, then   bit-reverse is performed.   NOTA BENE!   Returns a coefficient list ordered from 0 to K-1   workspace needs to be a double array of size 4 * N */void FFTInterp( double *reals, double *imags,		double *r_vals, double *i_vals,		int N,		int K,		double *workspace,		int brflag ){  const double *rootptr;  double *rhptr, *ihptr, *rlptr, *ilptr;  double rtemp0, itemp0, rtemp1, itemp1, dn;  int degree, j, k, l, toggle, upperlim;  double rptr0, rptr1, rptr2, rptr3;  double tmprval, tmpival;  dn = (double) N;  /* normalize and permute if necessary */  for (j=0; j<N; j++)    {      workspace[j] = reals[j]/dn;      workspace[j+N] = imags[j]/dn;    }  if (brflag == 1)    {      bitreverse(workspace, N, workspace+(2*N));      bitreverse(workspace+N, N, workspace+(2*N));    }  rootptr = r4096; /* point to roots of unity in BR order */  degree = 1; /* next order of polynomials - stride length */  rlptr = workspace;  /* points to real part of lower order polys */  ilptr = workspace+N;  /* points to imag part of lower order polys */  rhptr = r_vals; /* points to real part of higher order polys */  ihptr = i_vals; /* points to imag part of higher order polys */  toggle = 0;  for (l=1; l <= ilog2fast(K); l++)    {      upperlim = N/(2*degree);      for (k=0; k < upperlim; k++)	{	  for (j=0; j < degree; j++)	    {	      compadd(rlptr[j],ilptr[j],rlptr[j+degree],ilptr[j+degree],		      rhptr[j],ihptr[j]);	    }	  rhptr += degree;	  ihptr += degree;	  rptr0 = rootptr[0]; rptr1 = rootptr[1];	  rptr2 = rootptr[2]; rptr3 = rootptr[3];	  for (j=0; j < degree; j++)	    {	      compmult(rptr0,-rptr1,rlptr[j],ilptr[j],		       rtemp0,itemp0);	      compmult(rptr2,-rptr3,rlptr[j+degree],ilptr[j+degree],		       rtemp1,itemp1);	      compadd(rtemp0,itemp0,rtemp1,itemp1,		      rhptr[j],ihptr[j]);	    }	  rhptr += degree;	  ihptr += degree;	  rlptr += (2*degree);	  ilptr += (2*degree);	  rootptr += 4;	} /* end of k loop */          if ((l % 2) != 0)	{	  rlptr = r_vals;	  ilptr = i_vals;	  rhptr = workspace;	  ihptr = workspace + N;	}      else	{	  rhptr = r_vals;	  ihptr = i_vals;	  rlptr = workspace;	  ilptr = workspace + N;	}      degree *= 2;      rootptr = r4096;      toggle++;        } /* end of l loop */    if ((toggle % 2) == 0)    {      memcpy(r_vals, workspace, sizeof(double) * N);      memcpy(i_vals, workspace+N, sizeof(double) * N);    }    for (j=0; j<K; j++)    {      tmprval = r_vals[j]; tmpival = i_vals[j];      for (k=K; k<N; k+=K)	{	  tmprval += r_vals[j+k];	  tmpival += i_vals[j+k];	}      r_vals[j] = tmprval; i_vals[j] = tmpival;    }  }  /************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品五月天| 欧美优质美女网站| 欧洲精品视频在线观看| 精品久久久久久久人人人人传媒| 国产精品麻豆欧美日韩ww| 三级不卡在线观看| 成人妖精视频yjsp地址| 日韩欧美在线观看一区二区三区| 亚洲乱码国产乱码精品精小说| 国产在线精品免费| 日韩一区二区在线看| 国产精品久久久久影院| 国产曰批免费观看久久久| 欧美精品欧美精品系列| 1000部国产精品成人观看| 国产一区二区视频在线播放| 欧美精品18+| 亚洲午夜视频在线观看| 91老师片黄在线观看| 国产精品无圣光一区二区| 精品午夜一区二区三区在线观看| 欧美日韩国产123区| 亚洲香肠在线观看| 日本精品视频一区二区| 亚洲免费观看高清完整版在线观看熊| 国产麻豆精品久久一二三| 欧美第一区第二区| 美国毛片一区二区| 日韩精品一区二区三区蜜臀 | 午夜免费欧美电影| 91麻豆免费视频| 亚洲女子a中天字幕| jlzzjlzz亚洲日本少妇| 中文字幕在线观看一区| 91污片在线观看| 亚洲激情网站免费观看| www.亚洲色图.com| 亚洲乱码日产精品bd | 国产成人在线色| 国产农村妇女精品| 99精品桃花视频在线观看| 亚洲婷婷综合色高清在线| 91在线小视频| 亚洲制服丝袜av| 91麻豆精品国产91久久久久久久久| 视频在线在亚洲| 精品久久久久久无| 成人av网站在线| 亚洲综合一二三区| 欧美第一区第二区| 北条麻妃国产九九精品视频| 亚洲图片你懂的| 欧美日韩国产综合一区二区三区| 日本欧美久久久久免费播放网| 精品精品欲导航| 99这里只有久久精品视频| 久久影视一区二区| 亚洲小少妇裸体bbw| 欧美一区二区成人6969| 国产精品系列在线播放| 亚洲欧美在线aaa| 欧美精品在线观看一区二区| 极品少妇一区二区| 亚洲精品视频观看| 欧美一级免费观看| 成人av午夜影院| 亚洲国产成人精品视频| 久久久综合视频| 欧美无砖砖区免费| 国产精品影视网| 亚洲综合色区另类av| 久久人人超碰精品| 欧美亚洲国产怡红院影院| 国产精品夜夜爽| 爽好久久久欧美精品| 中文字幕av不卡| 在线播放视频一区| 99久久精品情趣| 美女视频第一区二区三区免费观看网站 | 91视频在线看| 久久精品国产99久久6| 亚洲欧美二区三区| 国产欧美日韩不卡免费| 日韩欧美的一区二区| 欧美系列一区二区| aa级大片欧美| 国产精品正在播放| 久久99久久久欧美国产| 无码av免费一区二区三区试看 | 一区二区三区精品在线| 久久久精品欧美丰满| 日韩欧美在线123| 精品视频全国免费看| 91年精品国产| 国产精品亚洲专一区二区三区| 日韩av在线播放中文字幕| 一区二区理论电影在线观看| 欧美激情一区三区| 国产亚洲一区二区三区在线观看 | 麻豆精品一区二区三区| 亚洲成人你懂的| 亚洲精品国久久99热| 国产精品久久久久久久久搜平片 | 日韩av一区二区三区| 亚洲国产精品久久久久婷婷884| 中文字幕一区二区三区在线不卡| 国产亚洲一二三区| 久久久久久麻豆| 精品国产亚洲在线| 精品国产123| 久久一夜天堂av一区二区三区| 日韩美女天天操| 精品精品国产高清a毛片牛牛| 日韩精品一区二区三区中文不卡| 制服丝袜亚洲精品中文字幕| 91精品啪在线观看国产60岁| 欧美日本在线一区| 日韩一区和二区| 精品国产露脸精彩对白| 久久综合给合久久狠狠狠97色69| 亚洲精品一区二区三区精华液| 亚洲精品一区二区三区福利 | 亚洲最色的网站| 亚洲一区视频在线| 男女男精品视频网| 久久er精品视频| 国产精品一区二区免费不卡 | 中文字幕av资源一区| 欧美经典一区二区| 亚洲色图视频网站| 亚洲国产精品麻豆| 免费成人av在线| 国产98色在线|日韩| 91尤物视频在线观看| 欧洲一区二区三区免费视频| 欧美日韩国产中文| 精品国产91洋老外米糕| 国产亚洲综合在线| 亚洲美女一区二区三区| 亚洲成人1区2区| 国产精品一区二区三区乱码| 91麻豆国产在线观看| 777a∨成人精品桃花网| 亚洲精品一区二区在线观看| 亚洲四区在线观看| 久久精品99国产精品| av电影天堂一区二区在线| 91精品婷婷国产综合久久性色| 久久综合九色综合欧美就去吻| 亚洲精品国久久99热| 精品在线免费视频| 91福利精品视频| 久久美女艺术照精彩视频福利播放| 亚洲日本一区二区三区| 日本欧美一区二区三区乱码| av一本久道久久综合久久鬼色| 欧美另类高清zo欧美| 国产精品黄色在线观看| 免费观看在线综合| 色爱区综合激月婷婷| 国产亚洲精品久| 奇米一区二区三区| 在线亚洲人成电影网站色www| 26uuu亚洲综合色欧美| 一区二区三区四区在线| 久久精品国产一区二区三| 色播五月激情综合网| 国产女人aaa级久久久级| 蜜桃视频在线观看一区| 色成人在线视频| 国产精品免费看片| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美一区二区啪啪| 亚洲伦理在线精品| av成人动漫在线观看| 精品国产91久久久久久久妲己| 日韩视频一区二区| 国产精品久久久久aaaa樱花 | 日韩国产成人精品| 在线免费观看视频一区| 中文字幕免费观看一区| 国产一区二区三区观看| 欧美一级日韩一级| 五月综合激情日本mⅴ| 在线免费精品视频| 亚洲欧美日韩精品久久久久| 成人免费高清视频在线观看| 欧美精品一区二区精品网| 毛片基地黄久久久久久天堂| 欧美日韩成人综合在线一区二区| 亚洲欧洲综合另类| 91玉足脚交白嫩脚丫在线播放| 国产精品免费人成网站| 不卡一二三区首页| 亚洲欧美在线视频观看| 日韩制服丝袜av| 7777精品伊人久久久大香线蕉完整版| 一个色综合av| 欧美日韩黄色一区二区| 五月天亚洲婷婷|