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

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

?? us_stand.c

?? User Defined Surface Project file sample。光學設計軟件zemax的用戶自定義表面的例子
?? C
字號:
#include <windows.h>
#include <math.h>
#include <string.h>
#include "usersurf.h"

/*
Written by Kenneth E. Moore
Oct 11, 1996
*/

int __declspec(dllexport) APIENTRY UserDefinedSurface(USER_DATA *UD, FIXED_DATA *FD);

/* a generic Snells law refraction routine */
int Refract(double thisn, double nextn, double *l, double *m, double *n, double ln, double mn, double nn);

BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
	{
   return TRUE;
   }

/* this DLL models a standard ZEMAX surface type, either plane, sphere, or conic */

int __declspec(dllexport) APIENTRY UserDefinedSurface(USER_DATA *UD, FIXED_DATA *FD)
	{
   int i;
   double p2, alpha, power, a, b, c, rad, casp, t, zc;
   switch(FD->type)
   	{
      case 0:
      	/* ZEMAX is requesting general information about the surface */
         switch(FD->numb)
         	{
            case 0:
            	/* ZEMAX wants to know the name of the surface */
		         /* do not exceed 12 characters */
		         strcpy(UD->string,"Standard Dll");
               break;
            case 1:
            	/* ZEMAX wants to know if this surface is rotationally symmetric */
               /* it is, so return any character in the string; otherwise, return a null string */
            	strcpy(UD->string, "1");
               break;
            case 2:
            	/* ZEMAX wants to know if this surface is a gradient index media */
               /* it is not, so return a null string */
            	UD->string[0] = '\0';
            	break;
            }
         break;
      case 1:
      	/* ZEMAX is requesting the names of the parameter columns */
         /* the value FD->numb will indicate which value ZEMAX wants. */
         /* they are all "Unused" for this surface type */
         /* returning a null string indicates that the parameter is unused. */
         switch(FD->numb)
         	{
            default:
            	UD->string[0] = '\0';
            	break;
            }
      	break;
      case 2:
      	/* ZEMAX is requesting the names of the extra data columns */
         /* the value FD->numb will indicate which value ZEMAX wants. */
         /* they are all "Unused" for this surface type */
         /* returning a null string indicates that the extradata value is unused. */
         switch(FD->numb)
         	{
            default:
            	UD->string[0] = '\0';
            	break;
            }
      	break;
      case 3:
      	/* ZEMAX wants to know the sag of the surface */
         /* if there is an alternate sag, return it as well */
         /* otherwise, set the alternate sag identical to the sag */
         /* The sag is sag1, alternate is sag2. */

         UD->sag1 = 0.0;
         UD->sag2 = 0.0;

			/* if a plane, just return */
			if (FD->cv == 0) return(0);
         p2 = UD->x * UD->x + UD->y * UD->y;
         alpha = 1 - (1+FD->k)*FD->cv*FD->cv*p2;
         if (alpha < 0) return(-1);
         UD->sag1 = (FD->cv*p2)/(1 + sqrt(alpha));
         if (alpha != 1.0) UD->sag2 = (FD->cv*p2)/(1 - sqrt(alpha));
      	break;
      case 4:
      	/* ZEMAX wants a paraxial ray trace to this surface */
         /* x, y, z, and the optical path are unaffected, at least for this surface type */
         /* for paraxial ray tracing, the return z coordinate should always be zero. */
         /* paraxial surfaces are always planes with the following normals */

         UD->ln =  0.0;
         UD->mn =  0.0;
         UD->nn = -1.0;
         power = (FD->n2 - FD->n1)*FD->cv;
         if ((UD->n) != 0.0)
         	{
            (UD->l) = (UD->l)/(UD->n);
            (UD->m) = (UD->m)/(UD->n);

            (UD->l) = (FD->n1*(UD->l) - (UD->x)*power)/(FD->n2);
            (UD->m) = (FD->n1*(UD->m) - (UD->y)*power)/(FD->n2);

            /* normalize */
            (UD->n) = sqrt(1/(1 + (UD->l)*(UD->l) + (UD->m)*(UD->m) ) );
            /* de-paraxialize */
            (UD->l) = (UD->l)*(UD->n);
            (UD->m) = (UD->m)*(UD->n);
            }
         break;
      case 5:
      	/* ZEMAX wants a real ray trace to this surface */
         if (FD->cv == 0.0)
         	{
	         UD->ln =  0.0;
   	      UD->mn =  0.0;
      	   UD->nn = -1.0;
			   if (Refract(FD->n1, FD->n2, &UD->l, &UD->m, &UD->n, UD->ln, UD->mn, UD->nn)) return(-FD->surf);
            return(0);
            }
         /* okay, not a plane. */
			a = (UD->n) * (UD->n) * FD->k + 1;
			b = ((UD->n)/FD->cv) - (UD->x) * (UD->l) - (UD->y) * (UD->m);
			c = (UD->x) * (UD->x) + (UD->y) * (UD->y);
			rad = b * b - a * c;
			if (rad < 0) return(FD->surf);  /* ray missed this surface */
			if (FD->cv > 0) t = c / (b + sqrt(rad));
			else           t = c / (b - sqrt(rad));
			(UD->x) = (UD->l) * t + (UD->x);
			(UD->y) = (UD->m) * t + (UD->y);
			(UD->z) = (UD->n) * t + (UD->z);
			UD->path = t;
			zc = (UD->z) * FD->cv;
			rad = zc * FD->k * (zc * (FD->k + 1) - 2) + 1;
			casp = FD->cv / sqrt(rad);
			UD->ln = (UD->x) * casp;
			UD->mn = (UD->y) * casp;
			UD->nn = ((UD->z) - ((1/FD->cv) - (UD->z) * FD->k)) * casp;
         if (Refract(FD->n1, FD->n2, &UD->l, &UD->m, &UD->n, UD->ln, UD->mn, UD->nn)) return(-FD->surf);
         break;
      case 6:
      	/* ZEMAX wants the index, dn/dx, dn/dy, and dn/dz at the given x, y, z. */

         /* This is only required for gradient index surfaces, so return dummy values */
         UD->index = FD->n2;
         UD->dndx = 0.0;
         UD->dndy = 0.0;
         UD->dndz = 0.0;
      	break;
      case 7:
      	/* ZEMAX wants the "safe" data. */
         /* this is used by ZEMAX to set the initial values for all parameters and extra data */
         /* when the user first changes to this surface type. */
         /* this is the only time the DLL should modify the data in the FIXED_DATA FD structure */
         for (i = 1; i <= 8; i++) FD->param[i] = 0.0;
         for (i = 1; i <= 200; i++) FD->xdata[i] = 0.0;
         break;
      }
   return 0;
   }

