gpt4 book ai didi

c# - 处理 CAD 绘图中的不精确性

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:41 25 4
gpt4 key购买 nike

我有一个 CAD 应用程序,允许用户绘制线条和多边形等等。

我面临的一个棘手问题是用户绘图可能非常不精确,例如,用户可能想要绘制两个相互连接的矩形。因此,应该有一条线由两个矩形共享。然而,用户很容易不画一条线,而是画两条彼此非常接近的线,彼此非常接近,以至于当从屏幕上看时,您会误认为它们是同一条线,只是当您稍微放大时它们不是。

我的应用程序会要求用户正确绘制线条(或者我的预处理必须能够进行自动校正),否则我的内部算法(我们称之为算法)将无法正确处理输入。

解决此类问题的最佳策略是什么?我正在考虑将点坐标四舍五入到一定的精度,但虽然我不能准确指出这种方法的问题,但我感觉这不是正确的做事方式,这将引入一组新的问题。

编辑:为了争论,捕捉不是一个可用的选项。就此而言,各种“输入端”指导都没有。修正必须通过对我的代码进行预处理来完成,当绘图完成时,但就在我将其提交给我的算法之前。

疯狂的限制,你说。但是用户可以在我的应用程序中构建他们的输入,或者他们可以在其他 CAD 软件中构建他们的输入,然后提交到我的引擎进行计算。我无法控制他们在其他 CAD 软件中的输入方式。

编辑 2:我可以让用户指定要发生的“簇半径”,但重要的一点是,我需要确保我的预处理算法是一致的并且不会真正引入新的集合的问题。

有什么想法吗?

最佳答案

我看到的一个问题是您的聚类/捕捉算法必须自行决定将哪个点移动到另一个点。

在实时输入捕捉过程中很简单:第一个点保持不变,第二个点捕捉到第一个点上。如果在离线模式下您得到一堆您知道应该拼接在一起的点,您不知道结果点应该位于何处。计算平均值,可能会产生一个全新的点?从所有候选点中选择最中心的点?随便挑一个?尝试将您的点与 x/y/z 轴上的其他一些点对齐?

如果您的程序完全允许任何用户交互,您可以检测可能适合合并的点簇,并向用户提供不同的合并目标点以供选择。
否则,您可以使这种行为可配置:采用合并半径(“如果两个或多个点在彼此的 n 个单位内......”)和合并算法(“......将它们合并到最中心的给定的点”)作为参数并从配置文件中读取它们。

关于c# - 处理 CAD 绘图中的不精确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4666398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com