> Week 2. 'Mondriaan Generator'
Crescent
01. Info

-
몬드리안의 '빨강, 파랑, 노랑의 구성'에서 따왔다.
-
Alphabet:
H,V,R,C,[,]- Square:
H(horizontal),V(Vertical) - Line:
R(row),C(column) - small square:
[], 작은 사각형의 모임
- Square:
-
Start:
V -
Stochastic L-system Rule(Probability)
- (
H→[VCV]): 50% or (H→V): 50% - (
V→[HRH]): 50% or (V→H): 50%
- (
![설명하는 사진. '[HR[VCV]]'가 위의 네모는 세로줄, 아래 네모는 가로줄로 나뉘어져 있다.](image/220929-processing-week-2/Processing-2-HRH.png)
[HRH]
[[VCV]R[VCV]]
[[VC[HRH]]R[[HRH]CV]]
[[VC[[VCV]R[VCV]]]R[[[VCV]RH]CV]]box("[[VCV]R[VCV]]"): parsing string parameterbox("[VCV]")box("VCV")rect(V)line(C)rect(V)
line(R)box("[VCV]")box("VCV")rect(V)line(C)rect(V)
- Using
java.util.ArrayDequeandjava.util.Dequeto make a stack Deque를 스택으로 써서 괄호 문자열을 파싱하는 방향으로 나아갔다.[[VCV]RV]일 때R이 등장하는지 혹은C가 등장하는지에 따라서 현재 상태를 파악했다.- 선 앞인지 뒤인지에 따라서 그리는 사각형의 크기가 달라지므로 그것도 파악했다.
// Add Stochastic L-system Rule
class Rule {
char a;
String b;
String c;
Rule(char a_, String b_, String c_) {
a = a_;
b = b_;
c = c_;
}
char getA() {
return a;
}
String getB() {
float p = random(0, 1);
if(p<0.5) return b;
return c;
}
}- 일부
L-system의 코드는Nature of Code에서 따왔다.LSystem.pde와Rule.pde는 거의 다 가져왔고, 그리는 부분은class없이 새로 짰다.
noc-examples-processing/chp08_fractals/NOC_8_09_LSystem/
getB():Stochastic L-system Rule을 구현하기 위해서random을 썼다.- 대략 확률은
50%로 구성
- 대략 확률은
// Make Rules
Rule[] ruleset = new Rule[2];
ruleset[0] = new Rule('H', "[VCV]", "V");
ruleset[1] = new Rule('V', "[HRH]", "H");
Crescent