热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

2.2与球体相交-几何解

现在,一个简单的球体相交例子已经被概述。这里有一些关于计算效率的概念。一个普遍的看法是,应该尽可能地避免使用平方根函数。检查计时:sqrt()耗时通常是乘法的15~30倍。类似的,除法比乘

  现在,一个简单的球体相交例子已经被概述。这里有一些关于计算效率的概念。

  一个普遍的看法是,应该尽可能地避免使用平方根函数。检查计时:sqrt()耗时通常是乘法的15~30倍。类似的,除法比乘法耗时更长,所以除法可以用乘以逆来代替。

  另一个观察的结果是,计算往往会被缩短。在球体情况下,许多测试检测了球体相交问题,这些测试的目的是避免非必要的计算。

  通过研究几何,问题的其他性质就变得明了了。

  例如,光线通常指向球外,这种不相交。通过研究这个可能,我们发现了另一种测试光线和球面相交的策略。

    1) 找出光线原点是否在球面外

    2) 找出光线最接近球体中心的地方

    3) 如果光线在球体外且指向远离球的方向,那么光线一定会错过球体

    4) 另外,求出离球体面最近的距离的平方

    5) 如果值为负,光线会错过球面

    6) 另外,从上面找出射线/表面距离

    7) 计算触点坐标[xi yi zi]

    8) 计算交点法线

  该策略将方程(A5)和(A6)分解成更短的表达式,并根据需要进行计算。条件3,5将检测射线偏离球面状况。并允许提前停止。

  以上内容将被充实和解释。从原始的射线(A1)和球面(A2)方程开始。首先,通过计算确定光线的来源是否在球内。

  

  如果L2ocr2,则光源在球内。若L2oc>=Sr2,则光源点在球外或者球内。然后有可能不与球相交。效率起见,可以提前计算并保存Sr2

  注意,起源于球体的光线不算击中球体。这是ray tracing的标准,反击和折射来自之前的相交处。在"精度问题"章节会讨论如何规避。

  在任何情况下,下一步都是计算球心到离他最近的线点的距离。这就等于求出射线与垂直于它的平面(穿过球心)的交点。

  

  tca<0,光线在球后。对于来自外部的光线,这意味着光线不能击中球体,另一种说法是,tca<0,射线指向原理球心,如图2

  

  一旦tca确定,从垂直点到球面的距离也就确定了。

  

  

  

  方程的几何意义展示在图3.这个计算引出了另一个关于关于光线是否击中球体的测试。如果t2hc<0,光线会错过球面,当然,以上都是建立在光源不在球内的基础上。

  

  

  使用A7,A8之前会使用到前面的方程。

  总结:

    1,找出球心到光源的距离

    2,找出球心最近的光源上的点

    3,测试光线是否在球外且指向球外

    4,找出thc

    5,判断thc2是否为负

    6,计算交距t

    7,找出交点

    8,计算交点和法线

 

 

 

 

 

 

 


推荐阅读
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文深入评测了创新G6外置游戏声卡,探讨其在游戏中的表现及独特功能,揭示其为何能在竞争激烈的市场中脱颖而出。 ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
author-avatar
小馨小慧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有