垂直于圆锥体的曲面

2023-12-10

我用 OpenGL/C++ 编写一个程序来对圆锥体进行光线追踪。对于我的强度计算,我需要知道表面法线。给定基础半径、高度和中心坐标,如何计算表面法线?


我假设您需要在给定表面上的点的情况下找到表面的法线。我进一步假设这是一个圆锥体,其底座朝下(-y 轴),圆锥体的尖端朝上(+y 轴)。如果不符合这些条件,我可以编辑我的答案以适合您的情况。

我们将曲面上的点称为 P,中心坐标为 C,半径为 r,高度为 h,法线为 N。

所有点和向量都具有三个分量(x、y、z),因此我将使用“.”来引用它们。例如 P.x 是 P 的 x 分量。

首先,我们需要一个投影到 x/z 平面上的单位向量,该向量从 C 指向 P。

V.x = P.x - C.x
V.y = 0
V.z = P.z - C.z

该向量具有正确的方向,但幅度大于一。它还不是单位向量,因此我们必须相应地缩放它。

m = sqrt(V.x^2 + V.z^2)

m 现在是 V 的大小,我们将用它来缩放 V:

V.x /= m
V.z /= m

找到法线的最终计算是:

N.x = V.x * h/r
N.y = r/h
N.z = V.z * h/r
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垂直于圆锥体的曲面 的相关文章

  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 适用于图形应用程序的快速、像素精度 2D 绘图 API?

    我想创建一个跨平台的绘图程序 编写应用程序的一个要求是画布上具有像素级精度 例如 我想编写自己的画线算法 而不是依赖别人的 我不想要任何形式的抗锯齿 同样 需要像素级控制 我希望屏幕上的用户交互快速且响应灵敏 取决于我编写快速算法的能力 理
  • 什么是稀疏体素八叉树?

    我读了很多关于稀疏体素八叉树在未来图形引擎中的潜在用途的文章 但是我一直无法找到有关它们的技术信息 我理解体素是什么 但是我不知道稀疏体素八叉树是什么 或者它们如何比现在使用的多边形技术更有效 有人可以解释或指出我对此的解释吗 这是一个关于
  • 为什么 OpenGL 有远裁剪平面,以及使用什么惯用法来处理这个问题?

    我一直在学习 OpenGL 持续困扰我的一个话题是远裁剪平面 虽然我可以理解近剪裁平面和侧剪裁平面 它们永远不会产生任何实际效果 因为它们之外的对象无论如何都不会被渲染 背后的推理 但远剪裁平面似乎只是一个烦恼 由于 OpenGL 背后的人
  • 图形未在 JLayeredPane 中显示(java swing)

    我正在尝试根据用户输入逐步构建图像 我想做的是创建一堆图形并将它们添加为图层 但是我遇到了一些问题 因为它们不会显示 这是我正在使用的代码 public class ClassA protected final static int dim
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • GL_COLOR_ATTACHMENT 有什么作用?

    我现在正在学习帧缓冲区 但我只是不明白颜色附件的作用 我了解帧缓冲区 第二个参数的意义是什么 glFramebufferTexture2D GL FRAMEBUFFER GL COLOR ATTACHMENT0 GL TEXTURE 2D
  • Swift 3:绘制矩形

    我刚接触 swift 三天 我正在尝试弄清楚如何绘制矩形 我对这门语言太陌生 不知道要扩展的类和要重写的方法 并且我四处寻找示例代码 但似乎没有任何效果 我将其归因于我对 swift 3 的使用 我现在正在尝试的是 import UIKit
  • 如何让文字发光?

    我们可以将发光效果应用于任何文本 如下所示 Updated Please also tell me what things i need to create something like this 我需要为此使用特殊字体吗 如何使用以下命令
  • 如何使 CSS 动画/过渡以固定速度而不是固定持续时间播放? [复制]

    这个问题在这里已经有答案了 我有一个 CSS 动画 可以使元素沿直线移动未定义的距离 据我所知 动画具有固定的持续时间 因此无论元素必须移动多远 动画始终需要相同的时间来运行 我该如何制作才能使动画没有固定的duration 但有固定的运动
  • 如何创建具有倾斜效果的 NSAffineTransform?

    我对用 Cocoa 绘图还很陌生 并且正在开发一个涉及六边形网格的实验性应用程序 为了简化这个过程 我想倾斜坐标系 使 Y 轴向左旋转 30 度 我在苹果手机上看到了这个可可绘图指南 https developer apple com li
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9
  • Java制作一条有向线并使其移动

    我想画一条有向线并让它移动 我能够绘制一条有向线并移动该线 但当我移动该线时箭头会移位 这是我的绘画方法 Line2D Double line new Line2D Double startX startY endX endY g2d dr
  • Linux下显卡内存使用情况

    Linux下有哪些工具可以监控显卡内存使用情况 NVIDIA 性能套件 http developer nvidia com content nvidia perfkit有Linux版本 可以实时监控各种显卡属性 包括显卡内存使用情况 显然
  • BBC Basic:无法在屏幕上绘制矩形

    我最近拿到了一台 BBC Micro B 型 并将其作为一个业余爱好项目 我在使用图形命令时遇到了一些问题 想知道是否有人可以指出我正确的方向 我编写了以下测试程序来在屏幕上绘制一个矩形 10 CLS 20 MODE 5 30 MOVE 0
  • 覆盖 JButton PaintComponent() 不起作用 java

    我想绘制我自己的 JButton 版本 所以我重写了paintComponent 方法 并绘制了一个渐变的roundRect 这是可行的 但之后 我想在其上绘制按钮的字符串 并且在编译时 我没有收到任何错误消息 但在运行时 我只看到 rou
  • GDI 已加速。有谁知道这是什么时候发生的?

    概述这个问题的背景 在工作中我们使用 Dell Precision 工作站 我目前的电脑是 NVidia Quadro FX1700 我的团队正在开发实时数据采集系统的图形组件 因此 我们总是留意图形操作是否不会占用太多 CPU 时间 为了
  • 绘图不适合 R 窗口

    我正在使用metaR 中的包对比例进行荟萃分析 我的分析中有大约一百项研究 当我打字时forest result 创建我的森林图 它可以工作 但图形在顶部和底部被切掉 无论我做什么 它都不适合绘图窗口 我对如何解决这个问题感到困惑 有任何想
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • AffineTransform.rotate() - 如何同时缩放、旋转和缩放?

    我有以下代码 它可以完成我想要绘制一个上面有一些棋子的棋盘的 第一部分 Image pieceImage getImage currentPiece int pieceHeight pieceImage getHeight null dou

