Skip to content

Commit

Permalink
將計算機從主repo分開來
Browse files Browse the repository at this point in the history
  • Loading branch information
timliucode committed Jan 26, 2024
1 parent 07a4e58 commit 70af233
Show file tree
Hide file tree
Showing 3 changed files with 201 additions and 0 deletions.
Binary file added assets/images/favicon.ico
Binary file not shown.
113 changes: 113 additions & 0 deletions calculateDisplacement.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
function calculate(mode = 0) {
var cylinders = parseFloat(document.getElementById('cylinders').value) || 0;
var diameter = parseFloat(document.getElementById('diameter').value) || 0;
var stroke = parseFloat(document.getElementById('stroke').value) || 0;

var newBoreUnit = document.getElementById('selectNewBore').value;
var newDiameter = parseFloat(document.getElementById('NewDiameter').value) || 0;

var newStrokeUnit = document.getElementById('selectNewStroke').value;
var newStroke = parseFloat(document.getElementById('NewStroke').value) || 0;

var newResult = parseFloat(document.getElementById('newResult').value) || 0; // 新的排量

var math = 0.0007854; // 用於體積計算的數學常數

var boreSquare = diameter * diameter;
var cap = boreSquare * stroke * math * cylinders;

// 處理新的缸徑和行程
if (newBoreUnit == 0) {
if (newDiameter == 0) {
diameter = diameter;
} else if (newDiameter > 0) {
diameter = newDiameter;
}
} else if (newBoreUnit == 1) {
diameter += newDiameter * 0.01 || 0;
}

if (newStrokeUnit == 0) {
stroke += newStroke * 0.01 || 0;
} else if (newStrokeUnit == 1) {
if (newStroke == 0) {
stroke = stroke;
} else if (newStroke > 0) {
stroke = newStroke;
}
}

var newBoreSquare = diameter * diameter;
var newCap = newBoreSquare * stroke * math * cylinders;

var difference = (newCap / cap) || 0;
var differencePercent = ((newCap - cap) / cap * 100) || 0;


// 顯示結果
document.getElementById('result').innerText = cap.toFixed(2) + ' cc';
document.getElementById('newResult').value = newCap.toFixed(2);
document.getElementById('difference').innerText = difference.toFixed(2) + ' 倍';
document.getElementById('differencePercent').innerText = differencePercent.toFixed(2) + ' %';
document.getElementById('differenceResult').innerText = (newCap - cap).toFixed(2) + ' cc';
document.getElementById('newboremm').innerText = diameter.toFixed(2) + ' mm';
document.getElementById('newstrokemm').innerText = stroke.toFixed(2) + ' mm';

if (mode == 1) {
if (newStrokeUnit == 0) { // 新的行程單位為條
stroke += newStroke * 0.01;
} else if (newStrokeUnit == 1) {
stroke = newStroke;
}

if (newBoreUnit == 0) { // 新的缸徑單位為mm
newDiameter = Math.sqrt((4 * newResult / cylinders) / (Math.PI * (stroke / 10))) * 10;
document.getElementById('NewDiameter').value = newDiameter.toFixed(2);
} else if (newBoreUnit == 1) { // 新的缸徑單位為條
newDiameter = (Math.sqrt((4 * newResult / cylinders) / (Math.PI * (stroke / 10))) * 10) - diameter;
document.getElementById('NewDiameter').value = newDiameter.toFixed(2);
}
} else if (mode == 2) {
if (newBoreUnit == 0) { // 新的缸徑單位為mm
diameter += newDiameter * 0.01;
} else if (newBoreUnit == 1) {
diameter = newDiameter;
}

if (newStrokeUnit == 0) { // 新的行程單位為條
newStroke = (4 * newResult / cylinders) / (Math.PI * Math.pow(newDiameter / 10, 2)) * 10 - stroke;
document.getElementById('NewStroke').value = newStroke.toFixed(2);
} else if (newStrokeUnit == 1) { // 新的行程單位為mm
newStroke = (4 * newResult / cylinders) / (Math.PI * Math.pow(newDiameter / 10, 2)) * 10;
document.getElementById('NewStroke').value = newStroke.toFixed(2);
}
}
}

function newBoreUnit() {
var unit = document.getElementById('selectNewBore').value;
document.getElementById('newBoreUnit').innerText = unit == 0 ? 'mm' : '條';
calculate();
}

