两条弧线之间的交点? (弧 = 一对角之间的距离)

2023-11-30

我正在尝试找到一种方法来计算两条弧之间的交点。 我需要用它来确定圆弧在视觉上有多少在右半边,有多少在左半边。 我考虑创建右半部分的弧,并将其与实际弧相交。 但我花了很多时间来解决这个问题,所以我想在这里问 - 以前肯定有人做过。

编辑: 很抱歉,当我在处理角度后头太重时,才提供了之前的插图。我会尝试再次解释:

In 这个链接你可以看到我把中间的圆弧切成两半,圆弧的右边部分是135度,左边部分是90度。

该弧从 -180 开始,在 45 结束。(或者如果标准化,则从 180 开始,在 405 结束)。

我已设法创建此代码,以便计算右侧部分和左侧部分中包含的弧度数:

f1 = (angle2>270.0f?270.0f:angle2) - (angle1<90.0f?90.0f:angle1);
if (f1 < 0.0f) f1 = 0.0f;
f2 = (angle2>640.0f?640.0f:angle2) - (angle1<450.0f?450.0f:angle1);
if (f2 < 0.0f) f2 = 0.0f;
f3 = (angle2>90.0f?90.0f:angle2) - angle1;
if (f3<0.0f) f3=0.0f;
f4 = (angle2>450.0f?450.0f:angle2) - (angle1<270.0f?270.0f:angle1); 
if (f4<0.0f) f4=0.0f;

将角度标准化为非负值后效果很好,但当然是从低于 360 度开始。 然后 f1 + f2 给出左半部分的总和,f3 + f4 给出右半部分的总和。 它还没有考虑弧定义为超过 360 的情况,这可能是“错误”情况。

但是,这似乎更像是一种“解决方法”,而不是正确的数学解决方案。 我正在寻找一种更优雅的解决方案,它应该基于两个弧之间的“交集”(因为数学没有“边”,它不是视觉的);

Thanks!!


我认为这可行,但我还没有彻底测试过。您有 2 条弧,每条弧都有一个起始角和一个终止角。正如您所做的那样,我将从北向顺时针测量的度数进行计算,但与数学家一样,从东向逆时针测量的弧度进行计算也同样容易。

首先“标准化”你的弧,也就是说,减少它们中的所有角度[0,360),因此取出 360deg 的倍数并使所有角度为 +ve。确保每个圆弧的终止角位于起始角的顺时针方向。

接下来,选择一个弧线的起始角度,无论是哪一个都没关系。将您拥有的所有角度(其中 4 个)按数字顺序排序。如果任何角度在数值上小于您选择的起始角度,请为其添加 360 度。

将角度重新排序为递增的数字顺序。您选择的起始角度将成为新列表中的第一个元素。从您已经选择的起始角度开始,列表中的下一个角度是什么?

1) 如果是同一弧的终止角,则要么没有重叠,要么该弧完全包含在另一弧内。记下并找到下一个角度。如果下一个角度是另一条弧的起始角度,则没有重叠,可以停止;如果它是另一条弧的停止角,则重叠包含整个第一条弧。停止

2) 如果它是另一条弧的起始角度,则重叠从该角度开始。记下这个角度。扫描遇到的下一个角度必须是停止角,重叠在那里结束。停止。

3) 如果是另一个圆弧的终止角度,则重叠包括第一个圆弧的起始角度与该角度之间的角度。停止。

这不是特别优雅,并且比我通常喜欢的更依赖 if,但它应该可以工作并且相对容易翻译成您最喜欢的编程语言。

看,根本没有三角学!

EDIT

这是一种更“数学”的方法,因为您似乎觉得有必要。

对于角度 θ(-pi,pi]双曲正弦函数(通常称为sinh) 将角度映射到区间内实线上的区间(近似)(-11.5,11.5]。不像arcsin and arccos该函数的反函数在同一区间上也是单值的。按着这些次序:

1)如果一条弧包含0,则将其分成2条弧,(start,0) and (0,stop)。现在,实线上有 2、3 或 4 个间隔。

2) 计算这些间隔的交集并将线性测量转换回角度测量。现在您已经有了两条弧线的交点。

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

