geometry with complex numbers - codeit.bg · 2 geometry introduction algorithms problems bruce...

56
Complex numbers Geometry Summary Geometry with complex numbers Bruce Merry University of Cape Town 10 May 2012 Bruce Merry Geometry with complex numbers

Upload: others

Post on 27-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

Geometry with complex numbers

Bruce Merry

University of Cape Town

10 May 2012

Bruce Merry Geometry with complex numbers

Page 2: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 3: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 4: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Definition

Complex numbers have the form a + bi(a + bi) + (c + d i) = (a + c) + (b + d)i−(a + bi) = (−a) + (−b)is(a + bi) = (sa) + (sb)i

Complex numbers form a 2D vector space

Bruce Merry Geometry with complex numbers

Page 5: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Multiplication

By definition, i2 = −1:(a + bi)(c + d i) = (ac − bd) + (ad + bc)i(a + bi)−1 = a

n + bn i where n = a2 + b2

Complex numbers form a field

Bruce Merry Geometry with complex numbers

Page 6: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Polar Form

cos x =x0

0!− x2

2!+

x4

4!− · · ·

sin x =x1

1!− x3

3!+

x5

5!− · · ·

ex =x0

0!+

x1

1!+

x2

2!+ · · ·

ebi =b0

0!+

b1

1!i− b2

2!− b3

3!i +

b4

4!+

b5

5!i− · · ·

= cos b + (sin b)i

ea+bi = ea cos b + (ea sin b)i

If z = reiθ = r cos θ + (r sin θ)i then |z| = r ,arg z = θ.

Bruce Merry Geometry with complex numbers

Page 7: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Polar Form

cos x =x0

0!− x2

2!+

x4

4!− · · ·

sin x =x1

1!− x3

3!+

x5

5!− · · ·

ex =x0

0!+

x1

1!+

x2

2!+ · · ·

ebi =b0

0!+

b1

1!i− b2

2!− b3

3!i +

b4

4!+

b5

5!i− · · ·

= cos b + (sin b)i

ea+bi = ea cos b + (ea sin b)i

If z = reiθ = r cos θ + (r sin θ)i then |z| = r ,arg z = θ.

Bruce Merry Geometry with complex numbers

Page 8: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Polar Form

cos x =x0

0!− x2

2!+

x4

4!− · · ·

sin x =x1

1!− x3

3!+

x5

5!− · · ·

ex =x0

0!+

x1

1!+

x2

2!+ · · ·

ebi =b0

0!+

b1

1!i− b2

2!− b3

3!i +

b4

4!+

b5

5!i− · · ·

= cos b + (sin b)i

ea+bi = ea cos b + (ea sin b)i

If z = reiθ = r cos θ + (r sin θ)i then |z| = r ,arg z = θ.

Bruce Merry Geometry with complex numbers

Page 9: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Polar Form

cos x =x0

0!− x2

2!+

x4

4!− · · ·

sin x =x1

1!− x3

3!+

x5

5!− · · ·

ex =x0

0!+

x1

1!+

x2

2!+ · · ·

ebi =b0

0!+

b1

1!i− b2

2!− b3

3!i +

b4

4!+

b5

5!i− · · ·

= cos b + (sin b)i

ea+bi = ea cos b + (ea sin b)i

If z = reiθ = r cos θ + (r sin θ)i then |z| = r ,arg z = θ.

Bruce Merry Geometry with complex numbers

Page 10: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Polar Form

cos x =x0

0!− x2

2!+

x4

4!− · · ·

sin x =x1

1!− x3

3!+

x5

5!− · · ·

ex =x0

0!+

x1

1!+

x2

2!+ · · ·

ebi =b0

0!+

b1

1!i− b2

2!− b3

3!i +

b4

4!+

b5

5!i− · · ·

= cos b + (sin b)i

ea+bi = ea cos b + (ea sin b)i

If z = reiθ = r cos θ + (r sin θ)i then |z| = r ,arg z = θ.

Bruce Merry Geometry with complex numbers

Page 11: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Complex Conjugate

The conjugate of z is written z:a + bi = a− bi

reθi = re−θi

z + w = z + wzw = z wz−1 = z−1

z + z = 2<(z)z z = |z|2

Bruce Merry Geometry with complex numbers

Page 12: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Complex Conjugate

The conjugate of z is written z:a + bi = a− bireθi = re−θi

z + w = z + wzw = z wz−1 = z−1

z + z = 2<(z)z z = |z|2

Bruce Merry Geometry with complex numbers

Page 13: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Complex Conjugate

The conjugate of z is written z:a + bi = a− bireθi = re−θi

z + w = z + wzw = z wz−1 = z−1

z + z = 2<(z)z z = |z|2

Bruce Merry Geometry with complex numbers

Page 14: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Complex Conjugate

