Three 圆柱坐标(Cylindrical)和 视锥体(Frustum)

圆柱坐标(Cylindrical)

圆柱坐标:一个点的cylindrical coordinates。英语:cylindrical coordinate system)是一种三维坐标系统。它是二维极坐标系往 z-轴的延伸。添加的第三个坐标 𝑧 专门用来表示 P 点离 xy-平面的高低。按照国际标准化组织建立的约定 (ISO 31-11) ,径向距离、方位角、高度,分别标记为 (𝜌 , 𝜙, 𝑧)。

一般使用(radius,theta,height)来表示点位坐标,三个值可以根据实际使用情况做互换

平面直角坐标系,一般以 (x,y) 两个数值来表示点位坐标
极坐标系,一般以(radius,theta),半径和旋转角度来表示点位坐标

极坐标系和平面直角坐标系可以互相转换:

	//平面直角坐标系转极坐标系let radius = Math.sqrt( x * x + y * y );let theta = Math.atan( y / x );//极坐标系转平面直角坐标系let x = radius * Math.cos(theta);let y = radius * Math.sin(theta);

构造器(Constructor)

Cylindrical( radius : Float, theta : Float, y : Float )

radius - 从原点到x-z平面上一点的距离 默认值为 1.0.
theta - 在x-z平面内的逆时针角度,以z轴正方向的计算弧度。默认值为0。
y - x-z平面以上的高度 默认值为 0.

属性(Properties)

# .radius : Float

radius - 从原点到x-z平面上一点的距离 默认值为 1.0.

# .theta : Float

theta - 在x-z平面内的逆时针角度,以z轴正方向的计算弧度。默认值为0。

# .y : Float

y - x-z平面以上的高度 默认值为 0.

Methods

# .clone () : Cylindrical

返回一个与当前拥有相同 radius, theta 和 y 属性的圆柱坐标。

# .copy ( other : Cylindrical ) : Cylindrical

将传入的圆柱坐标对象的 radius, theta 和 y 属性赋给当前对象。

# .set ( radius : Float, theta : Float, y : Float ) : Cylindrical

设置该对象的 radius, theta 和 y 属性。

# .setFromVector3 ( vec3 : Vector3 ) : Cylindrical

从 Vector3 中取x,y,z,并调用setFromCartesianCoords来设置圆柱坐标的 radius、theta 和 y 的属性值。

# .setFromCartesianCoords ( x : Float, y : Float, z : Float ) : Cylindrical

使用笛卡尔坐标来设置该圆柱坐标中 radius, theta 以及 y 的属性值。

视锥体(Frustum)

Frustums 用于确定相机视野内的东西。 它有助于加速渲染过程——位于摄像机视锥体外的物体可以安全地排除在渲染之外。

该类主要用于渲染器内部计算 camera 或 shadowCamera的视锥体。

构造器(Constructor)

Frustum(p0 : Plane, p1 : Plane, p2 : Plane, p3 : Plane, p4 : Plane, p5 : Plane)

p0 - (可选参数) Plane.
p1 - (可选参数) Plane.
p2 - (可选参数) Plane.
p3 - (可选参数) Plane.
p4 - (可选参数) Plane.
p5 - (可选参数) Plane.

使用6个面来构建一个视锥体。

属性(Properties)

# .planes : Array

包含6个平面 planes 的数组。

方法(Methods)

# .clone () : Frustum

返回一个与当前对象有相同参数的视锥体。

# .containsPoint ( point : Vector3 ) : Boolean

point - Vector3 to test.

检测该点 point 是否在视锥体内。

# .copy ( frustum : Frustum ) : Frustum

frustum - 用于拷贝的视锥体。

将传入 frustum 的属性拷贝到当前对象。

# .intersectsBox ( box : Box3 ) : Boolean

box - Box3 用于检测是否要交的包围盒。

返回 true 如果该 box 与视锥体相交。

# .intersectsObject ( object : Object3D ) : Boolean

检测 object 的包围球 bounding sphere 是否与视锥体相交。

