diff --git a/hf_sines.ipynb b/hf_sines.ipynb new file mode 100644 index 0000000..38d31b6 --- /dev/null +++ b/hf_sines.ipynb @@ -0,0 +1,104 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from lib import plot\n", + "from lib.cs_noise import noise2d\n", + "from copy import deepcopy\n", + "import IPython" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": "\n\n\n\n\n\n\n", + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "paper = deepcopy(plot.A6_LANDSCAPE)\n", + "\n", + "p_svg = plot.SVGPlotter('plots/hf.svg', paper)\n", + "p_hpgl = plot.HPGLPlotter(paper, 'plots/hf_{index}.hpgl')\n", + "plotter = plot.MultiPlotter()\n", + "plotter.register_plotter(p_svg)\n", + "plotter.register_plotter(p_hpgl)\n", + "\n", + "plotter.draw_frame()\n", + "\n", + "def add_lines(plotter, lines):\n", + " FREQUENCY = 2\n", + " X_OVERSAMPLING = 8\n", + " REL_AMPLITUDE = 1.4\n", + " REL_Y_MARGIN = 0.6\n", + "\n", + " line_height = paper.content_height / (lines - 1 + 2 * REL_Y_MARGIN)\n", + " x_steps = round(paper.content_width * FREQUENCY * X_OVERSAMPLING) + 1\n", + " texture = noise2d(x_steps, x_steps)\n", + " texture = texture[::(x_steps // lines), :]\n", + " texture /= np.max(np.abs(texture))\n", + "\n", + " for i in range(lines):\n", + " y = paper.top() + (i + REL_Y_MARGIN) * line_height\n", + " plotter.move_to((paper.left(), y))\n", + "\n", + " # for x in np.linspace(paper.left(), paper.right(), x_steps):\n", + " for j in range(x_steps):\n", + " x = paper.left() + j / (x_steps - 1) * paper.content_width\n", + " amplitude = line_height * REL_AMPLITUDE * texture[i, j]\n", + " plotter.line_to((x, y + amplitude / 2 * np.sin(x * FREQUENCY * 2 * np.pi)))\n", + "\n", + "paper.set_margins(10)\n", + "plotter.add_layer([0, 0.3, 1, 0.5])\n", + "add_lines(plotter, 7)\n", + "plotter.add_layer([0.6, 0.1, 0, 0.5])\n", + "add_lines(plotter, 4)\n", + "\n", + "plotter.finalise()\n", + "IPython.display.SVG(filename=p_svg.file_name)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.8 ('venv': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "d5a30a48a9b1be837de7de70323f2cebb904030d8b19bf7af129191d6d192ba3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}