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

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

?? naive_synthesis.c

?? 基于java的3d開發庫。對坐java3d的朋友有很大的幫助。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************  **************************************************************************                  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.    ************************************************************************  ************************************************************************//*************************************************************************//* Source code to synthesize functions using a naive method   based on recurrence.  This is slow but does not require any   precomputed functions, and is also stable. */#include <math.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "csecond.h"#include "weights.h"#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 ns_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))));}double ns_L2_bn(){  return ((double) 0.0);}/* note - if input l is zero, need to return 0 */double ns_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;}/************************************************************************//* vector arithmetic operations *//************************************************************************//* does result = data1 + data2 *//* result and data are vectors of length n */void ns_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,n) multiplies the vector 'data1' by   'scalar' and returns in result */void ns_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 ns_vec_pt_mul(const double *data1,		   const 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 ns_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 ns_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 ns_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 is the procedure that synthesizes a function from a list   of coefficients of a Legendre series.  Function is synthesized   at the (2*bw) Chebyshev nodes.      bw - bandwidth   m - order   coeffs - a pointer to double array of size (bw-m).  First coefficient is            coefficient for Pmm   result - a pointer to double array of size (2*bw) and containing the            synthesized function   workspace - a pointer to double array of size (32*bw)   */void Naive_Synthesize(int bw,		      int m,		      double *coeffs,		      double *result,		      double *workspace){    double *prev, *prevprev, *temp1, *temp2, *temp3, *temp4, *x_i, *eval_args;    double t1;    int i, j;    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);    eval_args = x_i + (2*bw);    /* get the evaluation nodes */    ns_EvalPts(2*bw,x_i);    ns_ArcCosEvalPts(2*bw,eval_args);        /* set initial values of first two Pmls */    for (i=0; i<2*bw; i++)       prevprev[i] = 0.0;    if (m == 0) {	for (i=0; i<2*bw; i++) {	    prev[i] = 1.0;	}    }    else       ns_Pmm_L2(m, eval_args, 2*bw, prev);    /* this may be useful for generating Gmls later but       removed for now    if ((m % 2) == 1) { 	for (i=0; i<2*bw; i++)	  prev[i] /= sin(eval_args[i]);    }    */    /* make sure result is zeroed out */    for (i=0; i<(2*bw); i++)      result[i] = 0.0;    /* add in Pmm contribution */    if (coeffs[0] != 0.0)      {	t1 = coeffs[0];	for (j=0; j<(2*bw); j++)	  result[j] += t1 * prev[j];      }    /* now generate remaining pmls while synthesizing function */    for (i=0; i<bw-m-1; i++) {	ns_vec_mul(ns_L2_cn(m,m+i),prevprev,temp1,2*bw);	ns_vec_pt_mul(prev, x_i, temp2, 2*bw);	ns_vec_mul(ns_L2_an(m,m+i), temp2, temp3, 2*bw);	ns_vec_add(temp3, temp1, temp4, 2*bw); /* temp4 now contains P(m,m+i+1) */	/* add in contribution */	if (coeffs[i+1] != 0.0)	  {	    t1 = coeffs[i+1];	    for (j=0; j<(2*bw); j++)	      result[j] += (t1 * temp4[j]);	  }	/* now update Pi and P(i+1) */	memcpy(prevprev, prev, (size_t) sizeof(double) * 2 * bw);	memcpy(prev, temp4, (size_t) sizeof(double) * 2 * bw);    }  }/************************************************************************//* Naive Analysis function - used to get a measure of the error inherent   in the synthesis of functions using three-term recurrence.  Essentially,   this is a naive transform function*//************************************************************************//*   bw - bandwidth   m - order   data - a pointer to double array of size (2*bw) containing a synthesized          function.     result - a pointer to double array of size (bw-m) and containing the            computed Legendre coefficients, starting with the Pmm	    coefficient.   workspace - a pointer to double array of size (32*bw)*/void Naive_Analysis(int bw,		    int m,		    double *data,		    double *result,		    double *workspace){    double *prev, *prevprev, *temp1, *temp2, *temp3, *temp4, *x_i, *eval_args;    double *wdata;    const double *weight_vec;    double t1;    int i, j;    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);    eval_args = x_i + (2*bw);    wdata = eval_args + (2*bw);    /* get the evaluation nodes */    ns_EvalPts(2*bw,x_i);    ns_ArcCosEvalPts(2*bw,eval_args);        /* set initial values of first two Pmls */    for (i=0; i<2*bw; i++)       prevprev[i] = 0.0;    if (m == 0) {	for (i=0; i<2*bw; i++) {	    prev[i] = 0.5;	}    }    else       ns_Pmm_L2(m, eval_args, 2*bw, prev);    /* make sure result is zeroed out */    for (i=0; i<(bw-m); i++)      result[i] = 0.0;    /* apply quadrature weights */    weight_vec = get_weights(bw);    for (i=0; i<(2*bw); i++)      wdata[i] = data[i] * weight_vec[i];    /* compute Pmm coefficient */    t1 = 0.0;    for (j=0; j<(2*bw); j++)      t1 += wdata[j] * prev[j];    result[0] = t1;    /* now generate remaining pmls while computing coefficients */    for (i=0; i<bw-m-1; i++) {	ns_vec_mul(ns_L2_cn(m,m+i),prevprev,temp1,2*bw);	ns_vec_pt_mul(prev, x_i, temp2, 2*bw);	ns_vec_mul(ns_L2_an(m,m+i), temp2, temp3, 2*bw);	ns_vec_add(temp3, temp1, temp4, 2*bw); /* temp4 now contains P(m,m+i+1) */		/* compute this coefficient */	t1 = 0.0;	for (j=0; j<(2*bw); j++)	  t1 += wdata[j] * temp4[j];	result[i+1] = t1;	/* now update Pi and P(i+1) */	/***	for (j=0; j<2*bw; j++) {	    prevprev[j] = prev[j];	    prev[j] = temp4[j];	}	***/	memcpy( prevprev, prev, sizeof(double) * 2 * bw );	memcpy( prev, temp4, sizeof(double) * 2 * bw );    }  }/************************************************************************//* Naive Analysis function for timing - used to get a measure of the    naive transformation time.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩在线观看| 婷婷亚洲久悠悠色悠在线播放| 国产精品成人网| 日韩精品乱码免费| 99re热这里只有精品免费视频| 91精品麻豆日日躁夜夜躁| 国产精品久久久久影视| 国产在线精品国自产拍免费| 欧美精品色一区二区三区| 亚洲国产高清不卡| 六月丁香综合在线视频| 欧美少妇bbb| 有坂深雪av一区二区精品| 国产剧情在线观看一区二区 | 亚洲国产精品久久久久秋霞影院| 国产综合色精品一区二区三区| 欧美影院精品一区| 成人免费在线播放视频| 国产成人三级在线观看| 久久综合狠狠综合久久激情 | 91精品国产日韩91久久久久久| 亚洲三级久久久| 国产成人免费高清| 久久久综合视频| 国产在线视频不卡二| 欧美videos大乳护士334| 无码av免费一区二区三区试看| 91视频一区二区三区| 国产精品无遮挡| 成人av在线资源网| 国产欧美日韩在线看| 国内精品久久久久影院色 | 国产精品视频看| 高清shemale亚洲人妖| 久久蜜桃av一区精品变态类天堂| 久久99国产精品麻豆| 欧美xxxxx牲另类人与| 国产呦萝稀缺另类资源| 国产亚洲午夜高清国产拍精品| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲国产成人tv| 欧美亚洲高清一区| 日韩av中文字幕一区二区| 日韩欧美在线不卡| 韩国欧美一区二区| 中文字幕国产精品一区二区| 从欧美一区二区三区| 国产精品久久久久久久久果冻传媒| 风间由美性色一区二区三区| 国产精品三级电影| 91黄色小视频| 午夜精品久久一牛影视| 欧美不卡视频一区| 成人精品gif动图一区| 一区二区三区日本| 欧美一区二区三区思思人| 精品午夜一区二区三区在线观看| 久久久久久免费网| 一本久久a久久精品亚洲| 亚洲妇女屁股眼交7| 欧美成人一级视频| jvid福利写真一区二区三区| 一区二区三区资源| 久久亚洲综合色| 色综合视频一区二区三区高清| 五月婷婷综合在线| 国产色爱av资源综合区| 欧美亚洲综合网| 国产呦萝稀缺另类资源| 亚洲最大成人综合| 久久综合久久综合九色| 在线观看欧美黄色| 国产成人在线看| 亚洲妇女屁股眼交7| 国产欧美日韩在线| 欧美精品丝袜中出| 91免费观看视频在线| 免费观看日韩av| 亚洲图片另类小说| 欧美精品一区二区三| 91福利在线观看| 国产成人免费视频精品含羞草妖精| 亚洲一区二区三区免费视频| 久久综合九色综合97_久久久| 欧美视频一区二区三区| 成熟亚洲日本毛茸茸凸凹| 日产精品久久久久久久性色| 亚洲欧美怡红院| 久久久99久久| 日韩欧美一二三四区| 91国偷自产一区二区三区成为亚洲经典| 麻豆91在线播放免费| 一区二区三区欧美亚洲| 国产精品久久久久久久岛一牛影视| 欧美一区二区在线免费播放| 日本韩国欧美国产| www.av亚洲| 成人激情文学综合网| 精品一区二区三区在线观看| 亚洲成人激情av| 伊人色综合久久天天| 国产精品福利影院| 久久精品一区二区| 2017欧美狠狠色| 欧美成人一级视频| 欧美刺激午夜性久久久久久久 | 盗摄精品av一区二区三区| 日本不卡123| 蜜桃av一区二区| 午夜激情久久久| 婷婷久久综合九色综合伊人色| 亚洲自拍另类综合| 亚洲制服欧美中文字幕中文字幕| 中文字幕在线免费不卡| 最新不卡av在线| 亚洲免费观看在线观看| 亚洲精品视频在线| 亚洲综合在线观看视频| 亚洲伊人色欲综合网| 亚洲影视在线播放| 午夜精品久久久久久久| 日韩精品一二区| 激情综合网av| 国产精品一区二区不卡| 国产盗摄一区二区三区| 国产精品一区二区在线看| 福利一区二区在线| 91在线视频观看| 欧美亚州韩日在线看免费版国语版| 欧美视频中文字幕| 欧美哺乳videos| 国产精品成人免费在线| 亚洲欧美日韩国产手机在线| 亚洲一区av在线| 蜜臀精品久久久久久蜜臀| 精品写真视频在线观看| 99热在这里有精品免费| 在线观看日韩精品| 精品欧美一区二区三区精品久久| 中文字幕av资源一区| 亚洲女人小视频在线观看| 午夜不卡av免费| 国产一区二区三区日韩| jlzzjlzz欧美大全| 欧美另类z0zxhd电影| 欧美精品一区二区三区蜜臀| 中文字幕中文乱码欧美一区二区 | 国产精品色噜噜| 亚洲成人一区在线| 国产自产视频一区二区三区| 91在线视频在线| 欧美一区二区三区公司| 国产精品灌醉下药二区| 男男视频亚洲欧美| 国产成人精品午夜视频免费| 色综合久久天天综合网| 欧美一区二区三区在线观看| 国产精品美日韩| 五月综合激情婷婷六月色窝| 国产成人av影院| 欧美精品在线观看播放| 亚洲国产精品成人综合| 日韩影院精彩在线| 国产精品亚洲一区二区三区妖精| 欧美主播一区二区三区| 国产日产欧美一区| 日本中文字幕不卡| 在线观看av一区| 国产日产精品1区| 久久精品国产99| 欧美日韩日日摸| 国产精品初高中害羞小美女文 | 日本aⅴ亚洲精品中文乱码| 成人黄色av电影| 欧美电视剧免费全集观看| 亚洲精选免费视频| 国产麻豆91精品| 91精品国产aⅴ一区二区| 亚洲精品视频一区| 成人开心网精品视频| 久久综合狠狠综合| 久久精品国产久精国产爱| 欧美日韩高清一区二区三区| 亚洲乱码国产乱码精品精的特点| 国产黑丝在线一区二区三区| 日韩手机在线导航| 午夜精品123| 欧美一区二区在线看| 日韩电影在线观看网站| 欧美日韩午夜在线视频| 亚洲国产欧美在线| 欧亚洲嫩模精品一区三区| 亚洲欧美日韩国产综合在线| 99re在线精品| 日韩毛片精品高清免费| 91在线无精精品入口| 亚洲精品视频一区| 91久久精品国产91性色tv| 亚洲精品中文字幕乱码三区| 91免费观看视频在线|