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
|