当前位置: 首页 > news >正文

VTK知识学习(8)-坐标系统

1、概述

计算机图形学里常用的坐标系统有4种:
   1)、Model坐标系统。定义模型时所采用的坐标系统,通常是局部的笛卡儿坐标系。

   2)、World坐标系统。是放置Actor的三维空间坐标系。
             Actor(vtkActor类)其中的一个功能就是负责将模型从Model坐标系统变换到World坐标系统。
             每一个模型可以定义自己的Model坐标,但World坐标系只有一个,每一个Actor必须通过放缩、放置、平移等操作将Model坐标变换到World坐标系。
             World坐标系同时也是相机和灯光所在的坐标系统。

   3)、view坐标系统。是相机所看见的坐标系统。
             XYZ轴取值为[-1,1],XY值表示像平面上的位置,Z值表示到相机的距离。相机负责将World坐标系变换到View坐标系。

   4)、Display坐标系统。与View坐标系统类似,但各坐标的坐标值不是[-1,1],而是使用屏幕像素值。

另外还有两种表示坐标点的方式:
     以屏幕像素值为单位和归一化坐标值 。

它们之间的关系如图所示。

2、坐标系细分

Display X、Y轴的坐标取值为渲染窗口的像素值。坐标原点位于渲染窗口的左下角。
NORMALIZED DISPLAY X、Y轴坐标取值范围为[0,1],跟DISPLAY一样,也是定义在渲染窗口里的。
VIEWPORT X、Y的坐标值定义在视口或者渲染器(Renderer)里。
NORMALIZED VIEWPORT X、Y坐标值定义在视口或渲染器里,取值范围为[0,1].
VIEW X、Y、Z坐标值定义在相机所在的坐标系里,取值范围为[-1,1],Z值表示深度信息。
WORLD X、Y、Z坐标值定义在世界坐标系。
USERDEFINED 用户自定义坐标系统。

vtkCoordinate可以用来表示坐标系统,其内部提供了函数接口来定义坐标系统:

SetCoordinateSystemToDisplay()
SetCoordinateSystemToNormalizedDisplay()
SetCoordinateSystemToViewport()
SetCoordinateSystemToNormalizedViewport()
SetCoordinateSystemToView()
SetCoordinateSystemToWorld()

3、示例代码

vtkConeSource cone = vtkConeSource.New();            
vtkCubeSource cube = vtkCubeSource.New();
vtkCylinderSource cylinder = vtkCylinderSource.New();
vtkSphereSource sphere = vtkSphereSource.New();vtkPolyDataMapper coneMapper = vtkPolyDataMapper.New();
coneMapper.SetInputConnection(cone.GetOutputPort());
vtkPolyDataMapper cubeMapper = vtkPolyDataMapper.New();
cubeMapper.SetInputConnection(cube.GetOutputPort());
vtkPolyDataMapper cylinderMapper = vtkPolyDataMapper.New();
cylinderMapper.SetInputConnection(cylinder.GetOutputPort());
vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New();
sphereMapper.SetInputConnection(sphere.GetOutputPort());vtkActor coneActor = vtkActor.New();
coneActor.SetMapper(coneMapper);
vtkActor cubeActor = vtkActor.New();
cubeActor.SetMapper(cubeMapper);
vtkActor cylinderActor = vtkActor.New();
cylinderActor.SetMapper(cylinderMapper);
vtkActor sphereActor = vtkActor.New();
sphereActor.SetMapper(sphereMapper);//将一个窗口分为4个视图
vtkRenderer renderer1 = vtkRenderer.New();
renderer1.AddActor(coneActor);
renderer1.SetBackground(1.0, 0.0, 0.0);
renderer1.SetViewport(0.0, 0.0, 0.5, 0.5);
vtkRenderer renderer2 = vtkRenderer.New();
renderer2.AddActor(cubeActor);
renderer2.SetBackground(0.0, 1.0, 0.0);
renderer2.SetViewport(0.5, 0.0, 1.0, 0.5);
vtkRenderer renderer3 = vtkRenderer.New();
renderer3.AddActor(cylinderActor);
renderer3.SetBackground(0.0, 0.0, 1.0);
renderer3.SetViewport(0.0, 0.5, 0.5, 1.0);
vtkRenderer renderer4 = vtkRenderer.New();
renderer4.AddActor(sphereActor);
renderer4.SetBackground(1.0, 1.0, 0.0);
renderer4.SetViewport(0.5, 0.5, 1.0, 1.0);vtkRenderWindow renWin = renderWindowControl.RenderWindow;
renWin.AddRenderer(renderer1);
renWin.AddRenderer(renderer2);
renWin.AddRenderer(renderer3);
renWin.AddRenderer(renderer4);
renWin.SetWindowName("Viewport");
renWin.Render();

