Questions tagged «geometry»

数学的一个分支,涉及形状,大小,图形的相对位置以及空间的属性。

6
快速移动物体的六角形碰撞检测?
对象具有位置和速度矢量。通常仅使用该位置来检查两个物体是否发生碰撞,这对于移动速度非常快的物体是有问题的,因为可能发生物体移动得如此之快,以至于在第一次碰撞检查中它位于第一个物体的前面,而在第二个碰撞检查中位于它的后面第二次碰撞检查。 现在,还有基于行的碰撞检查,其中您仅检查每个对象的运动矢量是否与另一个对象的边界框相交。这可以看作是一点的扩展。这仅在快速移动的物体很小的情况下才有效。 所以我的想法是,为什么不扩展矩形而不是扩展点?这将产生一个六边形。 现在,到目前为止一切顺利。但是我实际上如何检查两个这种六角形是否相交?请注意,这些是非常特殊的六角形。 奖励问题:是否可以计算出碰撞发生的确切位置(或确切地说,经过多少时间)?这对于检测实际发生的情况(例如在何处以及具有多少功率)以及模拟它们在碰撞到帧结束之间的时间中如何移动非常有用。

2
我在两个轴上旋转一个对象,那么为什么它一直绕着第三个轴扭曲?
我看到很多问题经常出现,但都涉及到潜在的问题,但是它们都被给定功能或工具的细节所困扰。这是尝试创建一个规范的答案,我们可以在出现时向用户推荐-提供大量动画示例!:) 假设我们正在制作第一人称相机。基本思想是左右摇摆应偏航,上下左右俯仰。因此,我们编写了如下代码(以Unity为例): void Update() { float speed = lookSpeed * Time.deltaTime; // Yaw around the y axis using the player's horizontal input. transform.Rotate(0f, Input.GetAxis("Horizontal") * speed, 0f); // Pitch around the x axis using the player's vertical input. transform.Rotate(-Input.GetAxis("Vertical") * speed, 0f, 0f); } 或许 // Construct a quaternion or …

9
如何量化画线的直线度?
我正在开发一款游戏,要求玩家在Android设备的屏幕上从点A(x1,y1)到另一点B(x2,y2)画一条线。 我想找出该绘图与一条直线的拟合程度。例如,如果结果为90%,则表示工程图几乎完全适合线条。如果玩家从A到B绘制一条曲线,则得分会较低。 终点未知。我怎样才能做到这一点?

4
为什么我的物体在45度时比在90度时移动得更快?
我的游戏中有一些物体在45度和90度时移动得更快。 每个对象都有 点(x,y)的位置 Vector2D(x,y)方向 整机速度 我在更新过程中所做的就是计算新职位: position.x += direction.x * speed position.y += direction.y * speed 我该如何纠正?我希望它以相同的速度在任何角度移动。
32 c#  2d  geometry 

1
您如何将一个立方体变成一个球体?
我正在尝试根据article制作一个四边形球,它显示如下结果: 我可以正确生成一个多维数据集: 但是,当我根据此公式转换所有点时(来自上面链接的页面): x = x * sqrtf(1.0 - (y*y/2.0) - (z*z/2.0) + (y*y*z*z/3.0)); y = y * sqrtf(1.0 - (z*z/2.0) - (x*x/2.0) + (z*z*x*x/3.0)); z = z * sqrtf(1.0 - (x*x/2.0) - (y*y/2.0) + (x*x*y*y/3.0)); 我的球面看起来像这样: 如您所见,立方体的边缘仍然伸出太远。如文章所述,多维数据集在所有轴上的范围都从-1到+1。 任何想法有什么问题吗?
31 3d  geometry  sphere 

6
如何计算点和与轴对齐的矩形之间的距离?
我有一个带有x,y位置,高度和宽度的2D矩形,并且附近有一个随机定位的点。 有没有一种方法可以检查如果该点比一定距离更近,则该点是否可能与矩形碰撞?想象一下该点之外的不可见半径与所述矩形碰撞。我有一个问题,仅仅是因为它不是正方形!


4
是否有3D等效的十六进制贴图?
基于十六进制的地图平铺与基于正方形的地图平铺的最大优点可能是,每个十六进制的中心与所有相邻十六进制的距离相同。是否有类似的形状以这种方式在3D模式下平铺,并且引擎支持这种模型?

4
用作启发函数时,曼哈顿距离是否单调?
我有一个基于正方形的地图。仅允许水平和垂直移动(禁止对角线)。移动成本始终为1。 我正在使用曼哈顿距离作为距离启发式算法在该地图上实现A *算法。这种启发式是一致的吗?我是否可以避免检查g(node)CLOSED集合中的节点? 编辑:一致我的意思是单调的。

3
您如何以编程方式生成球体?
有人可以解释一下如何创建球体的顶点,索引和纹理坐标吗?令人惊讶的是缺少有关如何执行此操作的文档,这是我感兴趣的东西。 我尝试了显而易见的搜索,在gamedev.net上进行了搜索,等等。但是,没有什么可以涵盖世代的球形点,对其进行索引和构造。

2
如何将3D点投影到3D线上?
假设我有一条由两个点A和定义的线B,都以形式(x, y, z)。这些点代表3D空间中的一条线。 我也有一点 P,用相同的格式定义,不在线上。 我将如何计算该点在直线上的投影?我知道如何在2D中执行此操作,但是3D似乎在上面浪费了所有资源。

5
如何判断对象是在连接路径上顺时针还是逆时针运动?
假设我们有一个锯齿状的形状: 两个生物沿着它的轮廓移动。 然后,我们通过拉出拐角来完全平滑形状。 我们得到这个: 现在很容易看到Orange正在移动CW,而绿色正在移动CCW。如何在不使形状变平滑的情况下知道它们向哪个方向移动? 新图片
19 geometry 

2
如何将鼠标单击转换为射线?
我有一个透视投影。当用户单击屏幕时,我想计算从鼠标点投射的近平面和远平面之间的射线,因此我可以对自己的世界进行一些射线相交的代码。 我正在使用自己的矩阵以及矢量和射线类,它们均按预期工作。 但是,当我尝试将射线转换为世界坐标时,我的远端总是以0,0,0结尾,因此射线从鼠标单击转到对象空间的中心,而不是通过对象。(near和far的x和y坐标相同,只是z坐标互为负数而不同) GLint vp[4]; glGetIntegerv(GL_VIEWPORT,vp); matrix_t mv, p; glGetFloatv(GL_MODELVIEW_MATRIX,mv.f); glGetFloatv(GL_PROJECTION_MATRIX,p.f); const matrix_t inv = (mv*p).inverse(); const float unit_x = (2.0f*((float)(x-vp[0])/(vp[2]-vp[0])))-1.0f, unit_y = 1.0f-(2.0f*((float)(y-vp[1])/(vp[3]-vp[1]))); const vec_t near(vec_t(unit_x,unit_y,-1)*inv); const vec_t far(vec_t(unit_x,unit_y,1)*inv); ray = ray_t(near,far-near); 我怎么了?(如何解开鼠标点?)

3
如何计算不规则形状的面积?
我有一个由循环线段集合定义的房间对象,我需要为其计算面积。这些类可以描述如下(用伪代码): class Point { float x; float y; ... float distanceFrom(Point p); } class Segment { Point start; Point end; ... float length(); } class Room { List<Segment> walls; ... float area(); } 房间的墙壁永远不会相交,只能在线段的端点相交,并且创建的任何“子回路”也将被分隔成一个新房间。该解决方案不需要完全准确(可接受10%的误差幅度),也不需要经常计算(<1 / s)。

2
如何使用点积获得两个向量之间的夹角?
我正在学习在游戏中使用归一化向量。 我了解到,为了知道两个向量之间的角度,我可以使用点积。这给我一个介于-1和1之间的值,其中 1表示矢量平行并且面向相同方向(角度为180度)。 -1表示它们平行且面对相反的方向(仍为180度)。 0 表示它们之间的角度为90度。 我想知道如何将两个向量的点积转换为以度为单位的实际角度。例如,如果两个向量的点积为0.28,则0和360度之间的对应角度是多少?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.