注意:该对象必须有一个 Geometry 或 BufferGeometry ,因为这样才能计算出包围球。

# .intersectsSphere ( sphere : Sphere ) : Boolean

sphere - Sphere 用于检查是否相交。

返回true 如果球sphere与视锥体相交。

# .intersectsSprite ( sprite : Sprite ) : Boolean

检查精灵sprite是否与截锥体相交。

# .set ( p0 : Plane, p1 : Plane, p2 : Plane, p3 : Plane, p4 : Plane, p5 : Plane ) : Frustum

使用传入的平面设置当前视锥体。没有隐式的顺序。

# .setFromMatrix ( matrix : Matrix4 ) : Frustum

matrix - Matrix4 用于设置 planes

WebGLRenderer 使用 Camera的投影矩阵(projectionMatrix ) 和相机世界变换矩阵的逆矩阵 matrixWorldInverse 来设置视锥体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++】VSCode 插件支持

C/C基础 C/C(包括C/C IntelliSense, debugging, and code browsing.)C/C Theme:UI Themes for C/C extension.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code llVM增强 CodeLLDB:这个插件就是安装llvm…

基于FPGA的图像边缘检测(OV5640)

一、简介 1.应用范围 边缘主要存在于图像中目标与目标之间,目标与背景之间,区域与区域之间。 边缘检测的目的就是找到图像中亮度变化剧烈的像素点构成的集合,表现出来往往是轮廓。如果图像中边缘能够精确的测量和定位,那么&…

GaussDB关键技术原理:高性能(四)

GaussDB关键技术原理:高性能(三)从查询重写RBO、物理优化CBO、分布式优化器、布式执行框架、轻量全局事务管理GTM-lite等五方面对高性能关键技术进行了解读,本篇将从USTORE存储引擎、计划缓存计划技术、数据分区与分区剪枝、列式存…

SQLServer设置端口

要在SQL Server中设置端口,您需要修改配置文件sqlserver.ini。请按照以下步骤操作: 找到SQL Server的安装目录。通常情况下,它位于C:\Program Files\Microsoft SQL Server\MSSQLxx.InstanceName,其中xx是SQL Server的版本号&#…

Redis 7.x 系列【19】管道

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 往返时间2. 管道技术3. 代码演示4. 其他批处理4.1 原生批处理命令4.2 事务4.3 脚本…

240708_昇思学习打卡-Day20-MindNLP ChatGLM-6B StreamChat

240708_昇思学习打卡-Day20-MindNLP ChatGLM-6B StreamChat 基于MindNLP和ChatGLM-6B实现一个聊天应用,本文进行简单记录。 环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mi…

ArkTs基础入门

ArkTs基础入门 文章目录 一、 (方舟开发框架)ArkUI介绍二、自定义组件三、组件事件及使用弹出框分割线Text文本TextInput文本输入框Image图片Column列Row行Button按钮 一、 (方舟开发框架)ArkUI介绍 方舟开发框架(简称:ArkUI),是…

Java | Leetcode Java题解之第224题基本计算器

题目&#xff1a; 题解&#xff1a; class Solution {public int calculate(String s) {Deque<Integer> ops new LinkedList<Integer>();ops.push(1);int sign 1;int ret 0;int n s.length();int i 0;while (i < n) {if (s.charAt(i) ) {i;} else if (s…

实施OPC UA网关以加速设备与MES系统之间的连接

在现代工业自动化中&#xff0c;信息化和智能化已成为企业提升竞争力的关键因素&#xff0c;为了实现生产过程的自动化和管理的高效化&#xff0c;工业自动化系统&#xff08;如OPC UA&#xff09;与制造执行系统&#xff08;MES&#xff09;的集成变得尤为重要。OPC UA&#x…

Pycharm 出现sdk is not defined for run configuration解决办法

第一步&#xff1a;运行->编辑配置 第二部&#xff1a;重新选择一下脚本路径和Python解释器 第三步&#xff1a;保存。重新运行

