К основному контенту

Формула любви

В фильме X+Y главный герой изучал в энциклопедии формулу любви, имея склонность к теоретическому познанию окружающего мира.
Сейчас, похоже, прагматические склонности у людей преобладают. Компьютеры, которые когда-то создавались как средство вычислений и были плодом математических и физических теорий и экспериментов, стали обыденными и используются повсеместно. Сейчас в компьютер можно запихнуть любую логику, вплоть до алгоритмов искусственного интеллекта.
Похоже, мы стали забывать, для чего создавались первые ЭВМ.

Представим, что компьютер -- это усовершенствованный калькулятор (на самом деле примерно так и есть). Кроме того, представим, что у нас на компьютере нет ничего, кроме браузера и текстового редактора. Да, браузер на современном компьютере или смартфоне -- это такое же популярное приложение, как трансляторы на первых ЭВМ.

Откроем текстовый редактор (например, Блокнот) и введём следующий текст.

<script>
for (var i = 1; i <= 10; i++) {
  for (var j = 1; j <= 10; j++)
    document.write(i + ' &times; ' + j + ' = ' + i*j + '<br>');
  document.write('<br>');
}
</script>

Затем сохраним текст в файл с расширением .html и откроем в браузере.
Мы распечатали таблицу умножения. Оказывается, что браузер можно использовать как калькулятор.

Следующий код позволяет распечатать таблицу Пифагора.

<script>
document.write('<table cellpadding="7" border="1">');
for (var i = 1; i <= 10; i++) {
  document.write('<tr>');
  for (var j = 1; j <= 10; j++)
    document.write('<td>' + i*j + '</td>');
  document.write('</tr>');
}
document.write('</table>');
</script>


Формула любви несколько сложнее, чем таблица умножения.


Для начала распечатаем сердечко в виде текста. Нам поможет код, составленный в 2013 г. на мастер-классе по информатике для школьников при ДВФУ.

<font face="Courier New" color="red">
<script>

for (var y = 27; y > -20; y--) {
  for (var x = -40; x < 40; x++) {
    var j = y;
    var i = x;
    j = j/17;
    i = i/40;
    if (i*i + Math.pow((5*j)/4 - Math.sqrt(Math.abs(i)), 2) <= 1)
      document.write('&hearts;');
    else
      document.write('.');
  }
  document.write('<br>');
}
</script>
</font>

Вот что покажет браузер.


А если мы хотим нарисовать сердечко? Нам понадобится подключить библиотеку Flot. Её нужно скачать, а затем сохранить следующий код в файл с расширением .html (туда же, где находится папка flot).

<script language="javascript" type="text/javascript" src="./flot/jquery.js"></script>
<script language="javascript" type="text/javascript" src="./flot/jquery.flot.js"></script>
<script>
$(function() {
  var d1 = [], d2 = [], d3 = [], d4 = [];
  for (var x = 0; x < 1; x += 0.001) {
    y = Math.pow(x, 2/3) + Math.sqrt(1 - x*x);
    d1.push([x, y]);
    d2.push([-x, y]);
    y = Math.pow(x, 2/3) - Math.sqrt(1 - x*x);
    d3.push([x, y]);
    d4.push([-x, y]);
  }
  $.plot("#placeholder", [d1, d2, d3, d4],
    {colors: ["red", "red", "red", "red"],
     xaxis: {min: -1.1, max: 1.1},
     yaxis: {min: -1.1, max: 1.7}});
});
</script>
<div id="placeholder" style="width:500px;height:500px"></div>

Получим такой график.


Комментарии