草庐IT

GEOMETRY

全部标签

c++ - 快速平面旋转算法?

我正在开发一个应用程序,该应用程序检测图像中最突出的矩形,然后尝试旋转它,使矩形的左下角位于原点,类似于IUPR的OSCAR。系统工作。但是,一旦检测到最突出的矩形,我不确定如何考虑深度分量或z轴,因为矩形并不总是“正面”。任何能加深我理解的例子都将不胜感激。下面是IUPR的OSCAR系统的示例。alttexthttp://quito.informatik.uni-kl.de/oscar/oscar.php?serverimage=img_0324.jpg&montage=use 最佳答案 在这种情况下您实际上不需要处理3D信息,它

c++ - 软阴影 : Spherical Area Light Source

我正在尝试在我的光线追踪器中实现柔和阴影。为此,我计划从交点向区域光源发射多条阴影光线。我的目标是使用球形区域光——这意味着我需要在球体上为光线的方向vector生成随机点(回想一下,光线是用原点和方向指定的)。我四处寻找在球体上生成均匀分布的随机点的方法,但它们似乎比我正在寻找的要复杂一些。有谁知道在球体上生成这些点的任何方法?我相信我的球体区域光源将简单地由其XYZ世界坐标、RGB颜色值和r半径定义。谢谢,感谢您的帮助! 最佳答案 GraphicsGemsIII,第126页:voidrandom_unit_vector(doub

c++ - 在 C++ 中的不同几何类之间轻松转换?

我从事机器人技术工作,这意味着我使用了大量处理3D几何的开源项目。由于类(class)和数学往往相当简单,每个人似乎都实现了自己版本的Vector3D、四元数等,每个版本都有细微的变化,例如vec.x,vec.X,vec.x().因此在一个项目中,可能需要在Eigen、ROS、Assimp、Bullet和相同基础类的其他版本之间进行转换。在C++中是否有一种简单或优雅的方法不需要从每个库到每个其他库的n^2映射?类似于:ThisSOquestion,但我无法编辑任何源库。例子:namespacea{classVector{public:doublex,y,z;};}//namespac

c++ - 计算面法线和缠绕

给定一个凸多面体,其顶点(x,y,z)指定多面体的面。如何计算多面体每个面的表面法线?我需要表面法线来计算顶点法线以执行Gouraudshading.关于如何做到这一点,我能找到的唯一线索是Newell的方法,但我如何确保法线是向外法线而不是向内法线?感谢您的帮助。 最佳答案 计算人脸法线您必须计算跨越包含给定面的平面的两个vector的叉积。它为您提供该面的(非单位)法vector。您必须对其进行规范化,然后就完成了。如果x0、x1、x2是三角形面的顶点,那么法线可以计算为vector3get_normal(vector3x0,v

c++ - 帮助解决几何问题 - 不知道

我正在为编程比赛做准备,我想知道如何解决这个问题。我猜这是几何问题,而且我似乎对解决它没有任何想法。这里是:有一个院子,院子里有狼和羊。院子里也有不允许通过的障碍物。狼用“w”表示,羊用“s”表示,方block用“#”表示,每个人都可以移动的空间是“.”。.所以可能的输入看起来像:88.######.#..s...##.####.##.#w.#.##.#.s#s##s.##..##.w..w.#.######.院子上方的2个数字是行x列。如您所见,院子里可以形成不同种类的扇区。这里有两个部门:#####.w######s.#第一个是狼,第二个是羊。因为它们被放置在两个不同的扇区(即狼无

c++ - 3D 点投影到 2D XY 平面

我有一个3维点集(x,y,z)。我需要使用正交投影将这些点投影到2维XY平面中。所以我的问题是,如何将这些点转换为2D?如果我只设置Z=0是否正确?如果不正确,请任何人帮助我解决这个问题。我也想用C++编程 最佳答案 如果您的坐标系的轴彼此正交,则只需将z坐标设置为零即可获得到xy平面的正交投影——您的看法是正确的。 关于c++-3D点投影到2DXY平面,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c++ - 起源 - 不变的还是新的类型?

我正在编写一个Point类(在3d空间中)并且一直想知道创建原点的最佳方法是什么。这是基本类(取自Andy的示例,以防万一有人想知道基本实现是什么):structPoint{constexprPoint(doublex_,doubley_,doublez_):x(x_),y(y_),z(z_){}doublex;doubley;doublez;};获得原点的第一种方法是定义一个constexpr变量:constexprPointorigin={0.0,0.0,0.0};第二个是定义一个新类型和重载算法,如果它们在使用原点计算时可以从优化中受益(假设我为Point编写了一个constex

c++ - 如何在 3D 中绕 Z 轴旋转

我主要是一个FlashAS3开发者,但我跳进了openframeworks并且在使用3D时遇到了麻烦(这些例子在AS中)在2D中,您可以使用Math.Sin()和Math.cos()来模拟围绕一个点运行的物体,就像这样functionupdate(event:Event):void{dot.x=xCenter+Math.cos(angle*Math.PI/180)*range;dot.y=yCenter+Math.sin(angle*Math.PI/180)*range;angle+=speed;}我想知道如果我也想在三维轨道上运行,我将如何将其转换为3D轨道。functionupda

c++ - 旋转后找到三角形的点

我正在使用OpenGL开发一个(相当)简单的2D项目。这是某种小行星的克隆。这艘船基本上是一个高度为H的等腰三角形,底边的长度为H/2。到目前为止,我一直采用的方法是简单地存储三角形的中心点(CP),然后即时计算最终的顶点位置。船的“点”是(vector是x,y)the(CP.x,CP.y+H/2)。另外两点是(CP.X-H/4,CP.Y-H/2)和(CP.X+H/4,CP.Y-H/2)。为了让船朝向正确的方向,我首先根据当前旋转角度调用glRotate。这部分工作正常,但我遇到了碰撞检测问题。目前我正在尝试实现三角形平面碰撞检测但是要做到这一点,我首先需要找出旋转后船舶顶点的实际点。

c++ - 如何轻松地用CGAL在球体上构造Voronoi图?

首先,我是CGAL的新手,但经常用C++编程。我想使用CGAL来构造球体上点的Voronoi图。我自己为我的一项研究实现了一个,但数据结构不是很通用,我想使用像CGAL这样更健壮的工业库。从CGAL的文档来看,似乎我们需要使用3DDelaunay三角剖分结合凸包。另外,我找到一篇论文RobustandEfficientDelaunayTriangulationsofPointsonOrClosetoaSphere,它使用CGAL作为基础,但我找不到它的代码。所以任何人都可以提供有关如何在CGAL中执行此操作的示例?CGAL是否有计划用更高效的算法直接支持球形Delaunay和Voron