function newStrokeUnit() {
var unit = document.getElementById('selectNewStroke').value;
document.getElementById('newStrokeUnit').innerText = unit == 0 ? '條' : 'mm';
calculate();
}

function setCarSpecs(cylinders, diameter, stroke) {
document.getElementById('cylinders').value = cylinders;
document.getElementById('diameter').value = diameter;
document.getElementById('stroke').value = stroke;
calculate();
}

function clearInputs() {
document.getElementById('cylinders').value = '';
document.getElementById('diameter').value = '';
document.getElementById('stroke').value = '';
document.getElementById('NewDiameter').value = '';
document.getElementById('NewStroke').value = '';
calculate();
}
88 changes: 88 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="zh-TW">

<head>
<meta charset="UTF-8">
<title>排氣量計算機</title>
<link rel="icon" href="assets/images/favicon.ico">
<script src="calculateDisplacement.js"></script>
</head>

<body>
<h1>排氣量計算器</h1>
<h4>Developed by <a href="https://github.com/timliucode">timliucode</a></h4>
<label for="cylinders">缸數:</label>
<input type="number" id="cylinders" min="1" oninput="calculate()"><br>

<label for="diameter">缸徑:</label>
<input type="number" id="diameter" min="1" step="0.1" oninput="calculate()"><span>mm</span><br>

<label for="stroke">行程:</label>
<input type="number" id="stroke" min="1" step="0.1" oninput="calculate()"><span>mm</span><br>


<h2>改裝目標</h2>

<select id="selectNewBore" oninput="newBoreUnit()">
<option value="0" selected>缸徑</option>
<option value="1">搪缸</option>
</select>

<input type="number" id="NewDiameter" min="1" step="0.1" oninput="calculate()">

<label id="newBoreUnit">mm</label>
<br>

<select id="selectNewStroke" oninput="newStrokeUnit()">
<option value="0" selected>拉條</option>
<option value="1">行程</option>
</select>

<input type="number" id="NewStroke" min="1" step="0.1" oninput="calculate()">

<label id="newStrokeUnit"></label>
<br><br>

<label for="result">排氣量:  </label><span id="result"></span><br>
<label for="newboremm">改後缸徑: </label><span id="newboremm"></span><br>
<label for="newstrokemm">改後行程: </label><span id="newstrokemm"></span><br>
<label for="newResult">改後排量: </label>
<input type="number" id="newResult" min="1" step="0.1">cc<br>

<label for="difference">相差倍率: </label>
<span id="difference"></span><br>
<label for="differencePercent">相差百分比:</label>
<span id="differencePercent"></span><br>
<label for="differenceResult">相差排氣量:</label>
<span id="differenceResult"></span><br><br>

<button onclick="clearInputs()">清除</button>
<button onclick="calculate(0)">計算排氣量</button>
<button onclick="calculate(1)">計算缸徑</button>
<button onclick="calculate(2)">計算行程</button><br><br>


<h2>快速選擇車款</h2>

<h3>YAMAHA</h3>
<button onclick="setCarSpecs(1, 52.4, 57.9)">5ML車系(勁戰1~5、GTR、RAY、BWSx、r)</button><br><br>
<button onclick="setCarSpecs(1, 52, 58.7)">B8R125車系(六代戰、BWS2.0)</button><br><br>
<button onclick="setCarSpecs(1, 58, 58.7)">Smax/Force/Force2.0/AUGUR/NAMX/R15v3、V4</button>

<h3>SYM</h3>
<button onclick="setCarSpecs(1, 54, 54.4)">JETS/SR</button><br><br>
<button onclick="setCarSpecs(1, 53, 56.5)">JETSL</button><br><br>
<button onclick="setCarSpecs(1, 59, 57.8)">DRG/MMBCU/JETSL+</button>

<h3>KYMCO</h3>
<button onclick="setCarSpecs(1, 54, 54.5)">RacingS 125</button><br><br>
<button onclick="setCarSpecs(1, 59, 54.5)">RacingS 150/RCSmoto</button><br><br>
<button onclick="setCarSpecs(1, 62, 58)">KRV車系</button>

<h3>PGO</h3>
<button onclick="setCarSpecs(1, 52.4, 57.8)">TIGRA125</button><br><br>
<button onclick="setCarSpecs(1, 57.4, 58)">TIGRA150</button><br><br>
<button onclick="setCarSpecs(1, 61, 58)">TIG170</button><br><br>
</body>

</html>

0 comments on commit 70af233

Please sign in to comment.