The conjugate of z is written z:a + bi = a− bireθi = re−θi

z + w = z + wzw = z wz−1 = z−1

z + z = 2<(z)z z = |z|2

Bruce Merry Geometry with complex numbers

Page 15: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 16: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

The Argand Plane

Treat a + bi as coordinates (a,b)

0

3 + i

−2 + 3i

−4 − 2i

−3i

Bruce Merry Geometry with complex numbers

Page 17: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Addition

Addition works just like for vectors:

z

w

z + w

Bruce Merry Geometry with complex numbers

Page 18: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

MultiplicationMultiplication rotates and scales:

reiθ · seiφ = rsei(θ+φ)

z

w

s

φ rθ

Bruce Merry Geometry with complex numbers

Page 19: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

MultiplicationMultiplication rotates and scales: reiθ · seiφ = rsei(θ+φ)

z

w

zw

s

φ rθ

rs

θ + φ

Bruce Merry Geometry with complex numbers

Page 20: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

DefinitionGeometric interpretation

Complex Conjugatez is the reflection of z in the real axis:

z

z

Bruce Merry Geometry with complex numbers

Page 21: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 22: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template class

All the benefits of vectorsCan manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)Multiply to add anglesConjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 23: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template classAll the benefits of vectors

Can manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)Multiply to add anglesConjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 24: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template classAll the benefits of vectorsCan manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)Multiply to add anglesConjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 25: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template classAll the benefits of vectorsCan manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)

Multiply to add anglesConjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 26: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template classAll the benefits of vectorsCan manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)Multiply to add angles

Conjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 27: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Why Use Complex Numbers?

C++ provides a complex template classAll the benefits of vectorsCan manipulate angles without trigonometry

Represent θ using reiθ (r arbitrary)Multiply to add anglesConjugate to negate an angle

Bruce Merry Geometry with complex numbers

Page 28: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Warnings

Avoid floating-point if at all possibleAlways think about the corner casesBe careful of overflows

Bruce Merry Geometry with complex numbers

Page 29: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 30: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Dot And Cross Product

zw = rs cos θ + (rs sin θ)i

z

z

w

sφ r

ψ

int dot(pnt z, pnt w) { return real(conj(z) ∗ w); }int cross(pnt z, pnt w) { return imag(conj(z) ∗ w); }

Bruce Merry Geometry with complex numbers

Page 31: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Dot And Cross Product

zw = rs cos θ + (rs sin θ)i

z

z

w

zw

sφ r

ψ

rs

θ = φ− ψ

int dot(pnt z, pnt w) { return real(conj(z) ∗ w); }int cross(pnt z, pnt w) { return imag(conj(z) ∗ w); }

Bruce Merry Geometry with complex numbers

Page 32: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Dot And Cross Productzw = rs cos θ + (rs sin θ)i

z

z

w

zw

sφ r

ψ

rs

θ = φ− ψ

int dot(pnt z, pnt w) { return real(conj(z) ∗ w); }int cross(pnt z, pnt w) { return imag(conj(z) ∗ w); }

Bruce Merry Geometry with complex numbers

Page 33: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Dot And Cross Productzw = rs cos θ + (rs sin θ)i

z

z

w

zw

sφ r

ψ

rs

θ = φ− ψ

int dot(pnt z, pnt w) { return real(conj(z) ∗ w); }int cross(pnt z, pnt w) { return imag(conj(z) ∗ w); }

Bruce Merry Geometry with complex numbers

Page 34: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Signed Triangle Area

For convenience, I usually define

int cross(pnt a, pnt b, pnt c) {return cross(b − a, c − a);

}

which is twice the signed area of 4ABC.

Bruce Merry Geometry with complex numbers

Page 35: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Line-Line Intersection Test

Start with a bounding box test