WebKit简介及其神秘的工作流程

在信息时代的巨浪中&#xff0c;互联网已经深深地渗透到了我们生活的每一个角落。作为连接我们与这个庞大网络世界的桥梁&#xff0c;网页浏览器无疑成为了我们生活中不可或缺的一部分。而在这些浏览器的背后&#xff0c;往往隐藏着一些强大而神秘的引擎&#xff0c;它们为浏览…

Openresty+lua 定时函数 ngx.timer.every

ngx.timer.every 是 OpenResty 中的一个函数&#xff0c;用于创建定时器&#xff0c;以便定期执行某个函数或代码块。它的用法如下&#xff1a; local delay 5 -- 定时器间隔时间&#xff0c;单位为秒ngx.timer.every(delay, function(premature)-- 这里是定时执行的代码块i…

鸿蒙系统:未来智能生态的引领者

在当今这个日新月异的互联网领域&#xff0c;操作系统作为连接硬件与软件的桥梁&#xff0c;其重要性不言而喻。随着华为鸿蒙系统&#xff08;HarmonyOS&#xff09;的崛起&#xff0c;一场关于操作系统未来的讨论再次被推向高潮。 鸿蒙OS&#xff0c;华为的全新力作&#xff…

LLM生成nvidia-h100-tensor-core-hopper-whitepaper.pdf摘要

LLM生成nvidia-h100-tensor-core-hopper-whitepaper.pdf摘要 代码 LLM生成nvidia-h100-tensor-core-hopper-whitepaper.pdf摘要 代码 import pdfplumber import timedef split_text_to_chunks(text, max_chunk_size8192, delimiter####):"""将长文本分割成多块…

网络模型介绍

网络模型在网络领域中主要指的是用于描述计算机网络系统功能的各种框架&#xff0c;其中最具代表性的两种模型是OSI七层参考模型和TCP/IP四层参考模型。以下是对这两种网络模型的详细解析&#xff1a; 一、OSI七层参考模型 OSI&#xff08;Open System Interconnection&#…

Python变量·二

# 变量 : 可变的量 # 1. 作用是用来存储数据, 为了方便以后使用它做别的运算 # 2. 定义变量时,不需要固定类型(弱类型: 动态数据类型) # 定义一个变量: # 将10这个值 赋值 给变量a (a是我们自己取的变量名) a 10 # 重点掌握 print(a, type(a)) # 10 <class int>…

K8S篇之Ingress详解以及用法说明

一、Ingress简介 Ingress 是 Kubernetes 中用于管理和配置从集群外部访问集群内部服务的资源对象。它通过定义路由规则来控制外部流量的访问方式&#xff0c;支持基于 HTTP 和 HTTPS 的高级路由功能和安全性配置。 Ingress是一种HTTP方式的路由转发机制&#xff0c;为K8S服务配…

AGAST (角点检测)

AGAST检测原理 AGAST(Adaptive and Generic Accelerated Segment Test)算法是Elmar于2010年提出的特征检测算法,改进了FAST(Features from Accelerated Segment Test)特征检测方法,使其具有更快的速度和更好的鲁棒性。AGAST算法提供了比FAST算法更详细的特征标记方式和判断依…

【Python_GUI】tkinter模块、创建空白窗口

tkinter是使用Python进行窗口视觉设计的模块&#xff0c;它是Python的标准Tk GUI工具包的接口&#xff0c;在安装Python时&#xff0c;就自动安装了该模块。 使用tkinter模块开发时&#xff0c;最核心的就是各种组件的使用。生活中玩积木时&#xff0c;通过将不同形状的木板进…

在安卓中使用FFmpeg录制摄像头的视频

在移动应用开发中&#xff0c;有时需要利用设备的摄像头录制视频&#xff0c;并且希望在录制过程中能够精确控制视频的质量、格式和时长。FFmpeg作为一个强大的多媒体处理工具&#xff0c;提供了广泛的功能和选项&#xff0c;能够帮助我们实现这样的需求。 添加依赖 在安卓平台…