Как я могу построить 1 / х функцию с точками? - PullRequest
2 голосов
/ 30 сентября 2019

Я хочу, чтобы функция 1 / x была образована точками, создавая график с помощью Обработки в цикле for.

size(400,400);

for(int x=1; x<100; x++){
  float y=1;
  y=1/x;
  strokeWeight(4);
  point(x,y);
}

Код должен формировать кривую, но генерирует только небольшуюлиния.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Обработка имеет графические функции для базового рисования. Вы используете только несколько пикселей в верхнем левом углу экрана.

Попробуйте использовать графическую библиотеку, например gwoptics , чтобы построить график с условно ориентированными осями (источник слева внизу).

Также можно масштабировать оси X и Y и перевернуть Y.

function setup() {
    createCanvas(400, 400);
    background(100);

for(x=1; x<100; x++) {
  y=1/x;
  strokeWeight(4);
  point(x*4,400-400*y);
}
}

Проверено на https://www.openprocessing.org/sketch/create Screenshot of output

0 голосов
/ 01 октября 2019

Давайте пройдемся по вашему коду. Первый пиксель в (1, 1), потому что 1/1 равен 1. Второй пиксель в (1, 0,5) и т. Д.

Это, вероятно, не то, что вы хотите. Если вы действительно хотите что-то увидеть, умножьте y на некоторое значение:

point(x,100*y);

Однако, если вы попробуете этот код, вы увидите только одну отдельную точку, а остальные все еще будут линией.

Это потому, что на y=1/x; вы делите на целое число. Это плохо, потому что деление на целое число также возвращает целое число. То, что вы на самом деле хотите, это деление на число с плавающей запятой:

y=1/(float)x;  //This is called casting. It converts x to a float
...