4、效果

相关文章:

VTK知识学习(8)-坐标系统

1、概述 计算机图形学里常用的坐标系统有4种: 1)、Model坐标系统。定义模型时所采用的坐标系统,通常是局部的笛卡儿坐标系。 2)、World坐标系统。是放置Actor的三维空间坐标系。 Actor(vtkActor类&am…...

IO流部分串讲

一、IO流的概念简析: java将输入与输出比喻为"流",英文:Stream. 就像生活中的"电流","水流"一样,它是以同一个方向顺序移动的过程.只不过这里流动的是字节(2进制数据).所以在IO中有输入流和输出流之分,我们理解他们是连接…...

Excel——宏教程(2)

Excel——宏教程(2) 一)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量,这是在excel中最简单的单元格赋值及引用方法。 如下例将工作表"Sheet1"A1单元格的值赋给Integer变量I,并将I1的值…...

unity 中 RectTransform 的常用几个属性

RectTransform rectTransform this.GetComponent<RectTransform>(); rectTransform this.transform as RectTransform; Vector3 vector1 rectTransform.position; //自身轴心点相对于锚点的位置&#xff08;编译器显示的pos&#xff09; …...

项目-摄像

树莓派摄像头使用方法 Camera教程 https://www.raspi.cc/index.php?cread&id53&page1 nanopc-t4 ​https://www.raspi.cc/index.php?cread&id53&page1 摄像头型号 Raspberry Pi Camera Rev 1.3 检测故障 dmesg | grep -i mipi piNanoPC-T4:~$ dmesg | …...

摄像机ISP和DSP的区别?

影像处理器是现代数字相机、手机等电子设备中极其重要的一部分&#xff0c;它能够对传感器采集的图像进行多种操作&#xff0c;从而得到更高质量的图像。常见的两种影像处理芯片有ISP&#xff08;Image Signal Processor&#xff09;和DSP&#xff08;Digital Signal Processor…...

Ubuntu24安装配置NDK

1、下载NDK 下载压缩包&#xff0c;下载地址如下&#xff0c;建议下载LTS支持版本。 https://developer.android.google.cn/ndk/downloads?hlcs 2、解压缩 将NDK解压到指定文件夹。如&#xff1a;/opt 或者先解压&#xff0c;再移动到指定目录下。 3、配置环境变量 找到…...

【Next】中间件

概述 Next.js 的 中间件 (Middleware) 是一种在请求完成之前运行的函数&#xff0c;用于对入站请求进行处理和操作。它可以在路由匹配前执行逻辑&#xff0c;用于身份验证、请求重写、重定向、设置响应头等任务。 使用场景 身份验证&#xff1a;在用户访问页面前检查登录状态…...

Vulnhub靶场案例渗透[11]- Momentum2

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建 1. 靶场描述 - Difficulty : medium - Keywords : curl, bash, code reviewThis wor…...

STM32设计防丢防摔智能行李箱-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展&#xff0c;嵌入式系统、物联网技术、智能设备…...

Vue Mixin混入机制

