{"id":25998,"student_id":7,"content":"// noprotect\nstopRendering();\npen.fillColor = 'white';\npen.drawRect(0, 0, 640, 480);\n\n// L System\nlet axiom = 'F';\nlet sentence = axiom;\nlet rules =[\n {\n char: 'F',\n to: 'FF+[+F-F-F]-[-F+F=F]'\n }\n]\nlet state = { x: 320, y: 480, angle: 0 };\nlet oldStates = [];\nlet rotateDeg = 25;\nlet lineLen = 5;\nlet lines = [];\n\nfunction generate() {\n let nextSentence = '';\n for (let char of sentence) {\n for(let rule of rules) {\n if (char === rule.char) {\n nextSentence += rule.to;\n } else {\n nextSentence += char;\n }\n }\n }\n\n sentence = nextSentence;\n}\n\nfunction turtle() {\n for (let char of sentence) {\n if (char === 'F') {\n pen.drawLine(...getLineArgs());\n } else if (char === '+') {\n state.angle += rotateDeg;\n } else if (char === '-') {\n state.angle -= rotateDeg;\n } else if (char === '[') {\n let copiedObj = Object.assign({}, state);\n oldStates.push(copiedObj);\n } else if (char === ']') {\n state = oldStates.pop();\n }\n }\n}\n\nfunction getLineArgs() {\n let endX = state.x + (lineLen * Math.sin(Math.PI / 180 * state.angle));\n let endY = state.y - (lineLen * Math.cos(Math.PI / 180 * state.angle));\n let result = [state.x, state.y, endX, endY];\n \n // translate origin\n state.x = endX;\n state.y = endY;\n \n return result;\n}\n\nwhen('click', function() {\n state = { x: 320, y: 480, angle: 0 };\n oldStates = [];\n rotateDeg = 25;\n\n generate();\n turtle();\n});\n\n","created_at":"2018-04-01T13:59:59.685+08:00","updated_at":"2019-11-12T09:47:34.221+08:00","name":"L-System","language":"javascript","screenshot":{"url":"https://cdn7.koding.school/uploads/project/screenshot/25998/fd1ac05835b665cf0d7e3c5532c7c2d7.jpg"},"parent_id":2,"plugin":"","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":433,"hashid":"kdmsj2rz","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":481315,"file_name":"0.png","project_id":25998,"asset_id":6,"created_at":"2018-04-01T13:59:59.693+08:00","updated_at":"2018-04-01T13:59:59.693+08:00"},{"id":481316,"file_name":"1.svg","project_id":25998,"asset_id":7,"created_at":"2018-04-01T13:59:59.695+08:00","updated_at":"2018-04-01T13:59:59.695+08:00"},{"id":481317,"file_name":"2.png","project_id":25998,"asset_id":8,"created_at":"2018-04-01T13:59:59.696+08:00","updated_at":"2018-04-01T13:59:59.696+08:00"},{"id":481318,"file_name":"0.wav","project_id":25998,"asset_id":9,"created_at":"2018-04-01T13:59:59.698+08:00","updated_at":"2018-04-01T13:59:59.698+08:00"},{"id":481319,"file_name":"1.wav","project_id":25998,"asset_id":10,"created_at":"2018-04-01T13:59:59.699+08:00","updated_at":"2018-04-01T13:59:59.699+08:00"}]
橘蘋學習平台
橘蘋學習平台
我的作品
檢視專案頁
匯出
複製
匯入
刪除
下載 Android APP (APK)
截圖
1:1:1
1:1
full
幫助
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