feat: Add angle mode toggle and apply to trig functions
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
@@ -64,10 +64,11 @@ var scientificOperators = {
|
|||||||
'sin': {grid: [0, 0], val: 'sin'},
|
'sin': {grid: [0, 0], val: 'sin'},
|
||||||
'cos': {grid: [1, 0], val: 'cos'},
|
'cos': {grid: [1, 0], val: 'cos'},
|
||||||
'tan': {grid: [0, 1], val: 'tan'},
|
'tan': {grid: [0, 1], val: 'tan'},
|
||||||
'log': {grid: [1, 1], val: 'log'},
|
'angleMode': {grid: [1, 1], val: 'rad'},
|
||||||
'tenpow': {grid: [0, 2], val: '10^x'},
|
'log': {grid: [0, 2], val: 'log'},
|
||||||
'ln': {grid: [1, 2], val: 'ln'},
|
'tenpow': {grid: [1, 2], val: '10^x'},
|
||||||
'epow': {grid: [0, 3], val: 'e^x'},
|
'ln': {grid: [0, 3], val: 'ln'},
|
||||||
|
'epow': {grid: [1, 3], val: 'e^x'},
|
||||||
};
|
};
|
||||||
|
|
||||||
var specialsGrid = [2, 2];
|
var specialsGrid = [2, 2];
|
||||||
@@ -85,6 +86,7 @@ var operator = null;
|
|||||||
var results = null;
|
var results = null;
|
||||||
var isDecimal = false;
|
var isDecimal = false;
|
||||||
var hasPressedEquals = false;
|
var hasPressedEquals = false;
|
||||||
|
var angleMode = 'rad';
|
||||||
|
|
||||||
function prepareScreen(screen, grid, defaultColor) {
|
function prepareScreen(screen, grid, defaultColor) {
|
||||||
for (var k in screen) {
|
for (var k in screen) {
|
||||||
@@ -360,30 +362,54 @@ function buttonPress(val) {
|
|||||||
break;
|
break;
|
||||||
case 'sin':
|
case 'sin':
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
results = Math.sin(results);
|
let angle = results;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
results = Math.sin(angle);
|
||||||
displayOutput(results);
|
displayOutput(results);
|
||||||
} else if (currNumber != null) {
|
} else if (currNumber != null) {
|
||||||
currNumber = Math.sin(currNumber);
|
let angle = currNumber;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
currNumber = Math.sin(angle);
|
||||||
displayOutput(currNumber);
|
displayOutput(currNumber);
|
||||||
}
|
}
|
||||||
hasPressedNumber = false;
|
hasPressedNumber = false;
|
||||||
break;
|
break;
|
||||||
case 'cos':
|
case 'cos':
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
results = Math.cos(results);
|
let angle = results;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
results = Math.cos(angle);
|
||||||
displayOutput(results);
|
displayOutput(results);
|
||||||
} else if (currNumber != null) {
|
} else if (currNumber != null) {
|
||||||
currNumber = Math.cos(currNumber);
|
let angle = currNumber;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
currNumber = Math.cos(angle);
|
||||||
displayOutput(currNumber);
|
displayOutput(currNumber);
|
||||||
}
|
}
|
||||||
hasPressedNumber = false;
|
hasPressedNumber = false;
|
||||||
break;
|
break;
|
||||||
case 'tan':
|
case 'tan':
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
results = Math.tan(results);
|
let angle = results;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
results = Math.tan(angle);
|
||||||
displayOutput(results);
|
displayOutput(results);
|
||||||
} else if (currNumber != null) {
|
} else if (currNumber != null) {
|
||||||
currNumber = Math.tan(currNumber);
|
let angle = currNumber;
|
||||||
|
if (angleMode === 'deg') {
|
||||||
|
angle = angle * Math.PI / 180;
|
||||||
|
}
|
||||||
|
currNumber = Math.tan(angle);
|
||||||
displayOutput(currNumber);
|
displayOutput(currNumber);
|
||||||
}
|
}
|
||||||
hasPressedNumber = false;
|
hasPressedNumber = false;
|
||||||
@@ -428,6 +454,15 @@ function buttonPress(val) {
|
|||||||
}
|
}
|
||||||
hasPressedNumber = false;
|
hasPressedNumber = false;
|
||||||
break;
|
break;
|
||||||
|
case 'angleMode':
|
||||||
|
if (angleMode === 'rad') {
|
||||||
|
angleMode = 'deg';
|
||||||
|
} else {
|
||||||
|
angleMode = 'rad';
|
||||||
|
}
|
||||||
|
scientificOperators.angleMode.val = angleMode;
|
||||||
|
drawKey('angleMode', scientificOperators.angleMode);
|
||||||
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
results = divide(1, results);
|
results = divide(1, results);
|
||||||
|
|||||||
Reference in New Issue
Block a user