website

source code for the ttmaths.uk website
Log | Files | Refs | README

formatUtils.js (1489B)


      1 import { getHCF, simplifyFraction } from './mathsUtils'
      2 
      3 export function formatVec(arr) {
      4   return `\\bigl(\\begin{smallmatrix}${arr.join('\\\\')}\\end{smallmatrix}\\bigr)`
      5 }
      6 
      7 export function formatCoefficient(value, { absoluteString=null, showPlus=false, showOne=true, showZero=true, suffix='' } = { }) {
      8   if (!showZero && value == 0) return '';
      9   absoluteString ??= Math.abs(value);
     10   const plus = showPlus ? '+' : '';
     11   const sign = value < 0 ? '-' : plus;
     12   showOne || value == 1 && (absoluteString = '');
     13   return sign + absoluteString + (suffix ?? '');
     14 }
     15 
     16 export function formatFraction(num, denom, { simplify=false, showPlus=false, showOne=true, showZero=true, suffix='' } = { }) {
     17   simplify && ([num, denom] = simplifyFraction(num, denom));
     18   const absoluteString = denom == 1 ? null : `\\frac{${Math.abs(num)}}{${denom}}`;
     19   return formatCoefficient(num / denom, { absoluteString: absoluteString, showPlus: showPlus, showOne: showOne, showZero: showZero, suffix: suffix });
     20 }
     21 
     22 export function formatLine(line) {
     23   if (line.b == 0) return `x = ${formatFraction(-line.c, line.a, { showPlus: false, showOne: true, showZero: true, simplify: true })}`;
     24   let mxTerm = formatFraction(-line.a, line.b, { showPlus: false, showOne: false, showZero: false, simplify: true, suffix: 'x' })
     25   const cTerm = formatFraction(-line.c, line.b, { showPlus: false, showOne: true, showZero: false, simplify: true })
     26   if (!mxTerm && !cTerm) {
     27     mxTerm = '0'
     28   }
     29   return 'y = ' + mxTerm + cTerm
     30 }