【发布时间】:2019-09-05 22:15:45
【问题描述】:
我正在从事一个科学项目。我有一个 voronoi 图顶点的 xyz 坐标列表,以及一个创建我的蛋白质凸包的点列表(来自三角剖分)。现在一些顶点离船体很远,我想过滤掉它们。我怎样才能在 c++ 中做到这一点?目前不需要超级优化,我只专注于删除这些点。
我还想检查从 voronoi 顶点(红色十字)到蛋白质中心(粉红色球体)的线是否在任何时候与船体面相交,但我不知道如何实现。
我已经读过,您可以通过计算从该点开始的无限线穿过船体的次数来检查一个点是否在多边形内,但这是针对二维的。可以实施类似的方法来满足我的需求吗?
https://www.geeksforgeeks.org/how-to-check-if-a-given-point-lies-inside-a-polygon/
【问题讨论】:
-
等等,你只有一个 Voronoi 图,还是一个凸包?这真的是一个 C++ 程序吗,还是你要一个算法?
-
我有我的蛋白质原子。从那些我计算voronoi图。我也在做蛋白质的准三角测量,我可以检查哪些原子形成了我的外壳。我正在用 c++ 制作一个控制台应用程序,它将在 voronoi 顶点上运行,但我想在进行下一步之前尽可能地减少它们的数量。碰巧在船体外部的 Voronoi 顶点对我没有用。希望我回答了你的问题。
-
不,你没有。但让我换个说法:您计算的数据的确切表示是什么?描述您希望我们考虑的数据结构。
-
存储带有坐标的浮点数 (xyz) 的对象。我想检查 voronoi 顶点是否位于船体之外(也定义为点)。对不起,如果这又不是你想要的,我还在学习新东西。
-
所以,现在我明白了您要检查哪些顶点,但您还没有说船体使用什么数据结构。我问的不是你用于point的结构,而是hull。
标签: convex-hull