Game AI & Unity/L-system algorithm

[Plants and Python][lec7] L-system의 원리, 시아노 박테리아 cell structure

bay07 2024. 3. 22. 13:51

 

L-system은 시아노 박테리아를 연구하는 도중에 나온 개념이다. 

시아노 박테리아의 cell type이 2가지가 있기 때문에, L-system 에서도 2가지를 factor로 사용한다. 

 

axiom = 'ABBA'
rules = {'A':'AB', 'B':'A'}

''.join(rules.get(c,c) for c in axiom)

 

 

 

 

A 대신 AB를 넣고, B대신 A를 넣는 것이다. 

즉, ABBAABAAAB가 된다. 

 

axiom = 'ABBA'
rules = {'A':'AB', 'B':'A'}

def single_transform(axiom, rules):
    return ''.join(rules.get(c,c) for c in axiom)

var = single_transform(axiom, rules)
print(var)


def multiple_transform(sequence, rules, iterations):
    lengths = []
    for i in range(iterations):
        sequence = single_transform(sequence, rules)
        lengths.append(len(sequence))
        print(sequence)
    return sequence, lengths
multiple_transform('A', rules, 10)


def yield_transform(sequence, rules, iterations):
    for i in range(iterations):
        sequence = single_transform(sequence, rules)
        yield len(sequence)
var = yield_transform('A', rules, 10)
print(var)