两条弧线之间的交点? (弧 = 一对角之间的距离) 的相关文章

  • C 埃及分数

    古埃及人仅使用以下形式的分数1 n因此任何其他分数都必须表示为这些单位分数的总和 而且 所有单位分数都是不同的 在C或Java中使任何分数成为埃及分数 总和越少越好 的好方法是什么 可以使用什么算法 分支定界 a 例如 3 4 1 2 1
  • 这个按位运算如何检查 2 的幂?

    我正在看一些应该很简单的代码 但我的数学在这里严重失败 下面是一个使用以下条件检查数字是否为 2 的幂的条件 if num 1 num num 1 make num pow of 2 我的问题是 如何在 num 和 num 1 之间使用按位
  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 如何确保整数除法始终向上舍入?

    我想确保如有必要 整数除法总是向上舍入 还有比这更好的方法吗 目前正在进行大量选角工作 int Math Ceiling double myInt1 myInt2 更新 这个问题是我2013年1月博客的主题 http ericlippert
  • 列出所有 k 元组,其条目总和为 n,忽略旋转

    有没有一种有效的算法来查找所有序列k总和为的非负整数n 同时避免旋转 如果可能的话 完全避免 顺序很重要 但对于我正在解决的问题来说 轮换是多余的 例如 与k 3 和n 3 我想要得到一个如下所示的列表 3 0 0 2 1 0 2 0 1
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用
  • 如何在Python的SciPy中更改稀疏矩阵中的元素?

    我构建了一个小代码 我想用它来解决涉及大型稀疏矩阵的特征值问题 它工作正常 我现在要做的就是将稀疏矩阵中的一些元素设置为零 即最顶行中的元素 对应于实现边界条件 我可以调整下面的列向量 C0 C1 和 C2 来实现这一点 不过我想知道是否有
  • 查找其索引的乘积可被另一个数字 X 整除的对的数​​量

    给定一个数组和某个值 X 找到满足以下条件的对的数量 i lt j a i a j and i j X 0 Array size lt 10 5 我想这个问题有一段时间了 但只能想出蛮力解决方案 通过检查所有对 这显然会超时 O N 2 t
  • 如何将Excel中的每个条目转换为一行“矩阵”表

    我有类似的东西 1 2 3 a x o x b x x o c o o o 并想将其转换成像这样的线 1 a x 1 b x 1 c x 2 a o 2 b x 2 c o 3 a x 3 b o 3 c o 通过使用Excel文档中的公式
  • 如何使用陀螺仪和磁力计计算航向

    我有陀螺仪和磁力计的原始数据 根据这些数据 我必须计算精度为 1Deg 的航向信息 我想知道 是否有任何算法可以帮助我使用可用信息以上述准确性获取标题信息 任何文章或任何链接也会有帮助 Thanks 我假设您正在使用电话来收集gyrosco
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 最接近 x,y 的线上的点[重复]

    这个问题在这里已经有答案了 可能的重复 如何判断一个点是否在某条线附近 https stackoverflow com questions 910882 how can i tell if a point is nearby a certa
  • 有没有好的 GLSL 哈希函数?

    所以我对这个问题的古老评论仍然得到了支持 GLSL rand 这一行代码的起源是什么 https stackoverflow com questions 12964279 whats the origin of this glsl rand
  • 旋转矩阵openCV

    我想知道如何找到框架中一组特征的旋转矩阵 我会更具体 我有 2 个具有 20 个特征的帧 假设第 1 帧和第 2 帧 我可以估计两个帧中特征的位置 例如 假设位置 x y 处的某个第 1 帧特征 并且我确切地知道它在哪里 所以假设为 x y
  • SymPy 和 Sage 有什么区别?

    有什么区别SymPy http www sympy org and Sage https www sagemath org 又名 SageMath 全面披露 我是 SymPy 的首席开发人员 您应该了解的第一件事是 SymPy 和 Sage
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • 涉及数学的方法给出与计算器不同的答案

    我是java新手 所以请耐心等待 我试图从比赛总数中获得胜利的百分比 但我正在做的事情还很遥远 我获取百分比的方法如下 public double winPercentage int wins int total return wins t
  • 在unity3D中显示数学方程

    我想使用它的 GUI 系统统一显示数学方程 有办法吗 我正在使用 C 语言在 Unity 中进行编程 如果我还可以使用 C 代码显示数学符号 这对我来说会很有用 谢谢 自 2016 年起 您可以使用TEXDraw https assetst
  • 计算机如何评估巨大的数字?

    例如 如果我输入一个值 1234567 98787878 Wolfram Alpha 可以为我提供许多细节 这包括小数近似 总长度 最后一位数字等等 您如何评估如此大的数字 据我了解 编程语言必须具有特殊的数据类型才能存储数字 更不用说将其
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus

随机推荐

  • 两相 Modelica Media 示例

    我正在尝试在 OpenModelica 中开发具有单一物质 液体或蒸汽 的流动模拟 Modelica Media Water 模型确实有两个阶段 但极其复杂 并且很难用完全不同的物质来重现 我想找到一个我可以使用的两相介质的简单示例 有一个
  • 我可以从 MsBuild Task 类中访问 MsBuildWorkspace 吗?

    据我了解 Roslyn 引入了工作空间的概念 工作区的一种实现是 MsBuildWorkspace 我的问题是 我可以从自定义构建任务中访问代表正在构建的项目的 Roslyn 工作区吗 我怀疑这就是MsBuildWorkspace 的目的
  • NETWORK_PROVIDER 不适用于 Android 版本 4.0 及以上/API 级别 14 及以上

    在 android 4 0 及以上调用 LocationManager requestLocationUpdates LocationManager NETWORK PROVIDER 0 0 侦听器 例外情况为 引起原因 java lang
  • 颜色转换器 DSP 的 IMFTransform 接口在 SetInputType/SetOutputType 上给出 E_INVALIDARG

    我正在尝试使用 Color Converter DMO http msdn microsoft com en us library windows desktop ff819079 v vs 85 aspx 通过 Media Foundat
  • 如何识别字符串中是否包含unicode字符?

    我有一个字符串 我想知道它里面是否有 unicode 字符 是否完全包含 ASCII 我怎样才能做到这一点 Thanks 如果我的假设是正确的 您想知道您的字符串是否包含任何 非 ANSI 字符 您可以按如下方式推导它 public voi
  • 为什么Python按顺序打印一组数字

    我尝试在 python 空闲 6 3 7 中打印它 输出为 3 6 7 集合不应该是无序的并且每次打印不同的顺序吗 这与哈希图的构建方式有关吗 Python 中的集合确实是无序的 事实上 您的特定示例集在迭代时恰好以明显排序的顺序给出元素
  • 如何使底部堆叠上下文中的元素保留在另一个较高堆叠上下文的前面? [复制]

    这个问题在这里已经有答案了 如何使堆叠顺序底部的堆叠上下文中包含的元素出现在堆叠顺序较高的不同堆叠上下文中的另一个元素的前面 e g HTML div class Parent 1 div div class Parent 2 div cl
  • DebugDiag 能否像 Visual Studio 2013 一样生成具有“包含大小”的报告

    Visual Studio 2013 可以显示包含大小的列 其中包括子对象的大小 http blogs msdn com b visualstudioalm archive 2013 10 16 net memory analysis en
  • 使用 Robolectric 和 Dagger 进行 Android 测试

    我正在尝试使用 Dagger 编写 Android 应用程序 为了遵循 TDD 方法 我开始为我的第一个活动编写测试 为了编写测试 我使用 Robolectric 并尝试使用 Mockito 让它在不同的场景中工作 短篇故事 我有一个 An
  • 用多个不同的替换来替换多个不同的出现 - Swift 4.2

    试图找到执行此操作的确切格式 我有一个文本字段用户输入 我想获取该输入并查找多个出现的情况 并将每个唯一出现的情况替换为不同的分别具有独特的性格 i e 代替 example with 1328571 这是我目前拥有的代码 目前只是为单个替
  • Git 分叉实际上是 Git 克隆吗?

    我不断听到人们说他们在 Git 中 fork 代码 Git fork 听起来很像 Git clone 加上一些 无意义的 放弃未来合并的心理意愿 Git 里没有 fork 命令吧 GitHub 通过将信件钉在叉子上 使叉子变得更加真实 也就
  • 未获取格式化形式的 Xml 部分?

    我正在尝试创建一个格式完美的 xml 文件 它包括稍后被替换的元素 输出的格式不完美 xEvent包含一个完整的 xml 模板表单 如字符串 这是最相关的代码 string c2 gt string c
  • 无法在 powershell 中转义管道字符 (|)

    我试图找到文件每一行中管道 字符的数量 我正在使用以下命令来执行此操作 gc test txt select string all matches measure select count 它不包括管道符号 我也尝试过 谁能告诉我如何在 p
  • Facebook 如何解析 blogspot.com 开放图属性

    blogspot com 的某些页面不包含开放图标签 但 Facebook 对象调试器仍然可以正确解析开放图属性 它如何获取开放图信息 例如 我在中没有看到任何开放图元标记http sushiwens blogspot com 源代码 但
  • 导航栏后退按钮重叠

    I am stuck in navigationcontroller Here are screenshots 1 from this page i am initializing paypal sdk I am presenting pa
  • Play框架:包javax.inject不存在

    在我的 Play 2 0 Framework Java 项目中 以下行在 Eclipse 中和 sbt 编译步骤期间都会产生错误 import javax inject 我已经添加了javax inject对我的 build sbt 文件的
  • iOS 8 当键盘出现时将 UIView 向上移动 |问题

    我有一个UIView with a UITextField放置在屏幕底部 当键盘出现时它将向上移动 在 iOS 8 之前我一直遵循以下方法 似乎效果很好 When Keyboard appears void keyboardWillShow
  • 从 64 位代码访问 32 位 DLL

    我需要迁移 32 位 dll 以便在 64 位 C 以及 C 应用程序中使用它 该dll是用非托管delphi代码编写的 我无法重新编译 dll 唯一的方法是使用进程间通信 IPC 我搜索了很长时间 但没有找到太多相关信息 我找到的最好的指
  • OCaml“else”语法错误

    我是第一次学习 OCaml 我遇到了一个非常模糊的 语法错误 的麻烦 定义函数时generateboxes像这样 let rec generateboxes a b if a add1 b then force newline print
  • 两条弧线之间的交点? (弧 = 一对角之间的距离)

    我正在尝试找到一种方法来计算两条弧之间的交点 我需要用它来确定圆弧在视觉上有多少在右半边 有多少在左半边 我考虑创建右半部分的弧 并将其与实际弧相交 但我花了很多时间来解决这个问题 所以我想在这里问 以前肯定有人做过 编辑 很抱歉 当我在处