在 Vue.js 中&#xff0c;Mixin&#xff08;混入&#xff09;是一种可复用代码的机制&#xff0c;用于在多个组件之间共享逻辑。通过混入&#xff0c;可以将通用功能提取到一个独立的文件中&#xff0c;然后在组件中引入并使用&#xff0c;而无需重复代码。 基本概念 Mixin 是…...

数据库类型建表

接着上次的数据库笔记&#xff1a; 初始数据库 &#xff08;是博主自己写的&#xff09; 1.数据库类型 1.1数值类型 数据类型大小说明对应JAVA类型BIT[(M)]M指定位数&#xff0c;默认值为1二进制数&#xff0c;M的范围从1—64&#xff0c;存储数值范围从0—2^M-1常用Bool…...

iOS 18 导航栏插入动画会导致背景短暂变白的解决

问题现象 在最新的 iOS 18 系统中,如果我们执行导航栏的插入动画,可能会造成导航栏背景短暂地变为白色: 如上图所示:我们分别向主视图和 Sheet 弹出视图的导航栏插入了消息,并应用了动画效果。可以看到,前者的导航栏背景会在消息插入那一霎那“变白”,而后者则没有任何…...

深度学习之人脸检测

在目标检测领域可以划分为了人脸检测与通用目标检测&#xff0c;往往人脸这方面会有专门的算法&#xff08;包括人脸检测、人脸识别、人脸其他属性的识别等等&#xff09;&#xff0c;并且和通用目标检测&#xff08;识别&#xff09;会有一定的差别&#xff0c;着主要来源于人…...

解决前后端发版本时候,手动清除浏览器缓存

