Questions tagged «geometry»

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

4
如何有效检查点是否在旋转的矩形内?
我一方面要出于优化的目的,另一方面出于学习的目的,我敢问:如何使用C#或C ++ 最有效地检查2D点P是否在2D旋转的矩形内XYZW? 当前,我正在做的是使用《实时碰撞检测》一书中的“三角形中的点”算法,并运行两次(对于组成矩形的两个三角形,例如XYZ和XZW): bool PointInTriangle(Vector2 A, Vector2 B, Vector2 C, Vector2 P) { // Compute vectors Vector2 v0 = C - A; Vector2 v1 = B - A; Vector2 v2 = P - A; // Compute dot products float dot00 = Vector2.Dot(v0, v0); float dot01 = Vector2.Dot(v0, v1); float …


1
程序几何生成
我最近一直在研究OS X的SceneKit,并注意到有几种工厂方法可以创建几何形状,例如: 框,胶囊,锥,圆柱,平面,金字塔,球体,圆环和管。 我有兴趣在我的渲染器中添加这样的原始形状,但是我一直在努力寻找任何合理的来源,从中我可以收集对程序生成的理解。有许多资源详细介绍了该理论,但是缺少适当的源代码来对其进行备份。 SceneKit提供了工厂方法,该方法允许动态设置此类形状的属性。对于Box,可以为每个面应分为的宽度,高度和深度段数提供整数值。 我了解理论,但缺乏知识来开始细分几何面以实现所需的效果。 每个形状的顶点很可能很容易在简单的循环中生成。让我感到困扰的是,我知道如何创建这些面,或者是为每个面创建适当的纹理坐标。可以按每张面孔计算法线,因此我很自信可以实现自己想要的目标,只是知道从哪里开始。 谁能提供有关程序几何的任何详细信息?我真正需要的是一些源代码来收集一些信息。我在教程中搜索了很多内容,但到目前为止,只提出了一些合理的站点或博客。任何优秀的书籍,教程,博客或研究论文将不胜感激。 根据评论进行编辑 我应该澄清的是,我知道如何为基本形状创建顶点,其中大多数可能可以通过简单的循环来实现。我不理解的是如何从生成的顶点数组创建面。如何从看似无序的顶点阵列中创建一个或多个三角形带? 我假设一旦超过了这一点,就可以从每张脸创建法线。尽管我还没有深入研究,但是我已经看到了很多对此的参考,并且确信它很容易实现。 理想情况下,我希望能够从一组给定的属性(例如SceneKit提供的方式)生成几何。鉴于SceneKit已经做到了,并且您可以在Blender和Maya等中做类似的事情,我想我不是在尝试实现不可能的事情。 最后一个方面是应用纹理。再说一次,这不是我实现的,但是已经阅读并了解了需求。 这里的主要问题是我知道我想要实现什么,但是正在努力解释如何为上述原语实现。我希望能够通过源代码找到一些相似的知识,但是到目前为止,我确实还没有遇到任何合适的东西。

3
将凹面网格分解为一组凸面网格
我希望能够将凹形网格分解为一组凸形网格,原因有两个: 透明渲染 物理形状 是否有一种算法将一组三角形(凹面)作为输入并输出许多三角形(凸面)?我希望它不填充原始网格的各个部分之间的孔。 我已经遇到了一个小主意:找到所有凹形边缘,然后沿边缘环将网格划分。我在正确的轨道上吗?我该如何实施?

1
构造规则的n面多边形的角的算法
我已经使用很多关键字组合在Google上进行了搜索,但令我惊讶的是,我找不到用于将规则的n面多边形构造到给定圆中的算法,即找到n个角点的坐标。我所能找到的只是如何通过物理罗盘和直尺或无源的交互式浏览器插件进行操作的说明。 那么我在哪里可以找到这样的算法呢?


2
人口几何系统:开始
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 4年前关闭。 我想和朋友一起开发类似Populous:The Beginning的游戏。但是我们无法确定他们在世界上使用了哪种类型的几何图形。 我们知道-所有瓷砖的尺寸都相同-所有瓷砖都是正方形 因此,它不能是二十面体,因为有三角形,也不能是标准球面几何体,因为不是所有的图块都具有相同的大小。 有人能帮我吗?
10 3d  geometry 


1
双重轮廓-查找特征点,法线关闭
我正在按照本教程来实现双重轮廓 http://www.sandboxie.com/misc/isosurf/isosurfaces.html 我的数据源是16x16x16的网格;我从左到右,从近到远地遍历此网格。 对于我的网格的每个索引,我创建一个多维数据集结构: public Cube(int x, int y, int z, Func<int, int, int, IsoData> d, float isoLevel) { this.pos = new Vector3(x,y,z); //only create vertices need for edges Vector3[] v = new Vector3[4]; v[0] = new Vector3 (x + 1, y + 1, z); v[1] = new Vector3 (x …
9 c#  geometry 

2
世界界限-(0,大小)或(-HalfSize,HalfSize)?
创建在其中移动,绘制和碰撞对象的游戏空间时,最好将(0,0)点或(0,0,0)点放在空间的正中心,这样世界的界限是(-halfSize,halfSize),还是最好将它放在空间的最远角落,所以界限是(0,size)? 每种方案的利弊分别是什么?还是真的没关系吗? 看来这只是次要的细节,但我想看看是否存在我可能忽略的重大问题。


3
2D等距:屏幕到平铺坐标
我正在编写一个等距的2D游戏,并且很难准确地确定光标在哪个图块上。这是一张图: 其中xs和ys是屏幕坐标(像素),xt和yt是图块坐标,W和H分别是图块宽度和图块高度(以像素为单位)。我对坐标的表示法是(y,x),这可能会令人困惑,对此感到抱歉。 到目前为止,我能弄清楚的最好的是: int xtemp = xs / (W / 2); int ytemp = ys / (H / 2); int xt = (xs - ys) / 2; int yt = ytemp + xt; 这似乎几乎是正确的,但是给我一个非常不精确的结果,使得很难选择某些图块,或者有时它会在我尝试单击的图块旁边选择一个图块。我不明白为什么,我想知道是否有人可以帮助我理解其背后的逻辑。 谢谢!
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.