随机推荐

  • 在 Windows 批处理中转义特殊字符

    我有一个批处理文件 它接收路径作为第一个参数 该路径始终由特殊字符组成 例如 or 调用类似于这样 D Script gt MyBatch My path test 00170 LASTNAME Firstname image 总是出现这个
  • 我当前在 Eclipse MacOS Big Sur 上进行 GDB 调试时遇到错误

    在 Big Sur 上通过 Homebrew 安装 GDB 后 我目前遇到了一个奇怪的错误 我已经正确配置了 Eclipse 的所有内容 我的 GDB 链接为调试器 但是 每次我尝试启动调试时 都没有任何反应 并且控制台中出现以下内容 00
  • e.keyCode 不起作用

    我想问你一些对我不起作用的事情 如果你能帮助我的话 Html
  • 在 Inno Setup Run 部分命令中扩展 .NET 路径常量时的错误处理/忽略

    我有一个 NET DLL 可以通过以下方式注册RegAsm NET 3 5 和 NET 4 5 我在我的设置脚本中使用以下代码 Run Filename dotnet40 RegAsm exe Parameters my dll Worki
  • pyspark 与 scala 中的 FPgrowth 计算关联

    Using http spark apache org docs 1 6 1 mllib frequent pattern mining html Python代码 from pyspark mllib fpm import FPGrowt
  • 如何在php中逐行读取

    当我尝试将每一行插入 Oracle 数据库时 我收到一条错误 指出数字无效 但如果文件中只有一行 则可以正常工作 file fopen file text r while there is another line to read in t
  • 如何使 document.querySelector 在 IE6 中工作

    我在一个网站上工作 我得到了一个在 Internet Explorer 6 中不起作用的 JavaScript 函数 我知道 document querySelector selector 只工作在 Internet Explorer 8
  • PHP 的 DOM 和 SimpleXML 扩展之间有什么区别?

    我无法理解为什么 PHP 中需要 2 个 XML 解析器 有人能解释一下这两者之间的区别吗 简而言之 简单XML 适用于简单的 XML 和 或简单的用例 与节点一起使用的 API 有限 例如 无法对接口进行太多编程 所有节点都是同类 元素节
  • Pandas 重叠重采样

    我想对我的时间索引 DataFrame 进行一些重叠的重新采样 例如 gt gt gt df data date 2018 03 09 12 00 00 1 2018 03 09 12 00 01 1 2018 03 09 12 00 02
  • ARM 系统调用作为 C++ 模板

    我需要在 newlib 存根中调用一些系统调用 当前的实现使用 C 宏 随着时间的推移 这些宏变得不可读且看起来很糟糕 我讨厌宏 然而 我使用 C 模板的实现仅适用于一个参数 template
  • PHP应用程序的评论和回复的递归函数

    我很难概念化用于附加对评论的回复 对回复的回复 对回复的回复的回复等的递归函数 这是我的评论表 Which SHOULD渲染时看起来像这样 按照目前的情况 我可以呈现与article id相关的每条评论 不包括那些NOT NULL 当然 c
  • 获取实现某个抽象类的所有类

    我试图获取实现某个抽象类的所有类 我正在尝试使用以下代码来做到这一点 var type typeof BaseViewComponent var types Assembly GetEntryAssembly GetReferencedAs
  • 媒体播放器应该停止以编程方式断开我的 Android 应用程序中的耳机连接

    我在开发媒体播放器应用程序时遇到问题 我希望这样当我从设备上取下耳机时 我的应用程序中的 MediaPlayer 就会暂停 Android 文档建议使用 AUDIO BECOMING NOISY 意图过滤器 在您的清单中设置意图过滤器 然后
  • 使用 CMake 将文件从源目录复制到二进制目录

    我正在尝试在 CLion 上创建一个简单的项目 它使用 CMake 生成 Makefile 来构建项目 或某种项目 我需要的只是每次运行代码时将一些非项目文件 某种资源文件 传输到二进制目录 该文件包含测试数据 应用程序打开它来读取它们 我
  • Python:使用值的 sum() 优雅地合并字典[重复]

    这个问题在这里已经有答案了 我正在尝试合并来自多个服务器的日志 每个日志都是一个元组列表 date count date可能会出现多次 并且我希望生成的字典能够保存来自所有服务器的所有计数的总和 这是我的尝试 例如一些数据 from col
  • 在 UILabel 中查找子字符串的坐标

    我有一个来自服务器的字符串 我正在 UILabel 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历了这个要点但我无法理解它 假设我的
  • 从Android Market查询最新的应用程序版本

    我可以通过代码在 Android Market 中查询我的应用程序的最新版本吗 我想在新版本可用时向用户显示更新通知 相关问题 在市场上更新我的应用程序的过程 Android 上有没有办法自动更新应用程序 Android 市场应用程序更新
  • “./bin/www”在 Express 4.x 中起什么作用?

    我刚刚开始在我的 Node js 应用程序中学习 Express 4 0 我发现它生成了 bin www文件 其中仅写入应用程序服务器和端口设置 而其他所有内容 例如中间件和路由 都在中定义 app js file 但是 我不确定这是什么
  • 使用java和itext生成带有Unicode字符的PDF文档

    我尝试从打印一些附加 Unicode 符号的 itext 示例中改编标准代码 尽管使用的字体支持这些字符 但我没有得到任何结果 最后一个字符 u2609 不会打印到pdf 提前致谢 These examples are written by
  • 垂直于圆锥体的曲面

    我用 OpenGL C 编写一个程序来对圆锥体进行光线追踪 对于我的强度计算 我需要知道表面法线 给定基础半径 高度和中心坐标 如何计算表面法线 我假设您需要在给定表面上的点的情况下找到表面的法线 我进一步假设这是一个圆锥体 其底座朝下 y