-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
07a4e58
commit 70af233
Showing
3 changed files
with
201 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |