📜  使用复数的几何<std::complex>在C++中|套装1

📅  最后修改于: 2021-04-26 05:59:43             🧑  作者: Mango

在解决几何问题时,定义用于在2D平面或欧几里得平面上指定点的点类非常耗时。因此,本文指定了一种使用C++中来自STL的复杂类来实现相同方法的更快,更聪明的方法。
在实施之前,必须了解什么是复数以及它们如何帮助表示2D平面上的点。

什么是复数?

复数的形式为

a + bi
where, a is the real part
b is the imaginary part

Argand平面中的点和复数
从图中可以看出,复数可以在2D平面上表示。因此,对于点(a,b),我们可以有一个复数a + bi,其中a是X坐标,b是Y坐标。
重要说明: i 2 = -1

  • 复数的极坐标形式:可视化和表示复数的另一种方式是极坐标形式。极坐标形式使用’r’形式的复数的大小和’θ’形式的复数的方向。
    那么具有这些参数的复数为r(cosθ+isinθ)。
    注意:θ被认为是弧度。

    reiθ = r(cosθ+isinθ)

    复数的极坐标

  • 共轭复数:
    如果z = a + bi,则z的共轭为z’= a – bi。
    如果z =(r,θ),则z的共轭为z’=(r,-θ)
    复数的共轭可用于获得某些特殊属性,如下所示:
    • z + z’=(a + bi)+(a – bi)= 2a
      实部=(复数+共轭)/ 2
    • z – z’=(a + bi)–(a – bi)= 2b
      虚部=(复数–共轭)/ 2
    • z * z’=(a + bi)*(a – bi)= a2 – b2i2 + 2abi – 2abi = a2 + b2
      幅度2 =复数*共轭

如何使用复数?

让我们考虑欧几里得平面上的点P(a,b)。现在我们使一个复数z = a + bi并得出两者之间的等价关系。与P关联的一些属性是:

  1. P的X坐标:我们可以简单地说X坐标= a。因此,返回z的实部。
  2. P的Y坐标:我们可以简单地说Y坐标= b。因此,返回z的虚部。
  3. P到原点的距离(0,0): P到原点的距离= sqrt((a-0) 2 +(b-0) 2 )= sqrt(a 2 + b 2 )
    z的幅度= sqrt(a 2 + b 2 )
    因此,返回z的大小。
  4. OP与X轴的夹角,其中O是原点: OP与X轴的夹角= tan -1 (b / a)
    参数,即z的参数theta可以如下得出:
    rcosθ= a…..(i)
    rsinθ= b…..(ii)
    (ii)除以(i)
    tanθ=(b / a)
    θ= tan -1 (b / a)
    因此,返回z的参数。
  5. P绕原点旋转:绕原点旋转点不会改变其与原点的距离,而只会改变PO与X轴的夹角。
    因此,如果我们考虑极数形式的复数,则可以更好地理解旋转当量。
    z = reiθ
    让点沿逆时针方向旋转“α”。
    点现在变成重I(θ+α)=重新Iθ* 1EIα= Z * 1EIα
    因此,返回z * polar(1,α)。
    其中,polar(r,θ)是一般表示。

让我们考虑欧几里得平面上的点P(a,b)和Q(c,d)。基本上可以将其视为向量,其长度等于X轴所确定的距原点和方向的距离。 (如果将点作为向量,则可以更好地理解许多属性,这是各种几何算法中的关键思想之一)。
现在让我们考虑z1 = a + bi和z2 = c + di。
与P和Q相关的一些属性是:

  1. 向量加法:
    (a, b) + (c, d) = (a + c, b + d)
    z1 + z2 = (a + bi) + (c + di) = (a + c) + (b + d)i

    因此,返回z1 + z2。

  2. 向量减法:只需返回
    z1 – z2
  3. PQ线的斜率:
    z2 – z1 gives the angle of elevation

    因此,线PQ的斜率由仰角的切线给出。
    因此,返回z2 – z1的参数的正切值。

  4. 欧氏距离:
    Distance of P from Q = sqrt((a-c)2 + (b-d)2)
    Magnitude of z1 – z2 = sqrt((a-c)2 + (b-d)2)

    因此,返回z1 – z2的大小。

    An important construction which will be used frequently in geometric problems is z1’z2.
    Let’s compute this:
    z1’ = a – bi
    z1’z2 = (a – bi)*(c + di) = ac + adi – bci + bd = (ac + bd) + (ad – bc)i
    
  5. 点积:向量P和Q的点积为
    (ac + bd)

    这与上述构造的实际部分相同。因此,返回z1’z2的实部。

  6. 跨产品:跨产品的向量P和Q的幅度
    (ad – bc)

    这与上述构造的假想部分相同。因此,返回z1’z2的虚部。

Set 2中涵盖了复杂类的实现部分