精华内容
下载资源
问答
  • 非球面在光学系统中具有非常重要的作用。...通过主要原理误差分析与计算,在光学熔融石英平面基底上制作零位补偿CGH,测量不确定达到λ/10\[峰谷值(PV), λ=0.6328 μm\],满足非球面波象差光学计量的要求。
  • 考虑到标定板的厚度,将标定板分别放置在两个与被测平面平行、高度不同的位置,并标定出两个标定板平面与像平面间的关系,在已知被测平面与两个标定平面间距离的条件下,利用透视投影原理计算被测目标的实际尺寸。...
  • 目录 第1章 绪论 1.1 引言 1.2 矩阵、向量表示法定义 1.3 平面连杆机构的组成原理 1.4 动力学主要分析方法 1.5 神经网络 1.6 本书研究的主要内容第2章 平面连杆机构的运动学分析 2.1 引言 2.2 MATLAB位移与速度分析...
  • 在分析比较双折射晶体偏振光干涉型和平面波导环形格子结构型光交错复用滤波器原理的基础上,揭示了两者在光谱透射率的数学上的等效性,给出了两者结构参量之间的等效关系,可以直接利用经简单傅里叶级数对比法获得的...
  • 3.1.3计算RCS的方法 38 3.1.4极化因素 38 3.1.4.1 极化散射矩阵 38 3.1.4.2 简单目标的极化散射矩阵 39 3.1.4.3 更一般的极化基 40 3.2 传播与杂波 41 3.2.1 雷达波在大气中的折射 41 3.2.2 地表弯曲效应 42 3.2.3...
  • 通过双目视觉系统获取浮标的运动图像,利用霍夫变换随机抽样一致性算法精确提取左右图像平面中浮标直线特征,计算浮标直线特征三维空间直线方程及浮标摇摆姿态角。实验室及海上试验结果表明:该方法能有效地在真实...
  • 提出了一种基于法布里-珀罗(F-P)标准具多光束干涉成像原理的二维亚微米级位移测量方法,通过计算同心干涉圆环圆心坐标变化量得到焦平面内的二维微位移。采用虚拟面阵像元细分和峰位坐标局域细分技术等处理面阵海量...
  • matlab 神经网络原理与实例精解 陈明著,留的是百度网盘,高清PDF,文件大于60MB,全书齐 第 1 篇 入门篇 第 1 章 神经网络概述( 教学视频:10 分钟)/2 1.1 人工神经网络简介/2 1.2 神经网络的特点及应用/3 1.2.1 ...
  • 272 练习题 321 第10章 计算机动画 322 10.1 计算机动画概述 322 10.2 计算机动画的应用领域 322 10.3 计算机动画的分类和原理 322 10.4 目前计算机动画面临的问题 325 10.5 计算机动画程序...
  • 即ezimplot3实际上也是基于isosurface patch isonormals的实现ezimplot3与方法一的图形视觉效果相同,唯一的区别是,ezimplot3的使用了0.7的透明:alphaezimplot3在方法一基础上增加了一些外包功能,如:允许函数...
  • 利用弹丸的飞行轨迹和弹丸炸点图像平面坐标,研究了弹丸炸点侧向空间坐标的计算方法和多光幕交汇测量系统二维坐标修正原理,给出了弹丸炸点坐标计算函数。利用微分法从交汇光幕夹角、光幕幕厚、测时和测距等方面分析...
  • 2、带旋转效果的立体图像的设计:在PSD图档中,选中要做旋转的图层,画面旋转一周的视觉效果为画面相近两个部分的重叠,根据这两部分的夹角计算旋转一次的度数旋转次数,然后进行填充,建立新的图层, 3、带缩放...
  • 可使所想要的参考图像目标像之间的互相关峰与不想要的直流项、各目标图像之间的互相关峰以及谐波峰输出在不同的平面上,从而提高对多目标检测的准确,给出对具有灰度级的多目标输入景物的计算机模拟结果。
  • 为实现空间碳化硅反射镜表面硅改性...采用组合式加工方法对表面改性空间相机碳化硅平面反射镜进行了抛光。抛光后,空间碳化硅反射镜的面形精度均方根值达到0.014λ(λ=0.6328 μm),表面粗糙的均方根值达到0.71 nm。
  • Shader笔记八 利用顶点投射生成阴影

    千次阅读 2018-06-10 11:50:13
    最近在喵神的专栏里看到了这个实现方法:https://zhuanlan.zhihu.com/myashader自己试着写了下看看效果,主要思想是在顶点着色器内根据光源,顶点地面的位置关系,利用相似原理计算投影点,xz平面即为场景中的固定...

    最近在喵神的专栏里看到了这个实现方法:
    https://zhuanlan.zhihu.com/myashader
    自己试着写了下看看效果,主要思想是在顶点着色器内根据光源,顶点和地面的位置关系,利用相似原理计算投影点,xz平面即为场景中的固定高度平面,即:

    完整的计算思路大家也可以去参考喵神的专栏。


    Shader完整代码:

    Shader "Custom/VertShadow" {
    Properties {
    	_Color("Color", Color) = (1,1,1,1)
    	_MainTex("Albedo (RGB)", 2D) = "white" {}
    	_BumpTex("BumpTex",2D)="bump"{}
    	_BumpScale("BumpScale",Float)=1.0
    	_Specular("Specular",Color)=(1,1,1,1)
    	_Gloss("Gloss",Range(8.0,256))=20
    
    	_LightDir("LightPos&PlaneHeight",vector)=(0,0,0,0)  //这里使用Float4类型变量存储场景中的光源位置和地面高度
    	_ShadowColor("ShadowColor",Color)=(0,0,0,1)
    	_ShadowFalloff("ShadowFalloff",Float)=1.0
    }
    SubShader {
        //第一个Pass正常渲染模型
    	Pass{
    		Tags{"LightMode"="ForwardBase"}
    
    		CGPROGRAM
    		#pragma vertex vert
    		#pragma fragment frag
    		#include "Lighting.cginc"
    
    		fixed4 _Color;
    		sampler2D _MainTex;
    		float4 _MainTex_ST;
    		sampler2D _BumpTex;
    		float4 _BumpTex_ST;
    		float _BumpScale;
    		fixed4 _Specular;
    		float _Gloss;
    
    		struct a2v{
    			float4 vertex:POSITION;
    			float3 normal:NORMAL;
    			float4 tangent:TANGENT;
    			float4 texcoord:TEXCOORD0;
    		};
    
    		struct v2f{
    			float4 pos:SV_POSITION;
    			float4 uv:TEXCOORD0;
    			float3 lightDir:TEXCOORD1;
    			float3 viewDir:TEXCOORD2;
    		};
    
    		v2f vert(a2v v){
    			v2f o;
    			o.pos=UnityObjectToClipPos(v.vertex);
    			o.uv.xy=TRANSFORM_TEX(v.texcoord,_MainTex);
    			o.uv.zw=TRANSFORM_TEX(v.texcoord,_BumpTex);
    
    			float3 biNormal=cross(normalize(v.normal),normalize(v.tangent.xyz))*v.tangent.w;
    			float3x3 rotation=float3x3(v.tangent.xyz,biNormal,v.normal);
    
    			o.lightDir=mul(rotation,ObjSpaceLightDir(v.vertex).xyz);
    			o.viewDir=mul(rotation,ObjSpaceViewDir(v.vertex).xyz);
    
    			return o;
    		}
    
    		fixed4 frag(v2f i):SV_Target{
    			fixed3 tangentLightDir=normalize(i.lightDir);
    			fixed3 tangentViewDir=normalize(i.viewDir);
    
    			fixed3 tangentNormal=UnpackNormal(tex2D(_BumpTex,i.uv.zw));
    			tangentNormal.xy*=_BumpScale;
    			tangentNormal.z=sqrt(1.0-saturate(dot(tangentNormal.xy,tangentNormal.xy)));
    
    			fixed3 albedo=_Color.rgb*tex2D(_MainTex,i.uv.xy);
    			fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;
    			fixed3 diffuse = _LightColor0.rgb*albedo*max(0,dot(tangentNormal,tangentLightDir));
    			fixed3 halfDir=normalize(tangentLightDir+tangentViewDir);
    			fixed3 specular = _LightColor0.rgb*_Specular.rgb*pow(max(0,dot(tangentNormal,halfDir)),_Gloss);
    
    			return fixed4(ambient+diffuse+specular,1.0);
    		}
    		ENDCG
    	}
    				//第二个Pass计算世界空间下顶点的的阴影投影点
    		Pass{
    			//设置透明混合模式
    			Blend SrcAlpha OneMinusSrcAlpha
    			//关闭深度写入
    			ZWrite off
    			//深度偏移防止阴影与地面穿插
    			Offset -1,0
    
    			CGPROGRAM
    			#pragma vertex vert
    			#pragma fragment frag
    
    			#include "UnityCG.cginc"
    
    			float4 _LightDir;
    			float4 _ShadowColor;
    			float4 _ShadowFalloff;
    
    			struct a2v{
    				float4 vertex:POSITION;
    			};
    
    			struct v2f{
    				float4 pos:SV_POSITION;
    				float4 color:COLOR;
    			};
    
    			//计算阴影投影点
    			float3 ShadowProjectPos(float4 vertexPos){
    				float3 shadowPos;
    				//计算顶点的世界空间坐标
    				float3 worldPos=mul(unity_ObjectToWorld,vertexPos).xyz;
    
    				//灯光方向
    				float3 lightDir=normalize(_LightDir.xyz);
    
    				//计算阴影的世界空间坐标(如果顶点低于地面,则阴影点实际就是顶点在世界空间的位置,不做改变)
    				shadowPos.y=min(worldPos.y,_LightDir.w);
    				shadowPos.xz=worldPos.xz-lightDir.xz*max(0,worldPos.y-_LightDir.w)/(lightDir.y-_LightDir.w);
    
    				return shadowPos;
    			}
    
    			v2f vert(a2v v){
    				v2f o;
    
    				//得到阴影的世界空间坐标
    				float3 shadowPos=ShadowProjectPos(v.vertex);
    				
    				//将阴影点转换到裁剪空间
    				o.pos=UnityWorldToClipPos(shadowPos);
    
    				//得到模型在世界空间地面投影点的位置,然后与地面上的阴影点计算距离算衰减
    				float3 center=float3(unity_ObjectToWorld[0].w,_LightDir.w,unity_ObjectToWorld[2].w);
    				//这里的unity_ObjectToWorld矩阵前三行的最后一个分量存储的是子对象在父空间下的坐标位置
    				float falloff=1-saturate(distance(shadowPos,center)*_ShadowFalloff);
    
    				o.color=_ShadowColor;
    				o.color.a*=falloff;
    
    				return o;
    			}
    
    			fixed4 frag(v2f i):SV_Target{
    				return i.color;
    			}
    			
    			ENDCG
    		}
    	}		
    }        
    

    实例效果:
    只使用第一个Pass:

    使用第二个Pass后:


    这种阴影效果基本能满足要求,而且非常节约性能,只是需要注意的是场景中的主光源以及地面高度平整且不发生变化的情况下比较适用。

    展开全文
  • 《数值分析》是为高年级本科生、工科硕士研究生数学类专业学生开设的“数值分析”(数值计算方法)课程编写的教材。其内容包括数值分析的基本概念、非线性方程求根方法、解线性方程组的直接法、线性方程组的迭代...
  • 采用传统的傅里叶变换轮廓术(FTP), 必须保证投影装置出射光瞳成像装置入射光瞳的连线与参考面平行, 并且它们的光轴应在同一平面上, 才能得到较为准确的测量结果。改进了傅里叶变换轮廓术测量装置, 从理论上证明了...
  • CASTEP由Cambridge大学Mike Payne教授发布,采用密度泛函理论、平面波赝势法(用平面波描述外层价电子,内层电子用赝势代替),进行第一性原理量子力学计算的程序。其中总能量包含动能、静电能交换关联能三部分,...
  • 2.4.6 邻近度计算问题 48 2.4.7 选取正确的邻近性度量 50 文献注释 50 参考文献 52 习题 53 第3章 探索数据 59 3.1 鸢尾花数据集 59 3.2 汇总统计 60 3.2.1 频率众数 60 3.2.2 百分位数 61 3.2.3 位置...
  • 针对自行研制的短波红外平场光谱仪,讨论了波长定标的原理和方法。短波红外平场光谱仪由两个分光探测单元组成,探测单元以平场凹面光栅分光,处于焦平面上的线阵列探测器探测,波长定标分为两个波段进行。为了实现准确的...
  •  第8章 主要对线路方案的主要参数设计方法和程序实现、设计交点信息输入实现、线路中心线定位方法、设计方案的保存、平面方案的自动生成和程序设计、纵断面设计模块的实现、边坡模型的生成算法、线路路基三维建模...
  •  第8章 主要对线路方案的主要参数设计方法和程序实现、设计交点信息输入实现、线路中心线定位方法、设计方案的保存、平面方案的自动生成和程序设计、纵断面设计模块的实现、边坡模型的生成算法、线路路基三维建模...
  • 而对于动态物体的检测,主要使用的是DPM模型的方法,先把手脚识别出来,再进行组合。 深度学习方法 RCNN YOLO 场景分割(Segmentation) : 人行道是一个场景,道路是一个场景,在场景中对不同的物体进行分类...
  • 1.1.3 建模的计算方法 1.1.4 数据汇总 1.1.5 特征抽取 1.2 数据挖掘的统计限制 1.2.1 整体情报预警 1.2.2 邦弗朗尼原理 1.2.3 邦弗朗尼原理的一个例子 1.2.4 习题 1.3 相关知识 1.3.1 词语在文档中的重要...
  • 1.1.3 建模的计算方法 1.1.4 数据汇总 1.1.5 特征抽取 1.2 数据挖掘的统计限制 1.2.1 整体情报预警 1.2.2 邦弗朗尼原理 1.2.3 邦弗朗尼原理的一个例子 1.2.4 习题 1.3 相关知识 1.3.1 词语在文档中的重要...
  • 3.3.2 平面图形的面积 3.3.3 平行截面面积已知的立体体积 3.3.4 曲线的弧长 3.3.5 微分元素法在物理学中的应用 3.4 二重积分的计算及其应用 3.4.1 利用定积分的微分元素法化二重积分为累次积分 3.4.2 二重积分的微分...
  • 在绘制这一章中新增了基于物理的光照明模型,透明效果,阴影生成,纹理映射,以及锥光束、平面光束、笔形光束随机光线跟 踪算法;详细讨论了光辐射基础,统一颜色空间,彩色图象量化印刷介质上的颜色重现等新...
  • 3.3.3 二分图应用于最佳匹配问题(游客对房间的满意最大问题) 3.3.4 class与struct的区别? 3.3.5 虚函数纯虚函数 3.3.6 menset()函数 3.3.7 实现一个函数,对一个正整数n,算得到1需要的最少操作次数...
  • 18年电子院跨考网研院803经验分享 by 工1 18年跨考北邮计算机院经验分享 by ciphor 18年二战跨考北邮计算机院经验分享 by DeamoV 18年北邮理学院跨考网研院经验分享 by tzm 18年通信工程跨考北邮网研院经验分享 ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
热门标签
关键字:

平面度计算方法和原理