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'},
|
||||
'cos': {grid: [1, 0], val: 'cos'},
|
||||
'tan': {grid: [0, 1], val: 'tan'},
|
||||
'log': {grid: [1, 1], val: 'log'},
|
||||
'tenpow': {grid: [0, 2], val: '10^x'},
|
||||
'ln': {grid: [1, 2], val: 'ln'},
|
||||
'epow': {grid: [0, 3], val: 'e^x'},
|
||||
'angleMode': {grid: [1, 1], val: 'rad'},
|
||||
'log': {grid: [0, 2], val: 'log'},
|
||||
'tenpow': {grid: [1, 2], val: '10^x'},
|
||||
'ln': {grid: [0, 3], val: 'ln'},
|
||||
'epow': {grid: [1, 3], val: 'e^x'},
|
||||
};
|
||||
|
||||
var specialsGrid = [2, 2];
|
||||
@@ -85,6 +86,7 @@ var operator = null;
|
||||
var results = null;
|
||||
var isDecimal = false;
|
||||
var hasPressedEquals = false;
|
||||
var angleMode = 'rad';
|
||||
|
||||
function prepareScreen(screen, grid, defaultColor) {
|
||||
for (var k in screen) {
|
||||
@@ -360,30 +362,54 @@ function buttonPress(val) {
|
||||
break;
|
||||
case 'sin':
|
||||
if (results != null) {
|
||||
results = Math.sin(results);
|
||||
let angle = results;
|
||||
if (angleMode === 'deg') {
|
||||
angle = angle * Math.PI / 180;
|
||||
}
|
||||
results = Math.sin(angle);
|
||||
displayOutput(results);
|
||||
} 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);
|
||||
}
|
||||
hasPressedNumber = false;
|
||||
break;
|
||||
case 'cos':
|
||||
if (results != null) {
|
||||
results = Math.cos(results);
|
||||
let angle = results;
|
||||
if (angleMode === 'deg') {
|
||||
angle = angle * Math.PI / 180;
|
||||
}
|
||||
results = Math.cos(angle);
|
||||
displayOutput(results);
|
||||
} 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);
|
||||
}
|
||||
hasPressedNumber = false;
|
||||
break;
|
||||
case 'tan':
|
||||
if (results != null) {
|
||||
results = Math.tan(results);
|
||||
let angle = results;
|
||||
if (angleMode === 'deg') {
|
||||
angle = angle * Math.PI / 180;
|
||||
}
|
||||
results = Math.tan(angle);
|
||||
displayOutput(results);
|
||||
} 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);
|
||||
}
|
||||
hasPressedNumber = false;
|
||||
@@ -428,6 +454,15 @@ function buttonPress(val) {
|
||||
}
|
||||
hasPressedNumber = false;
|
||||
break;
|
||||
case 'angleMode':
|
||||
if (angleMode === 'rad') {
|
||||
angleMode = 'deg';
|
||||
} else {
|
||||
angleMode = 'rad';
|
||||
}
|
||||
scientificOperators.angleMode.val = angleMode;
|
||||
drawKey('angleMode', scientificOperators.angleMode);
|
||||
break;
|
||||
case 'i':
|
||||
if (results != null) {
|
||||
results = divide(1, results);
|
||||
|
||||
Reference in New Issue
Block a user