plotter_experiments/hf_sines.ipynb

105 lines
432 KiB
Plaintext
Raw Normal View History

2022-12-18 12:49:50 +01:00
{
"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": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"419.527559pt\" height=\"297.637795pt\" viewBox=\"0 0 419.527559 297.637795\" version=\"1.1\">\n<defs>\n<image id=\"image59\" width=\"1751\" height=\"1242\" xlink:href=\"data:image/png;base64,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
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"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
}