zoukankan
html css js c++ java
光线与球的求交代码
//
-------------------------------------------------------------------------
eiBool eiSphere::intersect(eiRay
*
ray, eiObject
*
po, eiFloat
&
oldt,
eiPrimitive
* &
ret_pri, eiFloat
*
cust_data,
HitParam
*
hparam)
{
if
( oldt
==
0.0f
||
ray_box( ray
->
src, hparam
->
hitPoint )
{
//
compute intersecting point
eiVector oc
=
add( ray
->
src,
-
center );
eiFloat oc_len
=
dist( oc );
if
( oc_len
>
radius
||
po
->
material
->
doubleSide )
{
eiFloat a
=
dot( ray
->
dir, ray
->
dir );
eiFloat b
=
2.0f
*
dot( oc, ray
->
dir);
eiFloat c
=
dot( oc, oc )
-
RR;
eiFloat dt
=
b
*
b
-
4.0f
*
a
*
c;
eiFloat t;
if
(a
==
0.0f
||
dt
<
0.0f
)
return
false
;
else
if
(dt
==
0.0f
)
{
t
=
-
b
/
a
*
0.5f
;
if
(t
<
0.0f
)
return
false
;
}
else
{
a
=
0.5f
/
a;
eiFloat t1
=
(
-
b
+
sqrtf( dt ))
*
a;
eiFloat t2
=
(
-
b
-
sqrtf( dt ))
*
a;
if
(t1
>
0.0f
&&
t2
<
0.0f
)
t
=
t1;
else
if
(t1
<
0.0f
&&
t2
>
0.0f
)
t
=
t2;
else
if
(t1
>
0.0f
&&
t2
>
0.0f
)
t
=
(t1
<
t2)
?
t1 : t2;
else
return
false
;
}
eiVector tmpIntersection
=
add(ray
->
src, mulvf(ray
->
dir,t));
//
affect shadow factor
if
(ray
->
type
==
RAY_SHADOW)
hparam
->
shadow_factor
*=
1.0f
-
po
->
material
->
opacity;
//
find nearest hit point
if
(oldt
==
0.0f
||
t
<
oldt)
{
hparam
->
hitPoint
=
tmpIntersection;
hparam
->
hitObj
=
po;
ret_pri
=
this
;
oldt
=
t;
//
fill custom data
return
true
;
}
}
}
return
false
;
}
查看全文
相关阅读:
B. Random Teams(Codeforces Round 273)
Unity3d中的属性(Attributes)整理
Python 的 Flask 框架安装应用
动态SQL(章节摘要)
Linux系统PWM驱动【转】
嵌入式电路中的BUCK VS LDO【转】
git用法-打补丁【转】
展讯7731C_M Android6.0 充电指示灯实现(一)------关机充电实现【转】
Android 充电信息的获取【转】
2.Android硬件访问服务编写系统代码【转】
原文地址:https://www.cnblogs.com/len3d/p/202305.html
最新文章
java环境配置
Oracle创建新undo表空间最佳实践(包含段检查)
Oracle 12.2报错ORA-15032、ORA-15410或ORA-15411解决
Oracle 10g RAC OCR、Voting disk更换
测试客户端连接12c ASM实例
使用dbms_profiler收集存储过程每步执行时间
测试12.2.0.1RAC PDB级别的Failover
Windows使用tail命令跟踪日志
关于PL/SQL Developer与Oracle客户端
chrome浏览器如何查看、修改、删除Cookie
热门文章
java、ajax 跨域请求解决方案('Access-Control-Allow-Origin' header is present on the requested resource. Origin '请求源' is therefore not allowed access.)
java 压缩图片(只缩小体积,不更改图片尺寸)
js 压缩图片(只缩小体积,不更改图片尺寸)
javaWeb如何转发数据,jsp页面如何接收?
用java打暴雪星际争霸(2)——执行測试机器人
Android图片载入框架最全解析(一),Glide的基本使用方法
POJ训练计划2528_Mayor's posters(线段树/成段更新+离散化)
Bluemix结合DevOps Service实现一键部署
雅虎站点页面性能优化的34条黄金守则
华硕 RT-AC54U路由器固件功能说明
Copyright © 2011-2022 走看看