查找一对 QuadCurve2D 的交集

2024-04-10

有没有一种简单的方法来近似两个实例的点(如果有)QuadCurve2D相交?

也就是说,我如何计算图中红点的坐标?没有明显的方法QuadCurve2D去做这个。

(注意:这些点并不准确,因为我已经为图表手动调整了它们。另请注意“缺失”的第四个点,它不位于曲线段上,即使它位于(无限)抛物线上。)

这两个曲线段是使用以下代码创建的:

QuadCurve2D curve1 = new QuadCurve2D.Double(-2.00, -2.00, +0.75, +4.75, +2.00, -0.75);
QuadCurve2D curve2 = new QuadCurve2D.Double(-2.50, -0.75, +5.50, -0.50, +0.50, +1.25);

注 2:我还希望能够与直线和二次曲线相交,但我认为可以通过将控制点之一设置为与端点共线来处理。


取决于您是否对近似解或精确解(最高双精度)感兴趣。对于近似曲线,您可以简单地将曲线参数化为某个函数 f(t),然后进行一些区间嵌套以查找以下值t最大限度地减少曲线之间的距离。

对于精确的解决方案,您必须找到两个圆锥曲线相交的四个点。有一小段是关于这个的在维基百科上 http://en.wikipedia.org/wiki/Conic_section#Intersecting_two_conics。这本书射影几何的观点 https://rads.stackoverflow.com/amzn/click/com/3642172857有一个较长的部分解释细节。当然有适用于各种语言的实现;这渐近线之一 http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#intersectionpoints%28conic,conic%29我现在就想到了。其实施一般情况 http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#intersectionpoints%28bqe,bqe%29不过看起来很可怕,所以他们可能在那里做了一些过于复杂的事情。

获得所有四个交点后,您仍然需要确定其中哪一个位于由四边形曲线端点界定的圆锥曲线部分上,但这相比之下应该很简单。总的来说,您需要执行以下三个步骤:

  1. 计算端点和控制点的圆锥截面矩阵
  2. 使用铅笔中的简并元素与圆锥曲线相交
  3. 确定这些交点是否位于端点之间

如果您对这些步骤之一的数学细节有疑问,最好在数学堆栈交换 https://math.stackexchange.com/。那里的人们不仅拥有更多解决数学问题的经验,而且用于排版数学的 MathJax 功能将使答案比此处的答案更具可读性。

至于你关于直线的注释2:到目前为止,这更容易,因为如果你用坐标来表达这个问题,你最终只会得到一个二次方程,而不是一个4次方程,用于简单的方法一般问题,如果按照上述参考文献的描述解决它,仍然是 3 级。人们可以用这样一种方式编写一般方法,即圆锥曲线与直线相交是解决方案中的一个步骤,因此拥有一种方法可能会足够有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找一对 QuadCurve2D 的交集 的相关文章

