在解决几何问题时,定义点类以指定二维平面或欧氏平面上的点非常耗时。因此,本文指定了一种更快、更聪明的方法来在C++中实现STL中使用的复杂类。 在实现之前,必须了解什么是复数,以及它们如何帮助表示二维平面上的点。
什么是复数?
复数的形式是
a + bi where, a is the real part b is the imaginary part
从图中可以看出,复数可以在二维平面上表示。因此,对于一个点(a,b),我们可以有一个复数a+bi,其中a是X坐标,b是Y坐标。 重要提示: 我 2. = -1
- 复数的极性形式: 可视化和表示复数的另一种方法是极坐标形式。极坐标形式使用复数的大小表示为“r”,复数的方向表示为“θ”。 具有这些参数的复数就是r(cosθ+isinθ)。 注:θ被认为是弧度。
重新 iθ =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相关的一些属性包括:
- P的X坐标: 我们可以简单地说X坐标=a。因此,返回z的实部。
- P的Y坐标: 我们可以简单地说Y坐标=b。因此,返回z的虚部。
- P与原点的距离(0,0): P与原点的距离=sqrt(a-0) 2. +(b-0) 2. )=sqrt(a) 2. +b 2. ) z的大小=sqrt(a 2. +b 2. ) 因此,返回z的大小。
- OP与X轴的夹角,其中O为原点: OP与X轴的夹角=棕褐色 -1 (b/a) 参数,即z的参数θ,可按以下公式推导: rcosθ=a…。。(一) rsinθ=b…。。(二) (ii)除以(i) tanθ=(b/a) θ=tan -1 (b/a) 因此,返回z的参数。
- P绕原点旋转: 围绕原点旋转点不会改变其与原点的距离,但只会改变PO与X轴的角度。 因此,如果我们考虑极形式的复数,则可以更好地理解旋转等价性。 z=re iθ 让点逆时针旋转‘α’。 这一点现在变得更加重要 i(θ+α) =re iθ *1e iα =z*1e iα 因此,返回z*polar(1,α)。 其中,极坐标(r,θ)是一般表示。
让我们考虑在欧几里得平面上的点p(a,b)和q(c,d)。这些基本上可以被认为是向量,其长度等于距离原点的距离和X轴的方向。(如果将点作为向量,可以更好地理解许多属性,这是各种几何算法的关键思想之一)。 现在让我们考虑Z1= A+Bi和Z2= C+DI。 与P和Q相关的一些属性包括:
- 矢量加法:
(a, b) + (c, d) = (a + c, b + d) z1 + z2 = (a + bi) + (c + di) = (a + c) + (b + d)i
因此,返回z1+z2。
- 矢量减法: 简单地返回
z1 – z2
- 线路PQ的坡度: 的论点
z2 – z1 gives the angle of elevation
因此,线PQ的斜率由仰角的切线给出。 因此,返回z2–z1参数的正切值。
- 欧几里德距离:
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
- Dot产品: 向量P和Q的点积为
(ac + bd)
这与上述构造的真实部分相同。因此,返回z1’z2的真实部分。
- 交叉积: 向量P和Q的叉积的大小为
(ad – bc)
这与上述构造的虚部相同。因此,返回z1’z2的虚部。
中介绍了复杂类的实现部分 第二组
本文由 安雅·金达尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。