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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? naive_synthesis.c

?? 基于java的3d開發(fā)庫。對(duì)坐java3d的朋友有很大的幫助。
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/***************************************************************************  **************************************************************************                  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.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa欧美日韩| 午夜一区二区三区视频| 国产精一区二区三区| 日韩欧美国产精品| 麻豆成人在线观看| 久久久久久久久久久黄色| 不卡电影一区二区三区| 一区二区三区四区在线| 精品视频一区 二区 三区| 丝袜亚洲精品中文字幕一区| 日韩精品一区二区三区在线| 国产成a人亚洲| 中文字幕一区二区在线观看| 色www精品视频在线观看| 亚洲18色成人| 久久日韩精品一区二区五区| 成人免费va视频| 一区二区三区欧美亚洲| 这里只有精品电影| 国产一区二区在线影院| 成人免费小视频| 欧美电影影音先锋| 国产福利电影一区二区三区| 亚洲欧美色图小说| 欧美va亚洲va香蕉在线| av一区二区三区在线| 亚洲va欧美va国产va天堂影院| 精品久久99ma| 91小视频免费观看| 久久69国产一区二区蜜臀| 亚洲国产精品ⅴa在线观看| 无码av中文一区二区三区桃花岛| 一本一道久久a久久精品综合蜜臀| 一区2区3区在线看| 欧美一级欧美三级在线观看| 盗摄精品av一区二区三区| 亚洲高清免费观看高清完整版在线观看 | 欧美群妇大交群的观看方式| 在线视频你懂得一区| 国产精品嫩草影院av蜜臀| 欧美日韩精品欧美日韩精品| 欧美精品日韩一本| 欧美日韩亚洲国产综合| 欧美日韩视频在线一区二区| 欧美系列日韩一区| 欧美日韩国产精品成人| 制服丝袜国产精品| 日韩欧美一区二区在线视频| 日韩一区二区三区免费观看| 制服丝袜av成人在线看| 日韩欧美一二区| 久久欧美中文字幕| 国产精品网站一区| 专区另类欧美日韩| 亚洲一级在线观看| 欧美96一区二区免费视频| 黄页视频在线91| 东方aⅴ免费观看久久av| 成人不卡免费av| 欧美丰满一区二区免费视频| 欧美一区二区三区日韩| 精品久久五月天| 国产精品日韩精品欧美在线| 亚洲精品一二三四区| 亚洲成人777| 国产美女娇喘av呻吟久久| 成人激情文学综合网| 欧美在线啊v一区| 日韩一区二区三区视频在线| 中文字幕欧美国产| 亚洲综合一二三区| 久久福利资源站| 91视频观看免费| 91精品欧美综合在线观看最新| 国产午夜精品福利| 亚洲美女屁股眼交| 毛片av一区二区三区| 成人激情黄色小说| 欧美一区日韩一区| 中文字幕成人在线观看| 亚洲成人激情自拍| 粉嫩13p一区二区三区| 欧美日精品一区视频| 久久免费的精品国产v∧| 亚洲欧美视频在线观看| 韩国av一区二区三区四区| 91在线码无精品| 精品国产网站在线观看| 亚洲精品免费在线播放| 国产乱码精品一区二区三区忘忧草| 一本久久精品一区二区| 欧美tk—视频vk| 亚洲成人av电影在线| 国产a区久久久| 欧美一级日韩一级| 亚洲精品乱码久久久久| 国产一区免费电影| 欧美人狂配大交3d怪物一区| 国产精品三级在线观看| 久久精品国产精品亚洲综合| 在线观看日韩国产| 中文字幕一区二区三中文字幕| 蜜臀av性久久久久蜜臀av麻豆| 在线一区二区视频| 国产精品初高中害羞小美女文| 久草中文综合在线| 欧美剧情电影在线观看完整版免费励志电影| 久久久久久久久99精品| 日本不卡的三区四区五区| 色狠狠色狠狠综合| 国产精品三级av| 国产成人日日夜夜| 精品少妇一区二区三区在线播放 | 国产精品免费人成网站| 蜜臀av一区二区| 欧美蜜桃一区二区三区| 夜夜亚洲天天久久| 91在线免费看| 亚洲视频香蕉人妖| 成人精品免费网站| 国产欧美日韩激情| 国产一区二区福利视频| 欧美不卡一区二区三区四区| 日韩综合小视频| 欧美日韩一区二区在线观看| 一区二区在线观看视频| 91在线观看高清| 亚洲视频在线一区观看| 99久久99久久久精品齐齐| 欧美国产日韩精品免费观看| 国产91精品一区二区麻豆亚洲| 久久亚洲影视婷婷| 国产一区二区0| 国产亚洲欧洲997久久综合| 国产在线国偷精品免费看| 精品国产免费一区二区三区香蕉| 精品一区二区在线播放| 精品久久久网站| 国产精品乡下勾搭老头1| 亚洲国产精华液网站w| www.欧美色图| 亚洲卡通欧美制服中文| 在线看日韩精品电影| 亚洲一区二区三区四区在线观看| 91福利精品第一导航| 午夜私人影院久久久久| 91精品国产入口| 久久成人免费日本黄色| 国产日韩欧美一区二区三区综合| 国产成人精品免费看| 亚洲欧美中日韩| 欧美午夜电影网| 美日韩一区二区三区| 久久精品视频免费观看| 99视频有精品| 性久久久久久久久久久久| 日韩视频123| 国产高清在线精品| 亚洲人精品午夜| 777色狠狠一区二区三区| 精品一区二区三区在线播放| 国产午夜精品福利| 在线精品视频一区二区三四| 日韩中文字幕一区二区三区| 久久婷婷国产综合国色天香| 成人福利视频网站| 午夜精品久久久久久不卡8050| 日韩欧美区一区二| av亚洲精华国产精华精| 亚洲成a人在线观看| 精品国产百合女同互慰| eeuss影院一区二区三区| 亚洲成人一区二区| www激情久久| 91极品视觉盛宴| 久99久精品视频免费观看| 国产精品久久看| 欧美一区二区三区的| 成人激情综合网站| 免费精品99久久国产综合精品| 久久久欧美精品sm网站| 色天天综合色天天久久| 美女一区二区三区在线观看| 国产精品久久久久久久久免费丝袜 | 国产亚洲欧美激情| 欧洲激情一区二区| 国产成人一区在线| 日日夜夜精品免费视频| 国产精品二区一区二区aⅴ污介绍| 欧美疯狂做受xxxx富婆| 91在线免费播放| 国产中文字幕一区| 亚洲已满18点击进入久久| 亚洲国产经典视频| 日韩免费观看高清完整版 | 欧美一区二区三区在线视频| 99久久国产综合精品色伊| 精品中文av资源站在线观看| 亚洲18色成人| 亚洲综合免费观看高清完整版|