如何在 2D 中找到直线与椭圆的交点 (C#)

2023-12-27

我需要找到一条线(其原点是椭圆的中心)与二维椭圆相交的点...我可以轻松找到圆上的点,因为我知道角度 F 和圆的半径 (R):

x = x0 + R * cosF
y = y0 + R * sinF

然而我只是不知道我应该如何处理椭圆......我知道它的尺寸(A&B),但是找到参数T的方法是什么?!

x = x0 + A * cosT
y = y0 + B * sinT

据我了解,参数T(T角)距离F角并不远(在某些情况下约为+-15度),但我就是不知道如何计算它!

如果有好心人请帮我解决这个问题...


驻留在 0,0 处的椭圆的标准方程为:

1 = (x)^2 / (a)    +  (y)^2 / (b)

其中,a 是水平轴上直径的 1/2,b 是垂直轴上直径的 1/2。

你有一条线,假设有一个方程:

y = (m)(x - x0) + y0

那么,让我们即插即用吧!

1 = (x)^2 / (a)   +   (m(x - x0) + y0)^2 / (b)

1 = x^2 / a  +  (mx + (y0 - mx0))^2 / b

1 = x^2 / a  +  (m^2 * x^2 + 2mx*(y0 - mx0) + (y0 - mx0)^2) / b

1 = x^2 / a  + (m^2 x^2) / b + (2mx*(y0 - mx0) + (y0^2 - 2y0mx0 + m^2*x0^2)) / b

1 = ((x^2 * b) / (a * b)) + ((m^2 * x^2 * a) / (a * b)) + (2mxy0 - 2m^2xx0)/b + (y0^2 - 2y0mx0 + m^2*x0^2)/b

1 = ((bx^2 + am^2x^2)/(ab)) + (x*(2my0 - 2m^2x0))/b + (y0^2 - 2y0mx0 + m^2*x0^2)/b

0 = x^2*((b + a*m^2)/(ab)) + x*((2my0 - 2m^2x0)/b) + (((y0^2 - 2y0mx0 + m^2*x0^2)/b) - 1)

最后一个方程遵循标准二次方程的形式。

因此,只需使用二次公式即可:

((b + a*m^2)/(ab))
((2my0 - 2m^2x0)/b)
and 
(((y0^2 - 2y0mx0 + m^2*x0^2)/b) - 1)

获取交叉点处的 X 值;然后,将这些值代入原始线方程以获得 Y 值。

祝你好运!

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

如何在 2D 中找到直线与椭圆的交点 (C#) 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 有什么方法可以重载 C# 中的扩展方法吗?

    我有以下模型模式 public abstract class PARENTCLASS public class CHILD A CLASS PARENTCLASS public static class EXTENSION public s
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • 如何避免 Linux/X11 上的 pygame 撕裂

    我一直在玩 pygame 在 Debian Lenny 上 它似乎工作得很好 除了烦人的位图撕裂 全屏或窗口模式 我正在使用默认的 SDL X11 驱动程序 谷歌搜索表明 X11 不提供垂直同步功能 这是 SDL 的一个已知问题 即使使用使
  • 两个相似的位姿具有较大的相对欧拉角

    欧拉角表示的相似位姿有两种 s euler angle o1 0 000549608 3 1334 1 23193 s euler angle o2 0 0222646 3 10948 1 31032 但 Eigen 计算出的相对欧拉角为
  • datagridview 虚拟模式,更新 RowCount 会导致 CellValueNeeded 为所有行触发

    我正在尝试实现 datagridview 的虚拟模式 但是当我将 RowCount 设置为某个数字 以显示滚动条 时 网格希望同时拥有所有行 而不仅仅是显示的行 DataGridView grid new grid VirtualMode
  • Matlab 周末提取

    我有一个大小为 364 x 5 的矩阵 timeVectorDaily 该矩阵具有十进制天数形式的数据 例如 734870 734870 2 734870 4 734870 6 734870 8 734871 734871 2 734871
  • 同时按下按键

    我可以知道在Javascript中同时按下的键的数量吗 如果是这样 我怎样才能拥有他们的数组keyCode 您可以监听 keydown 和 keyup 事件 var keys length 0 document onkeydown func
  • 使用 Python/bokeh 在网站中嵌入绘图

    我试图在个人网站中静态嵌入散景图 但遇到了一些我不理解的行为 基本上 我使用散景生成一个绘图 如下所示 import bokeh plotting as bplt import numpy as np x np random random
  • 如何将二维数组传递到 pycuda 的内核中?

    我找到了答案here https stackoverflow com questions 13282596 how do i feed a 2 dimensional array into a kernel with pycuda 但尚不清
  • 四舍五入到最接近的 100

    如何将整数四舍五入到最接近的 100 例如 497 将四舍五入为 500 98 将四舍五入为 100 1423 将四舍五入为 1400 我会除以 100 四舍五入 然后再次相乘 int initial int rounded int Mat
  • WPF 画布 VisibilityChanged 事件

    我想设置一个事件来运行Visibility在 WPF 上更改Canvas控制 canvas1 VisibleChanged new EventHandler canvas1 VisibleChanged 我已经尝试了上面的方法 但不起作用
  • 如何从嵌套对象生成查询字符串

    我想为我的高级过滤器生成一个查询字符串 我的对象如下所示 searchValue firstName John lastName Doe postalCode 3130 city New York page 1 我正在使用请求参数 http
  • AWS SES SendBulkTemplatedEmail,示例以及如果超出配额会发生什么情况?

    我有两个关于 AWS SES SendBulkTemplatedEmail 的问题 1 有谁知道 Net 中的分步教程吗 我只见过使用 CLI 的示例 并且正在摸索 API 来尝试使其工作 2 每个SendBulkTemplatedEmai
  • 如何在 dplyr 中链接 ifelse 语句

    我试图在我的 R 函数之一中链接 ifelse 语句 基本上我想做的是 do something lt function df cond TRUE df gt ifelse cond do something do something el
  • JQuery 自动完成替代选择下拉菜单

    我在文本输入上使用 jQuery 自动完成小部件来替换选择下拉列表 当用户单击文本框时 建议下拉菜单将打开 我的解决方案在 FireFox 中运行良好 但在 Internet Explorer 8 中运行时出现一些故障 在 Internet
  • 我如何知道何时在组合框中“重新选择”某个值?

    我正在使用 ComboBox 将文本模板插入 RichEdit 控件 模板的名称位于 ComboBox 的选项列表中 除非用户再次在列表中选择相同的值 否则一切都很好 然后SelectionChanged没有开火 根据事件的名称 这是有意义
  • 使用http劫持器有什么好处

    Go http pkg 提供了一个Hijacker http golang org pkg net http Hijacker接口 谁能告诉我什么时候应该使用它 我检查了评论 在劫持调用让调用者接管连接之后 HTTP 服务器库不会对该连接执
  • java中的正则表达式及其与indexOf的性能比较

    请有人告诉我如何匹配 和句点 使用正则表达式在字符串中恰好出现一次 而且使用 indexOf 而不是正则表达式更有效 String s Hello Wor ld or s 12323 asdfasd 基本上任何字符都可以出现在之前和之后 a
  • 使用jstree打开一个节点及其所有父节点

    我正在尝试使用 jstree 并在打开页面时打开一个节点及其所有父节点 这是我用来测试的html代码 div ul li a href TEST1 a ul li a href TEST2 a li li a href TEST3 a li
  • CSS 中 SVG“defs”标签的正确行为是什么?

    当编写带有嵌入 CSS 的 SVG 代码时
  • python 覆盖我的列表元素

    对 python 相当新 对 python 类非常新 问题有点复杂 最感谢您的耐心 我有一个 明星 班 很简单 属性 x v 和质量 另一个类 Galaxy 有一个属性 stars 它只是星星对象的列表 class Galaxy numst
  • 如何在 2D 中找到直线与椭圆的交点 (C#)

    我需要找到一条线 其原点是椭圆的中心 与二维椭圆相交的点 我可以轻松找到圆上的点 因为我知道角度 F 和圆的半径 R x x0 R cosF y y0 R sinF 然而我只是不知道我应该如何处理椭圆 我知道它的尺寸 A B 但是找到参数T