bool intersects(pnt a, pnt b, pnt p, pnt q) {if (max(a.real(), b.real()) < min(p.real(), q.real())) return false;if (min(a.real(), b.real()) > max(p.real(), q.real())) return false;if (max(a.imag(), b.imag()) < min(p.imag(), q.imag())) return false;if (min(a.imag(), b.imag()) > max(p.imag(), q.imag())) return false

Bruce Merry Geometry with complex numbers

Page 36: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Line-Line Intersection Test

Check if PQ lies entirely on one side of AB:

int cp = cross(a, b, p);int cq = cross(a, b, q);if (cp > 0 && cq > 0) return false;if (cp < 0 && cq < 0) return false;

and check if AB lies entirely on one side of PQ

int ca = cross(p, q, a);int cb = cross(p, q, b);if (ca > 0 && cb > 0) return false;if (ca < 0 && cb < 0) return false;

Passed all the tests, so the lines intersect

return true;

Bruce Merry Geometry with complex numbers

Page 37: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Outline

1 Complex numbersDefinitionGeometric interpretation

2 GeometryIntroductionAlgorithmsProblems

Bruce Merry Geometry with complex numbers

Page 38: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesProblem Statement

Google Code Jam 2008, EMEA semifinal, problem ATwo triangles, T1 and T2 are givenT2 is T1, scaled, rotated and translatedScale factor is strictly between 0 and 1

Find a fixed point of the transformation T1 → T2

Bruce Merry Geometry with complex numbers

Page 39: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesProblem Statement

Google Code Jam 2008, EMEA semifinal, problem ATwo triangles, T1 and T2 are givenT2 is T1, scaled, rotated and translatedScale factor is strictly between 0 and 1

Find a fixed point of the transformation T1 → T2

Bruce Merry Geometry with complex numbers

Page 40: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesTransformation

In complex numbers, this is an affine function

f (z) = vz + w

where v scales and rotates, w translates

Bruce Merry Geometry with complex numbers

Page 41: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesFinding The Transformation

B2 − A2 = f (B1)− f (A1)

= (vB1 + w)− (vA1 + w)

= v(B1 − A1)

Therefore

v =B2 − A2

B1 − A1.

Also, A2 = vA1 + w gives

w = A2 − vA1

Bruce Merry Geometry with complex numbers

Page 42: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesFixed Point

The fixed point z satisfies

z = vz + w(1− v)z = w

z =w

1− v

Bruce Merry Geometry with complex numbers

Page 43: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

Scaled TrianglesSample code

typedef complex<double> pnt;pnt verts[2][3];for (int i = 0; i < 2; i++)

for (int j = 0; j < 3; j++)cin >> verts[i][j].real() >> verts[i][j].imag();

pnt edge0 = verts[0][1] − verts[0][0];pnt edge1 = verts[1][1] − verts[1][0];pnt scale = edge1 / edge0;pnt bias = verts[1][0] − scale ∗ verts[0][0];pnt z = bias / (1.0 − scale);

Bruce Merry Geometry with complex numbers

Page 44: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesProblem Statement

TopCoder SRM 539 Div 1, Level 2: Count the number of distinctcircles that pass through at least three of the given points.

Have to consider 3 points collinear (no circle)Have to consider 4+ points concyclic (shared circle)

Bruce Merry Geometry with complex numbers

Page 45: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesInitial Idea

Fix two points A, B, find all circles through A, BCount a circle only if A, B are the lowest-index points

A

B

Bruce Merry Geometry with complex numbers

Page 46: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesCircles And Angles

If A, B, C, D are concyclic, then

∠ACB = ∠ADB

(mod π)

A B

CD

D

Bruce Merry Geometry with complex numbers

Page 47: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesCircles And Angles

If A, B, C, D are concyclic, then

∠ACB = ∠ADB (mod π)

A B

C

D

D

Bruce Merry Geometry with complex numbers

Page 48: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)?

— no, involves trigonometryScale to unit length?

— no, involves floating-point

Divide out by GCD

— all integer!

Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 49: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometry

Scale to unit length?

— no, involves floating-point

Divide out by GCD

— all integer!

Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 50: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometryScale to unit length?

— no, involves floating-pointDivide out by GCD

— all integer!

Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 51: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometryScale to unit length? — no, involves floating-point

Divide out by GCD

— all integer!

Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 52: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometryScale to unit length? — no, involves floating-pointDivide out by GCD

— all integer!Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 53: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometryScale to unit length? — no, involves floating-pointDivide out by GCD — all integer!

Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 54: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesBucketing Angles

We need to bucket angles ∠AXB for all X , but reiθ

representation is not unique.Call arg(z)? — no, involves trigonometryScale to unit length? — no, involves floating-pointDivide out by GCD — all integer!Can also negate to reduce mod π

Bruce Merry Geometry with complex numbers

Page 55: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

IntroductionAlgorithmsProblems

CropCirclesSample Code

for (int i = 0; i < N; i++)for (int j = i + 1; j < N; j++) {

set<pnt, Compare> seen;pnt A = pnts[i], B = pnts[j];for (int k = N − 1; k >= 0; k−−) {

pnt C = pnts[k];pnt diff = conj(A − C) ∗ (B − C);if (diff.imag() == 0) continue;diff /= gcd(diff.real(), diff.imag());if (diff.imag() < 0) diff = −diff;if (k > j) seen.insert(diff); else seen.erase(diff);

}ans += seen.size();

}

Bruce Merry Geometry with complex numbers

Page 56: Geometry with complex numbers - codeit.bg · 2 Geometry Introduction Algorithms Problems Bruce Merry Geometry with complex numbers. Complex numbers Geometry Summary Definition Geometric

Complex numbersGeometrySummary

Questions

?

Bruce Merry Geometry with complex numbers