int Refract(double thisn, double nextn, double *l, double *m, double *n, double ln, double mn, double nn)
{
double nr, cosi, cosi2, rad, cosr, gamma;
if (thisn != nextn)
	{
	nr = thisn / nextn;
	cosi = fabs((*l) * ln + (*m) * mn + (*n) * nn);
	cosi2 = cosi * cosi;
	if (cosi2 > 1) cosi2 = 1;
	rad = 1 - ((1 - cosi2) * (nr * nr));
	if (rad < 0) return(-1);
	cosr = sqrt(rad);
	gamma = nr * cosi - cosr;
	(*l) = (nr * (*l)) + (gamma * ln);
	(*m) = (nr * (*m)) + (gamma * mn);
	(*n) = (nr * (*n)) + (gamma * nn);
	}
return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久人人做人人爽| 麻豆91免费看| 激情偷乱视频一区二区三区| 成人h版在线观看| 欧美一级xxx| 亚洲午夜私人影院| 成人av资源网站| 亚洲精品一区二区精华| 夜夜精品视频一区二区| 国产成人精品综合在线观看 | 亚洲精品免费电影| 老司机免费视频一区二区| 欧美大片在线观看| 中文字幕一区在线观看| 国产精品资源网站| 日韩一级高清毛片| 日韩精品91亚洲二区在线观看| 成人av网站免费观看| 久久女同精品一区二区| 蜜臀精品一区二区三区在线观看| 91免费观看视频在线| 日本一区二区三区四区在线视频| 精品一区二区三区免费播放| 日韩三级视频在线看| 污片在线观看一区二区| 欧美日韩精品免费观看视频| 亚洲男人的天堂在线aⅴ视频 | 欧美经典一区二区| 国产乱人伦精品一区二区在线观看| 制服.丝袜.亚洲.中文.综合| 亚洲一区二区免费视频| 欧洲日韩一区二区三区| 亚洲精品中文字幕在线观看| 日本韩国一区二区| 亚洲一区二区精品视频| 欧美视频一区二区在线观看| 亚洲精品免费播放| 一本色道a无线码一区v| 一区二区欧美在线观看| 欧美日韩美少妇| 天天色天天操综合| 欧美一区二区三区在线看| 男男视频亚洲欧美| 久久久国产一区二区三区四区小说| 激情久久久久久久久久久久久久久久| 日韩精品一区二区三区四区 | 国产精品自拍av| 欧美国产禁国产网站cc| 99热精品国产| 亚洲夂夂婷婷色拍ww47| 91精品国产乱码| 久久99久久久久| 国产欧美一区二区三区网站| 99re66热这里只有精品3直播| 亚洲激情第一区| 日韩欧美中文字幕制服| 国产夫妻精品视频| 亚洲免费av高清| 欧美精品第1页| 国产九色精品成人porny| 中文字幕一区日韩精品欧美| 欧美日韩二区三区| 国产成人综合网站| 亚洲自拍另类综合| 久久天天做天天爱综合色| av电影天堂一区二区在线观看| 一区二区视频免费在线观看| 日韩一区二区免费在线电影| 风流少妇一区二区| 亚洲图片欧美一区| 久久精品亚洲麻豆av一区二区| 91麻豆成人久久精品二区三区| 亚洲成人av免费| 欧美国产日韩一二三区| 欧美精品第1页| 91视频免费播放| 国产一区二区三区美女| 亚洲自拍另类综合| 欧美国产精品专区| 日韩视频在线永久播放| 99国产欧美另类久久久精品| 久久精品国产免费看久久精品| 亚洲欧洲av在线| 亚洲精品在线电影| 欧美日韩一区在线观看| 成人免费视频免费观看| 久久99精品久久久久久久久久久久| 亚洲色图都市小说| 国产欧美精品一区aⅴ影院 | 日韩福利视频网| 亚洲欧美成aⅴ人在线观看| 欧美精品一区视频| 69堂成人精品免费视频| 精品视频一区二区不卡| 99精品一区二区三区| 狠狠色狠狠色综合系列| 日韩中文字幕亚洲一区二区va在线 | 日韩一区和二区| 欧美自拍丝袜亚洲| av不卡免费电影| 国产91在线|亚洲| 国产一区二区成人久久免费影院| 日韩精品一二三四| 亚洲高清免费在线| 亚洲精品日韩综合观看成人91| 国产欧美日韩三级| 2020国产精品久久精品美国| 欧美一区二区女人| 欧美男男青年gay1069videost| 在线观看日韩电影| 91福利在线导航| 欧美中文一区二区三区| 欧美精品乱人伦久久久久久| 欧美久久久久免费| 91精品国产综合久久精品app| 欧美三级日韩三级| 91精品国产综合久久蜜臀| 91精品国产高清一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美日韩综合精品一区二区| 久久免费看少妇高潮| 久久久久久免费| 久久久久久久免费视频了| 久久久国际精品| 国产精品日日摸夜夜摸av| 国产精品亲子伦对白| 综合在线观看色| 亚洲精品视频在线观看网站| 亚洲激情图片qvod| 日韩av在线免费观看不卡| 精品系列免费在线观看| 黑人巨大精品欧美一区| 粉嫩av一区二区三区在线播放| 99久久久久久| 欧美日韩亚州综合| 精品精品欲导航| 中文在线资源观看网站视频免费不卡| 亚洲欧洲日韩综合一区二区| 亚洲精品日日夜夜| 麻豆国产精品视频| av成人老司机| 日韩一级片在线观看| 国产日韩欧美精品综合| 亚洲综合免费观看高清完整版在线| 亚洲成人av资源| 国产传媒一区在线| 欧美视频日韩视频在线观看| 日韩一区国产二区欧美三区| 中文字幕免费不卡在线| 亚洲成a人片综合在线| 国产美女娇喘av呻吟久久| 91九色02白丝porn| 亚洲精品在线三区| 亚洲综合男人的天堂| 国产精品亚洲成人| 欧美视频一区二区三区| 久久五月婷婷丁香社区| 一个色综合av| 国产91精品精华液一区二区三区 | 欧美欧美欧美欧美首页| 久久亚洲二区三区| 午夜一区二区三区在线观看| 国产一区二区三区视频在线播放| 色综合久久中文字幕| 国产亚洲一区二区在线观看| 亚洲国产精品视频| 91视频精品在这里| 国产三级精品在线| av在线播放一区二区三区| 4438x亚洲最大成人网| 亚洲欧美偷拍卡通变态| 国产精品18久久久久| 69久久夜色精品国产69蝌蚪网| 亚洲欧美日韩国产成人精品影院| 国产乱人伦偷精品视频免下载| 4438x成人网最大色成网站| 一级日本不卡的影视| 99精品视频在线播放观看| 久久久91精品国产一区二区三区| 日韩影视精彩在线| 欧美色网一区二区| 一区二区三区四区不卡视频| av一区二区三区四区| 国产色产综合产在线视频| 久久99精品国产| 日韩欧美成人激情| 日韩av在线发布| 欧美一三区三区四区免费在线看| 亚洲欧洲美洲综合色网| 国产综合久久久久影院| 欧美精品18+| 免费观看成人鲁鲁鲁鲁鲁视频| 91天堂素人约啪| 欧美一二三区在线观看| 免费在线成人网| 欧美夫妻性生活| 国产精品三级av| 国产一区二区久久| 欧美变态tickle挠乳网站| 亚洲国产你懂的|