Я пытаюсь построить математические функции, используя SVG в качестве графопостроителя, создавая путь, представляющий функцию. Некоторые функции, такие как x^2, работают нормально, но более сложные функции, такие как 1 / x, обычно имеют проблемы с созданием плавного пути. Моя цель — продолжать использовать SVG в качестве основного средства построения графиков (т. е. не ), генерируя плавные пути любой элементарной функции без асимптоты.
Для справки: большая часть логики пути основана на [ответе Энксанеты] (https://stackoverflow.com/a/62857298/10082415.
Я пытаюсь построить математические функции, используя SVG в качестве графопостроителя, создавая путь, представляющий функцию. Некоторые функции, такие как x^2, работают нормально, но более сложные функции, такие как 1 / x, обычно имеют проблемы с созданием плавного пути. Моя цель — продолжать использовать SVG в качестве основного средства построения графиков (т. е. не ), генерируя плавные пути любой элементарной функции без асимптоты. Для справки: большая часть логики пути основана на [ответе Энксанеты] (https://stackoverflow.com/a/62857298/10082415.
[code]let smooth = 0.1; let container = document.getElementById("svg"); let width = container.getAttribute("width"); let height = container.getAttribute("height"); // let xmin = 0; // let xmax = 2 * Math.PI; let xmin = 0; let xmax = 10; let ymin = -1; let ymax = 1;
function f(x) { return 1 / x; //works for any elementary function without asymptote }
let points = generatePoints(-10, 10, 100); let thePath = document.getElementById("thePath");
function generatePoints(xMin, xMax, samples = 50) { result = []; let xInc = (xMax - xMin) / samples; for (let x = xMin; x < xMax; x += xInc) { let xVal = coordX(x); let yVal = coordY(f(x)); let point = { x: xVal, y: yVal }; if (isValidPoint(point)) { result.push(point); if (x % 2 == 0) { result.push(point); } } } return result; }