Graphics 垂直于圆锥体的曲面
我正在用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 该向量的方向正确,但大小大于1。它还不是单位向量,所以我们必须相应地缩放它 m=sqrt(V.x2+V.z2) m现在是V的大小,我们将使用它来缩放V V.x/=m V.z/=m 找到法线的最终计算是 N.x=V.x*h/r N.y=r/hGraphics 垂直于圆锥体的曲面,graphics,Graphics,我正在用OpenGL/C++编写一个程序来光线追踪一个圆锥体。为了计算强度,我需要知道曲面法线。给定一个底半径、高度和中心坐标,我如何计算曲面法线?我假设你需要找到曲面上给定点的曲面法线。我进一步假设这是一个圆锥体,其方向是底部朝下(-y轴),圆锥体的点朝上(+y轴)。如果这些条件中的任何一个不符合,我可以编辑我的答案以适合您的情况 让我们把你在曲面上的点叫做p,中心坐标C,半径r,高度h,法线N 所有的点和向量都有三个分量(x,y,z),所以我将使用“.”来引用它们。例如,P.x是P的x分量
N.z=V.z*h/r我假设你需要找到曲面上给定点的法线。我进一步假设这是一个圆锥体,其方向是底部朝下(-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 该向量的方向正确,但大小大于1。它还不是单位向量,所以我们必须相应地缩放它 m=sqrt(V.x2+V.z2) 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如果圆锥体朝下,且有一个开口角度(α),则以h为底(+z)。您可以在con顶部选择您的co系统。这意味着圆锥体在尖头部分是平衡的 在这种情况下,可以导出该曲面法线分量的一般表达式 步骤1: 表示法向i球坐标(e_r,e_θ,e_φ),其中所有分量都是单位向量,θ定义为方位角 结果-->e_uθ(θ==α,φ) 如果你使用som,这个形状的其他属性,如磁化强度M或电通量。我们可以很容易地转换这个i柱坐标 步骤2:
e_uθ==-sin(θ)e_z+cos(θ)e_s(φ)那里θ==α。如果你的圆锥体朝下,并且有一个开口角(α),以h为底(+z)。您可以在con顶部选择您的co系统。这意味着圆锥体在尖头部分是平衡的 在这种情况下,可以导出该曲面法线分量的一般表达式 步骤1: 表示法向i球坐标(e_r,e_θ,e_φ),其中所有分量都是单位向量,θ定义为方位角 结果-->e_uθ(θ==α,φ) 如果你使用som,这个形状的其他属性,如磁化强度M或电通量。我们可以很容易地转换这个i柱坐标 步骤2:
e_θ==-sin(θ)e_z+cos(θ)e_s(φ)那里θ==α。我有答案,我会给你写出来,等几分钟:)我有答案,我会给你写出来,等几分钟:)