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

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

?? primitive.c

?? 基于java的3d開發庫。對坐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.    ************************************************************************  ************************************************************************//*  some "primitive" functions that are used in cospmls.c  and newmathx.c  */#include <math.h>#include <string.h>  /* to declare memcpy */#ifndef PI#define PI 3.14159265358979#endif/************************************************************************//* Recurrence coefficients *//************************************************************************//* Recurrence coefficents for L2-normed associated Legendre   recurrence.  When using these coeffs, make sure that   inital Pmm function is also L2-normed *//* l represents degree, m is the order */double L2_an(int m,	     int l){  return (sqrt((((double) (2*l+3))/((double) (2*l+1))) *	       (((double) (l-m+1))/((double) (l+m+1)))) *	  (((double) (2*l+1))/((double) (l-m+1))));}/* note - if input l is zero, need to return 0 */double L2_cn(int m,	     int l) {  if (l != 0) {    return (-1.0 *	  sqrt((((double) (2*l+3))/((double) (2*l-1))) *	       (((double) (l-m+1))/((double) (l+m+1))) *	       (((double) (l-m))/((double) (l+m)))) *	  (((double) (l+m))/((double) (l-m+1))));  }  else    return 0.0;}/* when using the reverse recurrence, instead of calling   1/L2_cn_tr(m,l), let me just define the function ...   it might be more stable */double L2_cn_inv(int m,		 int l){  double dl, dm;  dl = (double) l;  dm = (double) m;  return ( -(1.0 + (1. - 2. * dm)/(dm + dl)) *	   sqrt( ((-1. + 2.*dl)/(3. + 2.*dl)) *		 ((dl + dl*dl + dm + 2.*dl*dm + dm*dm)/		  (dl + dl*dl - dm - 2.*dl*dm + dm*dm)) )	   );}/* when using the reverse recurrence, instead of calling   -L2_an(m,l)/L2_cn(m,l), let me just define the   function ... it might be more stable */double L2_ancn(int m,	       int l){  double dl, dm;  dl = (double) l;  dm = (double) m;  return( sqrt( 4.0 + ( (4.0 * dm * dm - 1.0)/			(dl * dl - dm * dm) ) ) );}/************************************************************************//* vector arithmetic operations *//************************************************************************//* does result = data1 + data2 *//* result and data are vectors of length n */void vec_add(double *data1,	     double *data2,	     double *result,	     int n){  int k;  for (k = 0; k < n % 4; ++k)    result[k] = data1[k] + data2[k];  for ( ; k < n ; k += 4)    {      result[k] = data1[k] + data2[k];      result[k + 1] = data1[k + 1] + data2[k + 1];      result[k + 2] = data1[k + 2] + data2[k + 2];      result[k + 3] = data1[k + 3] + data2[k + 3];    }}/************************************************************************//************************************************************************//*   vec_mul(scalar,data1,result,n) multiplies the vector 'data1' by   'scalar' and returns in result */void vec_mul(double scalar,	     double *data1,	     double *result,	     int n){   int k;   for( k = 0; k < n % 4; ++k)     result[k] = scalar * data1[k];   for( ; k < n; k +=4)     {       result[k] = scalar * data1[k];       result[k + 1] = scalar * data1[k + 1];       result[k + 2] = scalar * data1[k + 2];       result[k + 3] = scalar * data1[k + 3];     }}/************************************************************************//* point-by-point multiplication of vectors */void vec_pt_mul(double *data1,		double *data2,		double *result,		int n){   int k;    for(k = 0; k < n % 4; ++k)    result[k] = data1[k] * data2[k];    for( ; k < n; k +=4)    {      result[k] = data1[k] * data2[k];      result[k + 1] = data1[k + 1] * data2[k + 1];      result[k + 2] = data1[k + 2] * data2[k + 2];      result[k + 3] = data1[k + 3] * data2[k + 3];    } }/************************************************************************//* returns an array of the angular arguments of n Chebyshev nodes *//* eval_pts points to a double array of length n */void ArcCosEvalPts(int n,		   double *eval_pts){    int i;    double twoN;    twoN = (double) (2 * n);   for (i=0; i<n; i++)     eval_pts[i] = (( 2.0*((double)i)+1.0 ) * PI) / twoN;}/************************************************************************//* returns an array of n Chebyshev nodes */void EvalPts( int n,	      double *eval_pts){    int i;    double twoN;    twoN = (double) (2*n);   for (i=0; i<n; i++)     eval_pts[i] = cos((( 2.0*((double)i)+1.0 ) * PI) / twoN);}/************************************************************************//* L2 normed Pmm.  Expects input to be the order m, an array of evaluation points arguments of length n, and a result vector of length n *//* The norming constant can be found in Sean's PhD thesis *//* This has been tested and stably computes Pmm functions thru bw=512 */void Pmm_L2( int m,	     double *eval_pts,	     int n,	     double *result){  int i;  double md, id, mcons;  id = (double) 0.0;  md = (double) m;  mcons = sqrt(md + 0.5);  for (i=0; i<m; i++) {    mcons *= sqrt((md-(id/2.0))/(md-id));    id += 1.0;  }  if (m != 0 )    mcons *= pow(2.0,-md/2.0);  if ((m % 2) != 0) mcons *= -1.0;  for (i=0; i<n; i++)     result[i] = mcons * pow(sin(eval_pts[i]),((double) m));}/************************************************************************//************************************************************************//* This piece of code synthesizes a function which is the weighted sum of    associated Legendre functions.  The coeffs array should contain   bw - m coefficients ordered from zeroth degree to bw-1, and eval_pts   should be an array of the arguments (arccos) of the desired    evaluation points of length 2*bw.  Answer placed   in result (and has length 2*bw).   workspace needs to be of size 16 * bw   workspace needs to be of size 14 * bw   *//************************************************************************/void P_eval(int m,	    double *coeffs,	    double *eval_args,	    double *result,	    double *workspace,	    int bw){    double *prev, *prevprev, *temp1, *temp2, *temp3, *temp4, *x_i;    int i, j, n;    double splat;    prevprev = workspace;    prev = prevprev + (2*bw);    temp1 = prev + (2*bw);    temp2 = temp1 + (2*bw);    temp3 = temp2 + (2*bw);    temp4 = temp3 + (2*bw);    x_i = temp4 + (2*bw);    n = 2*bw;    /* now get the evaluation nodes */    EvalPts(n,x_i);    /*   for(i=0;i<n;i++)      fprintf(stderr,"in P_eval evalpts[%d] = %lf\n", i, x_i[i]);      */       for (i=0; i<n; i++)       prevprev[i] = 0.0;    if (m == 0) {	for (i=0; i<n; i++) {	  /* prev[i] = 0.707106781186547; sqrt(1/2) */	   prev[i] = 1.0;	    /* now mult by first coeff and add to result */	    result[i] = coeffs[0] * prev[i];	}    }    else {	Pmm_L2(m, eval_args, n, prev);	splat = coeffs[0];	for (i=0; i<n; i++)	  result[i] = splat * prev[i];    }    for (i=0; i<bw-m-1; i++) {	vec_mul(L2_cn(m,m+i),prevprev,temp1,n);	vec_pt_mul(prev, x_i, temp2, n);	vec_mul(L2_an(m,m+i), temp2, temp3, n);	vec_add(temp3, temp1, temp4, n); /* temp4 now contains P(m,m+i+1) */	/* now add weighted P(m,m+i+1) to the result */	splat = coeffs[i+1];	for (j=0; j<n; j++)	  result[j] += splat * temp4[j];	memcpy(prevprev, prev, sizeof(double) * n);	memcpy(prev, temp4, sizeof(double) * n);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看成人小视频| 大白屁股一区二区视频| 中文字幕不卡的av| 另类小说视频一区二区| 亚洲一二三区在线观看| 亚洲嫩草精品久久| 艳妇臀荡乳欲伦亚洲一区| 69堂精品视频| 欧美v日韩v国产v| 成人高清免费在线播放| 成人亚洲精品久久久久软件| 国产成人午夜片在线观看高清观看| 国产精品资源网站| 亚洲高清免费观看| 欧美精品一区二区高清在线观看| 久久99国产精品久久99| 国产精品成人一区二区三区夜夜夜| 在线观看国产一区二区| 欧美亚洲一区二区在线| 久久国产精品99精品国产| 精品一区中文字幕| 五月天视频一区| 免费视频一区二区| 香蕉影视欧美成人| 中国色在线观看另类| 亚洲精品中文字幕在线观看| 亚洲h精品动漫在线观看| 国产精品国产三级国产aⅴ中文| 欧美日韩综合一区| av亚洲精华国产精华精华| 美日韩一级片在线观看| 亚洲在线成人精品| 日韩码欧中文字| 国产亚洲一区二区三区| 国产精品理伦片| 精品欧美黑人一区二区三区| 中文字幕欧美三区| 天堂精品中文字幕在线| 国产成人精品在线看| 欧美影视一区在线| 色综合久久久久综合体桃花网| 丰满白嫩尤物一区二区| 欧美少妇一区二区| 色综合久久天天| 日本韩国一区二区三区视频| 盗摄精品av一区二区三区| 欧美三级电影在线观看| 久久精品一级爱片| 三级欧美在线一区| 不卡av电影在线播放| 欧美一二三四在线| 亚洲精品五月天| 一区二区成人在线视频| 奇米影视在线99精品| 色老头久久综合| 国产精品私人自拍| 国产在线国偷精品免费看| 男女视频一区二区| 欧美色窝79yyyycom| 亚洲日本免费电影| 成人激情校园春色| 久久精品一区八戒影视| 激情六月婷婷久久| 精品少妇一区二区三区日产乱码| 成人毛片在线观看| 色诱视频网站一区| 久久九九全国免费| 国产又粗又猛又爽又黄91精品| 九九国产精品视频| 东方aⅴ免费观看久久av| 欧美成人精精品一区二区频| 五月激情丁香一区二区三区| 欧美日韩日本视频| 精品久久久久久久久久久久久久久久久| 国产精品88av| 精品国产一区二区精华| 香蕉影视欧美成人| 欧美乱妇15p| 午夜精品视频在线观看| 欧美日韩一区二区三区四区 | 欧美韩国一区二区| 最近中文字幕一区二区三区| 另类综合日韩欧美亚洲| 日韩免费观看高清完整版| 捆绑紧缚一区二区三区视频| 精品99一区二区| 一区二区三区.www| 久久不见久久见中文字幕免费| 国产成人精品亚洲777人妖 | 美国av一区二区| 精品日韩在线观看| 国产激情视频一区二区在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲黄色片在线观看| 精品在线免费视频| 91黄色免费网站| 国产精品午夜在线观看| 午夜精品福利一区二区蜜股av| 精品亚洲免费视频| 中文字幕av一区二区三区高 | 国产欧美视频一区二区三区| 丰满少妇久久久久久久| 亚洲综合免费观看高清完整版| 亚洲欧美日韩中文播放| 国产美女主播视频一区| 亚洲欧美综合另类在线卡通| 91麻豆蜜桃一区二区三区| 久久中文字幕电影| 成人午夜电影小说| 亚洲国产你懂的| 国产亚洲一二三区| 欧美色涩在线第一页| 中文字幕一区二区三区在线不卡| 麻豆免费精品视频| 国产精品久久久久久一区二区三区| 天天综合天天综合色| 色婷婷国产精品| 日韩理论片网站| 51精品视频一区二区三区| 国产真实乱子伦精品视频| 欧美一区二区福利视频| 亚洲成人久久影院| 欧美三级日韩在线| 国产91露脸合集magnet| 舔着乳尖日韩一区| 亚洲欧美一区二区三区极速播放 | 国产精品久久久久久久蜜臀| 激情久久五月天| 亚洲国产成人va在线观看天堂| 美女视频黄久久| 久久免费看少妇高潮| 666欧美在线视频| 99re6这里只有精品视频在线观看| 国产欧美精品在线观看| 国产成人日日夜夜| 日韩精品电影一区亚洲| 亚洲婷婷国产精品电影人久久| 日韩黄色小视频| 精品少妇一区二区三区在线播放| 蜜桃视频第一区免费观看| 国产精品成人午夜| 欧美国产精品v| 99这里只有精品| 高清视频一区二区| 亚洲精品免费一二三区| 欧美午夜一区二区三区 | 久久成人av少妇免费| 久久亚洲精华国产精华液| 91 com成人网| 9191国产精品| 国产99精品视频| 国产99精品国产| 福利电影一区二区| 国产一区久久久| 亚洲欧洲制服丝袜| 欧美另类z0zxhd电影| 欧美视频一区二区三区四区| 精东粉嫩av免费一区二区三区| 国产欧美精品一区| 久久精品综合网| 日本一区二区三区免费乱视频| 国产又粗又猛又爽又黄91精品| 国产精品丝袜久久久久久app| 色8久久人人97超碰香蕉987| 91久久精品一区二区三区| 一本高清dvd不卡在线观看| 免费美女久久99| 中文字幕在线一区免费| 日韩欧美国产午夜精品| 91免费国产在线观看| 久久99精品久久久| 国产成人综合自拍| 不卡大黄网站免费看| 91官网在线免费观看| 欧美性一区二区| 成人激情小说乱人伦| 理论片日本一区| 高清成人免费视频| 另类小说综合欧美亚洲| 国内成人精品2018免费看| 国产乱码精品一区二区三区忘忧草| 精品国产a毛片| 国产亚洲婷婷免费| 亚洲免费成人av| 蜜臀av一区二区在线观看| 大胆欧美人体老妇| 欧美三级电影网| 色丁香久综合在线久综合在线观看| 国产精品综合av一区二区国产馆| 国产欧美一区二区精品性| 国产日韩欧美电影| 久久欧美中文字幕| 日韩一级完整毛片| 国产精品理论在线观看| 日本一区二区综合亚洲| 久久久久久久av麻豆果冻| 有码一区二区三区| 国产成人精品一区二区三区四区 | 亚洲精品中文字幕乱码三区| 一色屋精品亚洲香蕉网站|