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
;
}
查看全文
相关阅读:
css3 实现水平或垂直布局
css div 细边框
css scroll bug
F和弦大横按
简单分析beyond作曲
[编织消息框架][设计协议]优化long,int转换
nginx 限制ip
nginx注册成服务
nginx 添加win 服务
sqlserver 使用维护计划备份
原文地址:https://www.cnblogs.com/len3d/p/202305.html
最新文章
数据库的连接
PHP 基础知识测试题 答案分析
CSS3详解:transform
函数指针
this指针
工厂模式
Django框架进阶5 models常用字段及参数, choices参数, 自动显示sql命令配置, orm查询优化相关, orm中的事务操作, MTV与MVC模型, 图书管理系统(图书的增删改查)
Django框架进阶4 模型层 ORM查询, test.py文件配置, 单表查询(必知避讳16条,双下划线查询), 多表查询(外键字段增删改查), 跨表查询(基于对象/双下划线的跨表查询),聚合查询, 分组查询, F与Q查询
Django框架进阶3 视图层(render简单实现原理, CBV与FBV, CBV源码), django setting源码, importlib方法, 模板层(模板语法的传值,过滤器,标签,自定义过滤器及标签inclusion_tag,模板的继承与导入), 基于django settings源码实现项目配置文件的 插拔式设计
Django框架进阶2 django orm表关系创建,django请求生命周期流程图,路由层(路由匹配,无名分组,有名分组,反向解析,路由分发,名称空间),虚拟环境,django版本区别,伪静态,视图层(三板斧继承HttpResponse,JsonResponse,form表单上传文件 后端如何获取)
热门文章
Django框架进阶 静态文件配置,request对象方法,pycharm连接数据库,django连接数据库,django orm简介,字段的增删改查,登录功能例子,数据的增删改查
Django框架介绍 python三大主流web框架之一,小白必会三板斧
前端 Bootstrap框架
前端 JQuery框架
前端 javascript 2 BOM与DOM操作
python基础语法21 re模块补充 正则表达式
[编织消息框架][设计协议]解决粘包半包(中)
学习扫弦心得
[编织消息框架][设计协议]解决粘包半包(上)
学习吉它心得
Copyright © 2011-2022 走看看