Tag: 几何

ARKit Pods — SCNPath

许多ARKit开发人员正在使用SceneKit作为其入门框架,这是一个很好的选择,主要是因为它可以访问iOS开发人员用于所有其他应用程序的所有本机功能。 使用SceneKit,您可以访问许多默认的几何类型,SCNBox,SCNSphere,SCNPyramid甚至SCNShape。 这些是很好的构建基块,但是当您要构建一些稍有不同的东西时,则必须更深入地自己构建几何。 我认为这是所有ARKit开发人员至少应该意识到的事情,这就是为什么我在之前的一些Medium帖子中展示了示例的原因,从我的第一个帖子开始: ARKit + SceneKit几何图形教程(第1部分) 在SceneKit中创建自己的几何形状,无需离开即可拥有各种场景和动画。 medium.com 大多数iOS开发人员不一定都具有3D几何或图形方面的背景知识,而且我认为他们不需要为了构建出色的东西而拥有背景知识! 因此,我最新的开放源代码框架用于创建基本为三角形的路径,这些路径可以围绕点集(SCNVector3的数组),如下面的GIF所示。 SCNGeomtry.path(path: positionArray) SCNPathNode(path: positionArray) 要创建一条从世界原点(或下面的1m)开始,向前然后向右的路径,您需要做的就是创建这样的类: 让pathNode = SCNPathNode(path:[ SCNVector3(0,-1,0), SCNVector3(0,-1,-1), SCNVector3(1,-1,-1) ]) 默认情况下,该路径的宽度为0.5m,它具有可以更改的其他属性,有关所有信息,请参见GitHub存储库: maxxfrazer / ARKit-SCNPath 仅使用点代表路径的中心为增强现实环境创建路径。 … github.com 好的,让我们来制作我在推文中展示的应用程序: 接下来,我们要添加点击手势。 当且仅当正方形未初始化(附加到屏幕)时,我才选择仅使用轻击手势来获取FocusSquare的当前位置,但是如果您希望执行的话,可以执行一次hitTest,用手指代替屏幕。 这些函数在ViewController中或在其扩展中。 var hitPoints = [SCNVector3]() func setupGestures(){ let tapGesture = UITapGestureRecognizer(target: self ,action: #selector (handleTap( _ :))) tapGesture.delegate = 自 自 .view.addGestureRecognizer(tapGesture) […]

图论同步

当然,戏剧总是在终点线。 显然,建立斜边涉及大量的数学和计算机科学技巧,但一个重要功能就是主要的// TODO ,这才是真正使游戏产生的功能,该功能可以检测玩家何时构造规则的多边形,以便我能够正确地保持得分,我保存到最后。 当然,本来不打算在发布前的最后几天将其压缩到应用程序中的,但是……好吧,这是怎么回事: 在被接受2018年AmazeFest和柏林游戏周之后,我决定以实现斜边为目标。 在这里和那里还有很多事情要做,但是我对游戏的状态感觉很好。 因此,我认为是时候清理(使用程序员的术语进行重构 )我的ShapeFinder算法,或者说是PolygonFinder算法。 我有一些工作可以检测绘制的多边形,但是,正如我去年夏天在访问慕尼黑时编写了大多数数学实用程序类,并且毫无疑问地回顾了在Englischer Gartens漫长的炎热天气之后,接着是几个巴伐利亚大小的Hofbräus,我认为我可能应该在柏林游戏节周之前及时发布一次代码。 我的临时技术是在线阵列中向后循环,并检查最后几行的长度和角度是否匹配。 很简单,对吧? 所有多边形具有匹配的边并共享相同的角度。 但是这种方法仅允许玩家通过依次绘制线条来对多边形进行评分。 这不是一个很好的算法,但它是一个占位符,并且在代码中非常孤立,所以我一直在取消其他功能,希望一旦我花了很多时间,就不会花太多时间再次刺中它。 但是现在,随着最后期限的临近,我卷起袖子并开始编码。 因此,我需要解决的问题是最佳地找到遍历我所有绘制的点和线并发现其中所有可能的形状或多边形的最佳方法。 输入图论。 当我快速阅读Minko Gechev最近在JS网络世界中的出色表现时,很明显,我扩展了标题为“ 数学背景”的部分,即图论基础。 哦,对,我记得不久前在Mathigon上看到过,等等,我不是有图论书的pdf版本吗? 我的直觉告诉我我正在做某事。 因此,我开始尽可能多地阅读有关图论的文章,​​突然间,我感到好像走进了衣柜,走进了纳尼亚。 图论中有很多很棒的东西。 欧拉的公式,不,不是那个,不是,不是,也不是那个,哦,是的,那个关于图形中的面孔的那个。 所有这些酷桥梁问题; 网络和搜索算法以及计算机科学的众多应用…但是,等等,让我们不要分心,我们在这里做几何。 那么图论如何解决我的几何问题? 好吧,还记得点和线那些纯真的几何定义吗(请参阅上一篇文章)? 事实证明,它们在图论地下世界中具有秘密的别名。 它们被称为“顶点”和“边缘”,它们共同构成了Graph帮。 而且,随着时间的流逝,每当有人创建一些很酷的几何设计时,他们也在构造一个可以应用图论规则的图。 好吧,总而言之,我花了很多个晚上试图推出自己的准深度-第一本特利-奥特曼-迪克斯特拉的递归-噩梦-多边形搜索算法,希望最终能获得更多的霍夫布鲁斯原来,我一直都坐在解决方案上。 GameplayKit的寻路工具为我们节省了很多时间,这就是为什么此游戏是为iOS制作的。 请参阅下面的文章。 用Swift编写Dijkstra算法的正确方法 剧透警报:您根本不写! medium.com 最后,我可以用由GameplayKit背后的一些了不起的工程师设计的一些漂亮的数学代替我丑陋的,不易受Hofbräu影响的解决方案(“ 如果不是漂亮,那就不是数学 ”,这也适用于编程)。 有时编写自己的解决方案很令人满意,但有时使用别人制造的锤子砸烂那些讨厌的指甲也很令人满意。 而且,一如既往,我在此过程中学到了很多东西。 这是我偶然发现的众多资源中的一些,这确实让我对数学这个令人惊讶的超酷分支感到兴奋。 图论的温和介绍 如果没有需要解决的问题,那么世界上的许多事情将永远不会存在。 medium.com 揭开深度优先搜索的神秘面纱 一旦您对不同的数据结构有了足够的了解,您就开始对自己进行思考:对,那么……是什么…… 开发到 并使用Bently-Ottmann线相交算法检查Swift算法俱乐部和多边形检测。