1 Commits

2 changed files with 92 additions and 3 deletions

View File

@ -67,6 +67,9 @@
<button id="preset-4rect" type="button">4-Wheel Rectangle</button> <button id="preset-4rect" type="button">4-Wheel Rectangle</button>
<button id="preset-6wheel" type="button">6-Wheel Hexagon</button> <button id="preset-6wheel" type="button">6-Wheel Hexagon</button>
<button id="preset-8wheel" type="button">8-Wheel Octagon</button> <button id="preset-8wheel" type="button">8-Wheel Octagon</button>
<button id="preset-8square" type="button">8-Wheel Square</button>
<button id="preset-12hex" type="button">12-Wheel Hexagon</button>
<button id="preset-16oct" type="button">16-Wheel Octogon</button>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>

View File

@ -159,7 +159,7 @@ const PresetConfigs = {
return modules; return modules;
}, },
eightWheel: (size) => { eightWheelOctogon: (size) => {
const radius = size / 2; const radius = size / 2;
const modules = []; const modules = [];
for (let i = 0; i < 8; i++) { for (let i = 0; i < 8; i++) {
@ -171,7 +171,64 @@ const PresetConfigs = {
}); });
} }
return modules; return modules;
} },
eightWheelSquare: (size) => {
const full = size;
const half = size / 2;
return [
{ x: full, y: full, name: "Outer FL" },
{ x: full, y: -full, name: "Outer FR" },
{ x: -full, y: full, name: "Outer BL" },
{ x: -full, y: -full, name: "Outer BR" },
{ x: half, y: half, name: "Inner FL" },
{ x: half, y: -half, name: "Inner FR" },
{ x: -half, y: half, name: "Inner BL" },
{ x: -half, y: -half, name: "Inner BR" }
];
},
twelveWheelHexagon: (size) => {
const outerRadius = size;
const innerRadius = size / 2;
const modules = [];
for (let i = 0; i < 6; i++) {
const angle = (Math.PI / 2) + (i * Math.PI / 3);
modules.push({
x: outerRadius * Math.cos(angle),
y: outerRadius * Math.sin(angle),
name: `Module ${i + 1}`
});
modules.push({
x: innerRadius * Math.cos(angle),
y: innerRadius * Math.sin(angle),
name: `Module ${i + 7}`
});
}
return modules;
},
sixteenWheelOctogon: (size) => {
const outerRadius = size;
const innerRadius = size / 2;
const modules = [];
for (let i = 0; i < 8; i++) {
const angle = (Math.PI / 2) + (i * Math.PI / 4);
modules.push({
x: outerRadius * Math.cos(angle),
y: outerRadius * Math.sin(angle),
name: `Module ${i + 1}`
});
modules.push({
x: innerRadius * Math.cos(angle),
y: innerRadius * Math.sin(angle),
name: `Module ${i + 9}`
});
}
return modules;
},
}; };
/* /*
@ -205,6 +262,9 @@ const preset4WheelBtn = document.getElementById('preset-4wheel');
const preset4RectBtn = document.getElementById('preset-4rect'); const preset4RectBtn = document.getElementById('preset-4rect');
const preset6WheelBtn = document.getElementById('preset-6wheel'); const preset6WheelBtn = document.getElementById('preset-6wheel');
const preset8WheelBtn = document.getElementById('preset-8wheel'); const preset8WheelBtn = document.getElementById('preset-8wheel');
const preset8SquareBtn = document.getElementById('preset-8square');
const preset12HexBtn = document.getElementById('preset-12hex');
const preset16OctBtn = document.getElementById('preset-16oct');
/* /*
* END DOM VARIABLES * END DOM VARIABLES
@ -284,13 +344,39 @@ preset6WheelBtn.addEventListener('click', () => {
}); });
preset8WheelBtn.addEventListener('click', () => { preset8WheelBtn.addEventListener('click', () => {
const positions = PresetConfigs.eightWheel(robotSize); const positions = PresetConfigs.eightWheelOctogon(robotSize);
robot.setModules(positions); robot.setModules(positions);
robot.setName("8-Wheel Octogon"); robot.setName("8-Wheel Octogon");
createModuleDisplays(robot); createModuleDisplays(robot);
updateModuleDisplays(robot); updateModuleDisplays(robot);
}); });
preset8SquareBtn.addEventListener('click', () => {
const positions = PresetConfigs.eightWheelSquare(robotSize);
robot.setModules(positions);
robot.setName("8-Wheel Square");
createModuleDisplays(robot);
updateModuleDisplays(robot);
});
preset12HexBtn.addEventListener('click', () => {
const positions = PresetConfigs.twelveWheelHexagon(robotSize);
robot.setModules(positions);
robot.setName("12-Wheel Hexagon");
createModuleDisplays(robot);
updateModuleDisplays(robot);
});
preset16OctBtn.addEventListener('click', () => {
const positions = PresetConfigs.sixteenWheelOctogon(robotSize);
robot.setModules(positions);
robot.setName("16-Wheel Octogon");
createModuleDisplays(robot);
updateModuleDisplays(robot);
});
generateInputsBtn.addEventListener('click', () => { generateInputsBtn.addEventListener('click', () => {
const count = parseInt(moduleCountInput.value); const count = parseInt(moduleCountInput.value);