随机推荐

  • 需要加速automapper...完成113个对象需要32秒

    您好 我在自动映射器方面遇到了一些主要问题 而且速度很慢 我不知道如何加快速度 我正在使用 nhibernate Fluent nhibernate 和 asp net mvc 3 0 Serializable public class T
  • 在 ubuntu 中使用 Gunicorn:最新的 Docker 镜像

    我正在尝试在 Ubuntu 最新的 Docker 映像中设置 Gunicorn 服务器 在 Docker 上启动时 我有以下输出 2020 08 01 14 12 38 0000 6 INFO Starting gunicorn 20 0
  • 使用弹出的 Angular 4 应用程序进行生产编译会生成大文件

    ng build prodAngular CLI 命令在 Angular4 应用程序中生成高度压缩的 JavaScript 文件 当使用以下命令弹出应用程序时ng eject命令 Angular CLI 命令消失了 我们只剩下 npm 脚本
  • 如何将 PDFBox 添加到 Android 项目或建议替代方案

    我正在尝试打开现有的 pdf 文件 然后从 Android 应用程序中将另一个页面添加到 pdf 文档中 在添加的页面上 我需要添加一些文本和图像 我想尝试一下 PDFBox 由于许可条款 价格的原因 iTextPDF 等其他解决方案不适合
  • Blind 在动画期间隐藏 div

    我有以下内容 http jsfiddle net 4QF4C 14 http jsfiddle net 4QF4C 14 为什么动画过程中红色方块隐藏在黑线后面 动画完成后又显示出来 我怎样才能解决这个问题 HTML div class c
  • 创建命名空间后自动创建 Kubernetes 资源

    我有2个团队 开发人员 他们每次部署应用程序的分支 标签时都会创建一个新的 Kubernetes 命名空间 ops 它们通过 集群 角色和 集群 角色绑定管理对集群的访问控制 问题是 在 ops 创建 RBAC 资源之前 devs 无法 k
  • UIL,毕加索 - 停止滚动时适配器中的图像总是重新加载

    I have ListView with text and large image from internet My image item has fit width and wrap content height I tried to d
  • ValueError:在PIL中混合图片时图像不匹配

    我一直在用 python 搞乱 看看是否可以将两张图片 混合 在一起 我的意思是 图像是透明的 您可以同时看到两张图片 如果这仍然没有意义 请查看此链接 只有我会混合图片和图片而不是 gif https cdn discordapp com
  • 通过 JavaScript 动态创建和打印 h1 标签

    我需要能够在 JavaScript 中创建一个函数 我需要做的就是输入 h1 hello 它就会打印 hello 我想避免这种方法 function h1 text document write h1 text h1 这就是我所拥有的 fu
  • 使用拦截器延迟所有请求

    出于调试目的 我想延迟all请求 以便我可以模拟加载资源实际上需要时间 我想这可以在拦截器中以某种方式完成 我确实设法推迟single现在请求 const delay milliseconds gt new Promise resolve
  • GitHub 对 SSH 部署密钥的限制

    GitHub SSH 部署密钥是否有任何限制 假设我需要将 2000 个甚至 4000 个部署密钥添加到 git 存储库中 这可能吗 或者我会在某个时候达到极限吗 原因是我们有 4000 台设备需要配置 我们希望控制哪些设备可以访问存储库
  • 删除字符“.”之前的字符

    如何有效地删除字符串中位于字符 之前的所有字符 Input 美洲美国 Output USA 您可以使用IndexOf method http msdn microsoft com en us library kwb0bwyd v VS 10
  • 有没有 View.GetOutline() 的替代方案可以提供更好的轮廓?

    返回的大纲View GetOutline 方法并不完全对应于可见绘图 它返回的内容比 SolidWorks GUI 显示的选择轮廓要多一些 下面的屏幕截图显示了选择轮廓 浅蓝色虚线矩形 和由返回的轮廓的对角线View GetOutline
  • sem_init(…): value 参数有什么用?

    在类中 我们必须使用信号量来完成线程的工作 sem init 的原型 和头文件 如下 int sem init sem t sem int pshared 无符号 int 值 但我不明白 value 变量的用途 据 opengroup or
  • 关闭 Android 中的自动对焦

    这是在我的应用程序代码中关闭相机自动对焦的任何方法 我想检查如果手机没有自动对焦功能 我的扫描仪如何工作 但我的手机有该功 能 Use FOCUS MODE INFINITY http developer android com refer
  • MojoExecutionException:使用 Android 的 Maven

    我将 Android Studio 与 Maven 3 1 1 一起使用 在包目标中它因 MojoExecutionException 崩溃 我读了很多帖子 但无法得到解决方案 错误 生成源时出错 org apache maven plug
  • 将 MySQL Workbench 链接到我的远程服务器

    我刚刚下载了 MySQL Workbench 但我不太明白如何将其与远程服务器上的数据库同步 工作台要求 主机名 因此我提供了远程服务器的主机名 我指定端口 3306 然后我提供一个用户名 这是我登录 PhpAdmin 时使用的用户名 我应
  • Twilio 通过 REST API 挂断呼叫不起作用?

    当呼叫状态为排队状态 正在振铃或已发起 时 如何挂断电话 下面的代码对呼叫没有任何影响 呼叫会继续响铃 直到听筒接听 有时 当座席意识到他们拨打了错误的号码时 他们需要一种方法在响铃过程中挂断呼叫 PHP code client gt ca
  • Android studio中的文件路径

    我正在尝试发送带有附件的电子邮件 除了附加文件之外 一切正常 调用方法时 它显示 java io FileNotFoundException 虽然我手动插入精确路径 文件 存储 模拟 0 Android data com example a
  • 查找一对 QuadCurve2D 的交集

    有没有一种简单的方法来近似两个实例的点 如果有 QuadCurve2D相交 也就是说 我如何计算图中红点的坐标 没有明显的方法QuadCurve2D去做这个 注意 这些点并不准确 因为我已经为图表手动调整了它们 另请注意 缺失 的第四个点