Автор оригинала: Johnny B. (Ionică Bizău).
Все знают (или должны знать), что есть номер PI. В основном, его значение определяется разделением окружности окружности до его диаметра. Это номер PI! Хорошая вещь в этом – это его иррациональный характер. Это означает, что у него есть много бесконечность десятичных средств.
Обычно PI аппроксимируется как 3.14. И сегодня 14 марта! Итак, Happy Pi Day!
У меня есть Raspberry Pi Компьютер вокруг, и я думал использовать два моих библиотеках для создания чего-то хорошего: отображение логотипа Raspberry Pi и номер PI в командной строке: это забавно, как он в основном стоит Raspberry Pi (изображение малины и номер PI). Я хотел еще одну вещь: используя цифровые знаки PI в выходных символах. Вот результат (см. Ниже, как я это сделал):
Как я это сделал
Чтобы отобразить изображения в терминале, я использовал image to-ascii
Отказ Чтобы пройти разные URL-адреса изображений, я решил использовать аргументы командной строки.
Чтобы получить первый N Дебилицы числа PI, я использовал другой модуль, который я создал на этот раз в прошлом году: PI
Отказ Этот модуль возвращает хорошее приближение PI:
const pi = require("pi"); console.log(pi(10)); // => '3.141592653'
Итак, я создал файл с именем index.js
И я написал в нем следующие вещи (следуйте встроенным комментариям):
// Require the needed dependencies // `pi` will be used to return the first `n` decimals of pi const pi = require("pi") // image-to-ascii for displaying the images in the terminal , img = require("image-to-ascii") // We use this module to stringify the pixel matrix after // modifying the internal data (basically, the characters) , stringify = require("asciify-pixel-matrix") ; // Take the image url/path from the command line arguments img(process.argv[2], { // We turn off the stringifying, since we really want to do // some changes before displaying the images stringify: false , concat: false }, (err, converted) => { // Handle the errors if (err) { return console.error(err); } // `converted` is an array of arrays (in fact, a matrix of pixels) // We use the `converted` matrix to know how many decimals we // need: width x height // `piNumber` will be a string in this format: "3.14...." (with a // lot of decimals) var piNumber = pi(converted.length * converted[0].length); // We will use this `i` variable to get the current index var i = -1; // For each row in the matrix converted.forEach(cRow => { // ...and for each pixel in the row cRow.forEach(px => { // ...update the character using a pi decimal, in order px.char = piNumber[i = ++i % piNumber.length]; }); }); // Finally, stringify everything and display the result! Yay! console.log(stringify.stringifyMatrix(converted)); });
Требования к запуску этого сценария:
- Node.js (я установил его на моей малине Pi, используя
NVM
) График Magick
:sudo apt-get install graphicmagick
(Это необязательно, вид: если он не доступенImage-to-ascii
будет составлять некоторые материалы C/C ++, но это, вероятно, займет много времени)- … и, конечно,
NPM
Зависимости:NPM I image-to-ascii pi asciify-pixel-matrix
С Днем Пи!
PS: Я разместил эту статью, используя My Raspberry Pi, подключенную к Интернету и используя 7 “дисплея. Просто идеально