标签: fresnel

你如何计算glsl中两个法线之间的角度?

你如何计算glsl中两个法线之间的角度?我试图将菲涅尔效果添加到对象的外边缘(将该效果与phong着色相结合),我认为角度是我唯一缺少的.

片段着色器:

varying vec3 N;
varying vec3 v;

void main(void) {
  v = vec3(gl_ModelViewMatrix * gl_Vertex);
  N = normalize(gl_NormalMatrix * gl_Normal);
  gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
Run Code Online (Sandbox Code Playgroud)

顶点着色器:

varying vec3 N;
varying vec3 v;

void main(void) {
  vec3 L = normalize(gl_LightSource[0].position.xyz - v);
  vec3 E = normalize(-v);
  vec3 R = normalize(-reflect(L,N));

  vec4 Iamb = gl_FrontLightProduct[0].ambient
  vec4 Idiff = gl_FrontLightProduct[0].diffuse * max(dot(N,L), 0.0);
  vec4 Ispec = gl_FrontLightProduct[0].specular * pow(max(dot(R,E),0.0), gl_FrontMaterial.shininess);
  vec4 Itot = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec;

  vec3 …
Run Code Online (Sandbox Code Playgroud)

graphics geometry angle glsl fresnel

6
推荐指数
2
解决办法
2万
查看次数

什么是一个很好的Javascript RDFa解析器实现?

我希望为Web应用程序实现基于客户端的RDFa格式.这与Mark Birbeck的 ubiquity-rdfa项目类似.

马克的项目看起来很棒,但它至少有两个缺点:

  1. 这很慢.将RDFa格式添加到简单页面会导致页面加载明显延迟.
  2. 这很复杂.ubiquity-rdfa项目使用w3c菲涅耳规范,这是向客户端标记添加简单注释的复杂方法.

我正在寻找一种通过客户端代码添加注释的轻量级方法,我不介意做一些工作来获得它.

我想要的是一个快速可靠的Javascript RDFa解析器.

我发现的一些实现包括:

我很想知道您是否会推荐其中一个或另一个RDFa Javascript实现.

谢谢!

javascript parsing fresnel rdfa

6
推荐指数
1
解决办法
1505
查看次数

Python - OpenDrive Map - 使用菲涅耳积分的螺旋/Clothoid/欧拉螺旋/Cornu螺旋插值

地图格式OpenDrive提供(除其他外)道路的几何形状。道路的每一段都可以具有不同的几何形状(例如线、弧、螺旋、多项式)。提供的道路几何“螺旋”信息如下:

 - s      - relative position of the road segment in respect to the beginning
                                                of the road (not used in here)
 - x      - the "x" position of the starting point of the road segment
 - y      - the "y" position of the starting point of the road segment
 - hdg       - the heading of the starting point of the road segment
 - length      - the length of the road segment
 - curvStart   - the curvature at …
Run Code Online (Sandbox Code Playgroud)

python spiral fresnel scipy

6
推荐指数
1
解决办法
3857
查看次数

菲涅耳衍射分两步

我写了一个简短的 matlab 脚本文件,假设运行菲涅耳的传播(衍射),这样给定一个特定的输入字段 U0,它会告诉你该字段在距离 z0 后的样子。我将结果与教科书的结果进行了比较,看起来我的程序运行良好。问题是如果我尝试采取两个传播步骤而不是一个。即,不是通过程序的一次迭代来传播距离 z0,而是通过程序的两次迭代来传播距离 z0/2。然后我就完全胡说八道了,我无法弄清楚是什么问题。任何建议将被接受,非常感谢。这是代码:

function U = fresnel_advance (U0, dx, dy, z, lambda)
% The function receives a field U0 at wavelength lambda
% and returns the field U after distance z, using the Fresnel
% approximation. dx, dy, are spatial resolution.

k=2*pi/lambda;
[ny, nx] = size(U0); 

Lx = dx * nx;
Ly = dy * ny;

dfx = 1./Lx;
dfy = 1./Ly;

u = ones(nx,1)*((1:nx)-nx/2)*dfx;    
v = ((1:ny)-ny/2)'*ones(1,ny)*dfy;   

O = fftshift(fft2(U0));

H = exp(1i*k*z).*exp(-1i*pi*lambda*z*(u.^2+v.^2));  

U …
Run Code Online (Sandbox Code Playgroud)

matlab physics propagation fresnel

5
推荐指数
1
解决办法
1万
查看次数