Skip to content

Commit 2d44ef6

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents bc85dae + 1941d01 commit 2d44ef6

File tree

5 files changed

+50
-2
lines changed

5 files changed

+50
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Jeg velger å starte med oppgave 2 også løse 1 med den generelle.
1717
2d) vet ikke hvordan strukturere data på bra måte og jeg jobber med immutable tuples
1818
mye bruk av np.asarray() på lister fordi jeg er usikker med å velge dtype manuelt
1919
2f) jeg må velge farger for kantene som kan være mange. jeg bare velger tilfeldige farger.
20+
3) jeg bruker np.dot som kanskje ikke er rask nok. jeg laget bare 5000 punkter
2021

2122

2223
## Authors

chaos_game.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def _starting_point(self):
7777
spoint[1] += w[i] * self._corners[i][1]
7878
return spoint
7979

80-
def iterate(self, steps: int = 10, discard: int = 5):
80+
def iterate(self, steps: int = 10000, discard: int = 100):
8181
"""Discards the first discard points.
8282
The third element in each tuple is the random chosen corner index
8383
be aware that, currently, index is a float"""
@@ -131,7 +131,7 @@ def gradient_color(self):
131131
colors = iter([plt.cm.tab20(i) for i in range(20)])
132132
cc = []
133133
i = 0
134-
# TODO: this can only create a limited number of colors then repeat
134+
# TODO: this can only create a limited number of colors then repeat set pattern
135135
while len(cc) < self._corners.shape[0]:
136136
cc.append(next(colors))
137137
i += 1

fern.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import numpy as np
2+
import matplotlib.pyplot as plt
3+
import pathlib
4+
5+
6+
class AffineTransform:
7+
def __init__(self, a=0., b=0., c=0., d=0., e=0., f=0.):
8+
self._abcd = self._ef = np.asarray([[a, b], [c, d]])
9+
self._ef = np.asarray([[e], [f]])
10+
11+
def __call__(self, x, y):
12+
# np.dot maybe introducing overhead?
13+
return np.dot(self._abcd, [[x], [y]]) + self._ef
14+
15+
16+
f1 = AffineTransform(0,0,0,0.16,0,0)
17+
f2 = AffineTransform(0.85, 0.04, -0.04, 0.85, 0, 1.60)
18+
f3 = AffineTransform(0.20, -0.26, 0.23, 0.22, 0, 1.6)
19+
f4 = AffineTransform(-0.15, 0.28, 0.26, 0.24, 0, 0.44)
20+
21+
functions = [f1, f2, f3, f4]
22+
p_cumulative = [0.01, 0.86, 0.92, 1.00]
23+
def select(funcs, probcum):
24+
r = np.random.random()
25+
for j, p in enumerate(probcum):
26+
if r < p:
27+
return funcs[j]
28+
29+
30+
plt.axis("equal")
31+
plt.axis('off')
32+
x = [[0], [0]]
33+
plt.scatter(0, 0)
34+
# TODO: optimize
35+
for i in range(5000):
36+
x = select(functions, p_cumulative)(x[0][0], x[1][0])
37+
plt.scatter(x[0], x[1])
38+
39+
plt.savefig(pathlib.Path(__file__).parent.resolve().__str__() + '\\figures\\' + "barnsley_fern",
40+
dpi=400, s=0.1)
41+

figures/barnsley_fern.png

372 KB
Loading

triangle.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import chaos_game as cg
2+
3+
4+
triangle = cg.ChaosGame()
5+
triangle.iterate(20000, 100)
6+
triangle.show(True)

0 commit comments

Comments
 (0)