Python在椭圆上找到已知点的投影点

时间:2017-05-03 13:44:37

标签: python projection

我需要实现这个过程:

关于下面的图像,我知道红点的坐标。我必须找到椭圆中红点的投影,因此是椭圆的紫点。

我有橙色线的点和椭圆的点。

有没有可用的算法来执行此操作?enter image description here

3 个答案:

答案 0 :(得分:0)

你可以在红点处构造一个带有非右顶点的直角三角形,然后这将允许你计算从投影点到橙色线的距离,该距离与紫色点的长度相同。

三角形构造可以通过在红点之间构造线(A),找到原点和橙线(角度B)之间的角度来进行。从那里,A线和右顶点线之间的角度由90-(角度B)给出。然后是和弦的长度。

答案 1 :(得分:0)

让从“中心”红点 c 到另一个红点 r 的矢量为 u ,并且来自中心的矢量红点指向橙色线上的其他点 v 。我们希望将 u 旋转两倍于 u v 之间的角度。设θ为 u v 之间的角度。我们可以使用rotation matrix两次θ,并将其乘以 u ,以获得从红色“中心”点 c 到紫色点的矢量 p 的。由于我们知道红点线和橙线之间角度的余弦,我们不应该采用角度或任何东西的任何正弦或余弦,我们可以在向量中表达所有这些。 {3}}等等。

人们可能会把这个问题归结为一个更简单的等式,但这是一个反映“展示你的工作”的算法:

  • 将余弦(θ)定义为 u * v / || u || ||的 v ||

  • 使用dot productdouble angle身份从余弦(θ)中找出余弦(2θ)和正弦(2θ)

  • 构建pythagorean

  • 将旋转矩阵乘以 u 以获得 w ,从 c p 的向量

  • w 的组件添加到 c 的坐标中以获取 p 的坐标

答案 2 :(得分:0)

鉴于你没有为点和线指定方程的确切形式,我将假设以下符号:橙色线穿过原点并沿着矢量[v1,v2],这样它的每个点都可以写成a*[v1,v2]。鉴于此,以下方法应该有效:

  1. 找到v的任何垂直向量(我将其称为n):具有非零n2的n=[-(v2*n2)/v1, n2]形式的任何向量。

  2. 通过沿着n的红点(不是原点)表示线:[r1,r2]+b*[-(v2*n2)/v1, n2]描述任何这样的点。

  3. 找到这些线相交的参数a和b:求解 v1 = r1-b (v2 * n2)/ v1和a * v2 = r2 * b * n2对于a和b。b的结果,这是你需要的结果:

    b= (v1*(r1*v1-r2*v1))/(n2*(v1^2 + v2^2))
    
  4. 对于你选择的n2,紫色点的坐标为[r1,r2]+2*b*[-(v2*n2)/v1, n2]