在.html页面中添加标签 后端配置nginx,让index.html不缓存 location /index.html { add_header Cache-Control “no-cache, no-store”; }在vite.config.ts中添加 rollupOpyions: { output: { // 输出编译后的文件名称&#xff1a;【文件名称.时间戳】、【文件名称.版本号.…...

mysql8.4+mysql router读写分离

以下为容器环境内搭建 准备工作: 拉取镜像: 镜像版本mysql8.4container-registry.oracle.com/mysql/community-router8.4 下载mysql_shell mysql-shell-9.0.1-linux-glibc2.17-x86-64bit.tar.gz 下载地址: https://downloads.mysql.com/archives/shell/ 参考 这里对这篇文章…...

鸿蒙NEXT开发-用户通知服务的封装和文件下载通知

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

RHCE——系统的延迟任务及定时任务

延迟任务的发起 在系统中我们可以使用 at 命令来发起延迟任务 at 命令执行是调用的是 atd 服务&#xff0c;即使系统最小化安装 atd 也会被安装到系统中 at 任务信息存放在系统中 /var/spool/at 目录中 at 任务的日志文件被存放到 /var/log/cron 中 at 任务执行时如果遇…...

ForEach刷新UI机制

官网地址&#xff1a;ForEach 在ArkUI中&#xff0c;提供了ForEach循环语句&#xff0c;用来初始化一个列表数据&#xff0c;我们知道&#xff0c;当ForEach中的数组发生变化时&#xff0c;会引起UI的刷新&#xff0c;但是究竟如何变化&#xff0c;会引起UI怎样的刷新&#xf…...

机器学习(贝叶斯算法,决策树)

朴素贝叶斯分类 贝叶斯分类理论 假设现有两个数据集&#xff0c;分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率&#xff0c;用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率&#xff0c;那么对于一个新数据点(x,y)…...

AI工作流框架实战:从脚本到自动化流程的架构设计与应用

1. 项目概述&#xff1a;当AI遇上工作流最近在折腾自动化工具链&#xff0c;发现一个挺有意思的项目叫ai-flow。这名字听起来就挺直白&#xff0c;AI 工作流。简单来说&#xff0c;它就是一个用代码来编排和自动化AI任务&#xff08;比如调用大语言模型、处理数据、执行特定操…...

Midjourney生成图落地PS的7大断层痛点:从提示词对齐、分辨率陷阱到图层级精修,一文打通AI与专业图像处理全链路

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney与Photoshop整合方案的底层逻辑与工作流重构 Midjourney 生成的图像虽具高美学质量&#xff0c;但缺乏图层控制、非破坏性编辑及像素级精度&#xff0c;而 Photoshop 正是弥补这一缺口的核心…...

可解释AI评估指南:从原型纯度到TCAV分数的量化度量体系

1. 项目概述&#xff1a;为什么我们需要量化评估可解释AI&#xff1f;在人工智能&#xff0c;尤其是深度学习模型日益渗透到医疗诊断、自动驾驶、金融风控等关键领域的今天&#xff0c;一个核心的信任危机始终悬而未决&#xff1a;我们如何相信一个“黑箱”模型做出的决策&…...

3PEAK思瑞浦 TPA1882Q-SO1R-S SOP8 运算放大器

特性 供电电压:4.5伏至36伏或2.25伏至18伏 偏移电压:最大50V 差分输入电压范围至电源轨&#xff0c;可作为比较器工作 输入轨至-Vs&#xff0c;轨到轨输出 带宽:12MHz&#xff0c;斜率:10V/us 优异的EMI抑制性能:1GHz时85dB 过温保护 低噪声:1kHz时为10nV/vHz 符合AEC-Q100认证…...

从零构建开源任务管理中枢:TaskWing部署、插件化与自动化实战

1. 项目概述&#xff1a;从零到一&#xff0c;打造你的个人任务管理中枢如果你和我一样&#xff0c;每天被各种待办事项、项目进度、临时想法和会议记录搞得焦头烂额&#xff0c;那么你肯定不止一次地想过&#xff1a;有没有一个工具&#xff0c;能真正“懂”我&#xff0c;能把…...

AI原生图计算不是“加个GNN层”那么简单:SITS 2026定义的5层工程化成熟度模型(附自测清单+迁移路线图)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生图计算应用&#xff1a;SITS 2026图神经网络工程化方案 SITS 2026 是面向大规模动态图场景的AI原生图计算框架&#xff0c;深度融合GNN训练、图拓扑实时更新与边缘-云协同推理能力。其核心设计摒…...

论文AI率太高怎么救?答辩前1周降AI率完整攻略+不延期方案!

论文AI率太高怎么救&#xff1f;答辩前1周降AI率完整攻略不延期方案&#xff01; 导师周一通知答辩、周五查出来知网 AIGC 检测 67%——这种倒计时场景每年 3-5 月毕业季都会上演几千次。 这种场景下选工具&#xff0c;最关键的不是「单价便宜」是「降不下来怎么办」。1 周时间…...

彻底告别Ubuntu 20.04休眠唤醒黑屏:除了降级驱动,你还可以这样一劳永逸地禁用挂起

彻底告别Ubuntu 20.04休眠唤醒黑屏&#xff1a;系统级电源管理优化指南 如果你正在使用Ubuntu 20.04并频繁遭遇休眠唤醒后的黑屏问题&#xff0c;这篇文章将为你提供一套完整的解决方案。不同于常见的驱动降级方案&#xff0c;我们将从系统配置层面入手&#xff0c;通过调整电源…...

别再到处找激活码了!手把手教你用vlmcsd在Windows上自建KMS服务器(附各版本密钥)

企业级Windows批量激活解决方案&#xff1a;安全高效的本地KMS部署指南 在数字化办公环境中&#xff0c;批量激活Windows操作系统一直是IT管理员面临的常见挑战。传统单机激活方式效率低下&#xff0c;而依赖外部KMS服务器又存在连接不稳定、隐私泄露等潜在风险。本文将深入探讨…...

ESLyric-LyricsSource:Foobar2000高级逐字歌词同步解决方案技术指南

ESLyric-LyricsSource&#xff1a;Foobar2000高级逐字歌词同步解决方案技术指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource ESLyric-LyricsSource 是…...