aboutsummaryrefslogtreecommitdiff
path: root/3-levy-c-curve/main.ua
blob: e59fd66fa64bce3ffe21380b675eb9b94a736e0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
W ← 600    # width
H ← 600    # height
S ← ÷2 W   # size of segment
I ← 10     # iterations
E ← 0.0001 # error for 0

StartLine ← [(ℂ: (-(÷2 S) ÷2 W) ÷3 H) (ℂ: (+(÷2 S) ÷2 W) ÷3 H)]

ArcTan ← ⨬(°∿ ÷ √+1×. .)(×η±) =∞⌵ .
Quadrant ← ⍣(
  π ⍤. × ⊙(≤0) ≤0
| η◌ ⍤.<0
| (+πη) ⍤.<0◌
| 0◌◌
) ∩(⨬∘(0◌) ≤E⌵.)
Theta   ← +⊙Quadrant⌵ ArcTan◡÷: ⊙-- ⊙: ∩(°ℂ)
Split   ← ⊂⊂: +,ℂ: ⊙×× ⊙, ⊙⊙(◡(÷√2⌵-)) ⊃(∿+η)∿ +(÷2η) ◡Theta°⊟
Join    ← ⊂ ⨬∘(↙-1⧻.) =◡(⊓⊣⊢)
MkCurve ← ⍥(/Join ≡Split ⧈∘2)I

# Theta (ℂ:100 131.66666666666666) (ℂ:165 131.66666666666663)
# &p Curve

# Curveu ← [
#   # (ℂ: 35 66.66666666666667)
#   # (ℂ: 2.500000000000014 99.16666666666666)
#   # (ℂ: 35.00000000000001 131.66666666666666)
#   # (ℂ: 67.5 164.16666666666666)
#   (ℂ: 100 131.66666666666666)
#   (ℂ: 132.5 99.16666666666666)
#   (ℂ: 165 131.66666666666663)
#   # (ℂ: 197.49999999999997 99.16666666666664)
#   # (ℂ: 165 66.66666666666667)
# ]

# Quadrand ¯4 ¯4
# Theta (ℂ: 0 0) (ℂ: 4 0)
# Theta (ℂ: 0 0) (ℂ: 0 4)
# Theta (ℂ: 0 0) (ℂ: ¯4 0)
# Theta (ℂ: 0 0) (ℂ: 0 ¯4)
# Theta (ℂ: 0 0) (ℂ: 4 4)
# Theta (ℂ: 0 0) (ℂ: ¯4 4)
# Theta (ℂ: 0 0) (ℂ: ¯4 ¯4)
# Theta (ℂ: 0 0) (ℂ: 4 ¯4)

# (ℂ:35 66.66666666666667)
# (ℂ:35.00000000000001 131.66666666666666)
# (ℂ:165 66.66666666666667)

Start ← [
  (ℂ:100 131.66666666666666)
  (ℂ:165 131.66666666666663)
]
# Start ← [(ℂ: 35 66.6667) (ℂ: 2.500014 99.1666)]
# Start ← [(ℂ: 0 0) (ℂ: ¯4 0)]
# CC    ← Split Start
# Curve ← ⊂Start CC
# +(ℂ: 100 100) ×10

Curve     ← MkCurve StartLine
IsOnLine  ← ◌: <0.01 ⌵- /+ ⊙(⌵-⊃⊢⊣)◡(⌵-)
IsOnCurve ← ≥1 /+ ≡(⨬(0◌)IsOnLine ◡(≤S⌵-⊢)) ⧈∘2 Curve
ToPix     ← ⨬(0_0_0)(⊂: 0.3_0.05 +0.1 ÷W ◌°ℂ) IsOnCurve.
Img       ← ∵ToPix (⍉ ⊞(ℂ:) ⇡W⇡H)
&fwa "./3-levy-c-curve/output.png" img "png" Img