preset for 1D CA initial state

This commit is contained in:
Gator
2022-01-11 13:16:42 +01:00
parent 266840aa0b
commit 93f9426f56
4 changed files with 93 additions and 21 deletions

View File

@ -9,7 +9,7 @@
</main>
</template>
<script>
import { evolve2d, initialState1d, initialState2d, conwayRules, createBoard } from '../modules/automata.js'
import { create1dState, create1dStateOneCell, create2dState, createBoard, conwayRules, evolve2d } from '../modules/automata.js'
import { getRandomInt, sleep } from '../modules/common.js'
import {mapGetters} from 'vuex'
export default {
@ -27,8 +27,19 @@ export default {
drawing: 'isDrawing',
canvasWidth: 'getCanvasWidth',
canvasHeight: 'getCanvasHeight',
refreshRate: 'getRefreshRate'
})
refreshRate: 'getRefreshRate',
initial1dState: 'getInitial1dState'
}),
boardWidth: function() {
return Math.floor(
this.canvas.width /
this.cellProperties.size)
},
boardHeight: function() {
return Math.floor(
this.canvas.height /
this.cellProperties.size)
}
},
mounted() {
this.canvas = this.$refs['canvas']
@ -56,24 +67,25 @@ export default {
)
})
},
compute1dInitialState() {
if(this.initial1dState === "onecell")
return create1dStateOneCell(this.boardWidth)
return create1dState(this.boardWidth, getRandomInt, [0, 2])
},
async draw1d() {
const initialState = initialState1d(
Math.floor(this.canvas.width / this.cellProperties.size),
getRandomInt,
[0, 2],
)
const initialState = this.compute1dInitialState()
const board = createBoard(
initialState,
this.rules,
Math.floor(this.canvas.height / this.cellProperties.size)
this.boardHeight
)
this.drawCanvas(board)
},
async draw2d() {
if (this.drawing === 0) return
const initialState = initialState2d(
Math.floor(this.canvas.width / this.cellProperties.size),
Math.floor(this.canvas.height / this.cellProperties.size),
const initialState = create2dState(
this.boardWidth,
this.boardHeight,
getRandomInt,
[0, 2],
);