一行代码解决Excel内容转List

一行代码解决Excel内容转List,第1张

使用POI

一个String数组:用来存储excel列的对应的model的属性

一个Map<String,Object>:key为String数据取的值,Value为对应列的值

通过BeanUtils将Map转换成Bean

1、使用反射获取model里面的属性,添加到String[]。当然model里面的字段有一些是excel里面没有的,那怎么办呢?当然是Filter,这样可以兼容所有的model,只需要根据项目情况实现自己的filter,过滤掉不想要的字段即可。这里有点要注意的,model里面的字段要跟excel里面的列的顺序一致,不然就出现张冠李戴了。

2、使用ValueConvert 进行数据类型的转换,model里面的字段不可能那么巧全都是String。所以需要一个数据类型转换类,根据业务需要作对应的转换

源码 Github

用#{}取值。

比如:select cid,cname from channel_table where cid=#{id} and cname=#{name};

id和name就是map的属性!

cubemap

先将场景环境渲染到cubemap中,可以离线渲染,也可以实时渲染。对于静态的效果,离线就可以。离线还可以使用外部资源,如拍摄的全景图生成cubemap。

想象cubemap是一个包围在场景外的立方体。通过从场景中心向其发射射线来采样上面的颜色。

反射

对于反射,想象cubmap上有一个像素发射光线到表面然后反射到眼睛中,为获取这个颜色,需要从视线方向反推出入射光线的方向,即使用视线的反方向计算出折射方向来采样cubemap上面的颜色,就是入射像素的颜色。

折射

对于折射,要根据折射定律计算出折射光线,即 n1sina = n2sinb, 其中n1,n2是两个界面的折射率,a是入射角,b是折射角。实际上经常使用n1/n2即透射比。因为入射方向已知,透射比已知,所以可以计算出折射方向。计算时同样使用视线方向作为入射方向,根据光路可逆性,使用计算出的折射方向来采样cubmap即可。

菲涅耳反射

对于菲涅耳反射

菲涅耳现象:当光线照射到物体表面上时,一部分发生反射,一部分进入物体内部,发生折射或散射。被反射的光和入射光之间存在一定的比率关系。根据观察方向,反射光的量是不同的。比如视线垂直看往水面,能看到水下的情景,此时被水面反射的光线很少,因此能看到水下物体;而看远处的水面时几乎看不见水下的情景,此时被水面反射的光线很多,因此极少有光线从水下反射回来,从而几乎看不到水下的情景。

为了模拟这个现象,采样一个近似公式去计算反射光的强度: F(v,n) ,其中v是视线方向,n是表面法线。

有多种近似公式,如Schlick菲涅耳近似等式:Fschlick(v,n) = F0 + (1-F0)(1- dot(v,n)) ^ 5

其中F0是一个用于控制菲涅耳发射强度的系数,范围0~1, 当F0为1时,没有菲涅耳效果,完全反射;当F0为0时,完全使用计算出来的反射光比例。公式计算的结果和dot(v,n)成反比,即v和n的夹角越小,反射光越弱,当v和n夹角为0时,完全没有反射光;而v和n夹角接近90度时,反射光特别强。也就是在边缘处反射光最强,从而模拟了菲涅耳现象。

根据菲涅耳近似等式计算的结果,去调节反射光的比例,从而模拟了菲涅尔现象。即在普通反射的基础上,使用fresnel值对reflection值进行调节即可。当F0为1时,物体完全反射cubemap中的图像;当F0为0时,是一个具有边缘光照效果的漫反射物体。

以上就是关于一行代码解决Excel内容转List全部的内容,包括:一行代码解决Excel内容转List、ibatis中传参数问题。parameterClass="pages",pages类中有一个map属性。sql中如何获取map键的值、Cubemap应用之反射,折射,菲涅耳反射等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10129135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存