Documenting the lissajous explorer application

Author

Berthold Höllmann

Time-stamp

<2022-10-15 15:13:50 hoel>

Copyright

Copyright © 2022 by Berthold Höllmann

Application

Calculates Lissajous curves. The user provides frequencies in \(x\) and \(y\) direction, as well phase shift for both direcions.

Frequencies can range from \(1\) to \(255\), phase shift values from \(-\pi\) to \(\pi\).

Animation of the iterative calculation of the intermediate calculation points.

Animation of the iterative calculation of the intermediate calculation points. Parameters: \(x_\text{frequency} := 1\), \(y_\text{frequency} := 1\), \(x_\text{phase} := 0.0\), \(y_\text{phase} := 0.0\).

Animation of the iterative calculation of the intermediate calculation points.

Animation of the iterative calculation of the intermediate calculation points. Parameters: \(x\text{frequency} := 2\), \(y_\text{frequency} := 3\), \(x_\text{phase} := 1.8\), \(y_\text{phase} := 0.8\).

API

class LissajousExplorer : public QWidget
#include <mainwindow.h>

Inheritence diagram for LissajousExplorer:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="LissajousExplorer" tooltip="LissajousExplorer" fillcolor="#BFBFBF"]
    "2" [label="QWidget" tooltip="QWidget"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for LissajousExplorer:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="LissajousExplorer" tooltip="LissajousExplorer" fillcolor="#BFBFBF"]
    "2" [label="QWidget" tooltip="QWidget"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Wrapper for main widget generated from Qt Designer.

Public Functions

explicit LissajousExplorer(double xPhase, double yPhase, int xFreq, int yFreq, bool gen_pics, QWidget *parent = nullptr)
void changeEvent(QEvent*) override

Handle windws resize and other changes.

Public Slots

void on_quitButton_clicked()

Handle the quit button: quit the program.

void on_pdfButton_clicked()
void on_pngButton_clicked()
void on_svgButton_clicked()
void setXPhaseValue(double)
void setYPhaseValue(double)
void setXFreqValue(int)
void setYFreqValue(int)

Protected Functions

void keyPressEvent(QKeyEvent *event) override

Private Functions

void drawLissajous()
void plot(QQueue<QPair<double, QPointF>>&, QPen *pen = nullptr, bool addScatter = false)
void exportPdf()
void exportSvg()
void exportPng(int iteration = -1)

Private Members

int xFreq
int yFreq
double xPhase
double yPhase
bool gen_pics
QLineSeries *lissajousCurve
Ui::LissajousExplorerUi *ui

QT Designer created main widget.

namespace Ui
file config.h

This graph shows which files directly or indirectly include config.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="qlissajousexplorer/src/lissajous_explorer/config.h" tooltip="qlissajousexplorer/src/lissajous_explorer/config.h" fillcolor="#BFBFBF"]
    "3" [label="qlissajousexplorer/src/lissajous_explorer/main.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/main.cpp"]
    "4" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp"]
    "2" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.h" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.h"]
    "1" -> "2" [dir=back tooltip="include"]
    "2" -> "3" [dir=back tooltip="include"]
    "2" -> "4" [dir=back tooltip="include"]
}

Confioguration for qHeiseReg.

Time-stamp: <2022-10-09 17:43:13 hoel>

Author

Berthold Höllmann berhoel@gmail.com

Copyright

Copyright © 2022 by Berthold Höllmann

Defines

PROJECT_NAME

Project name from CMakeLists.txt.

PROJECT_VER

Project version from CMakeLists.txt.

PROJECT_VER_MAJOR

Project major version number from CMakeLists.txt.

PROJECT_VER_MINOR

Project minor version number from CMakeLists.txt.

PTOJECT_VER_PATCH

Project patch version number from CMakeLists.txt.

file main.cpp
#include “mainwindow.h
#include <QApplication>
#include <QCommandLineOption>
#include <QCommandLineParser>
#include <QTranslator>

Include dependency graph for main.cpp:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "3" [label="config.h" tooltip="config.h"]
    "1" [label="qlissajousexplorer/src/lissajous_explorer/main.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/main.cpp" fillcolor="#BFBFBF"]
    "2" [label="mainwindow.h" tooltip="mainwindow.h"]
    "8" [label="QApplication" tooltip="QApplication"]
    "9" [label="QCommandLineOption" tooltip="QCommandLineOption"]
    "10" [label="QCommandLineParser" tooltip="QCommandLineParser"]
    "5" [label="QPair" tooltip="QPair"]
    "6" [label="QQueue" tooltip="QQueue"]
    "11" [label="QTranslator" tooltip="QTranslator"]
    "7" [label="QWidget" tooltip="QWidget"]
    "4" [label="cmath" tooltip="cmath"]
    "1" -> "2" [dir=forward tooltip="include"]
    "1" -> "8" [dir=forward tooltip="include"]
    "1" -> "9" [dir=forward tooltip="include"]
    "1" -> "10" [dir=forward tooltip="include"]
    "1" -> "11" [dir=forward tooltip="include"]
    "2" -> "3" [dir=forward tooltip="include"]
    "2" -> "4" [dir=forward tooltip="include"]
    "2" -> "5" [dir=forward tooltip="include"]
    "2" -> "6" [dir=forward tooltip="include"]
    "2" -> "7" [dir=forward tooltip="include"]
}

Explore Lissajous figures.

Time-stamp: <2022-10-21 20:52:14 hoel>

Detailed description

Author

Berthold Höllmann berhoel@gmail.com

Copyright

Copyright © 2019 by Berthold Höllmann

Functions

auto main(int argc, char *argv[]) -> int
file mainwindow.cpp
#include “mainwindow.h
#include “ui_lissajous_explorer.h”
#include <algorithm>
#include <iostream>
#include <numbers>
#include <QTranslator>
#include <QVector>
#include <QPainter>
#include <QPdfWriter>
#include <QApplication>
#include <QLineSeries>
#include <QPixmap>
#include <QScatterSeries>
#include <QSvgGenerator>

Include dependency graph for mainwindow.cpp:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "3" [label="config.h" tooltip="config.h"]
    "1" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp" fillcolor="#BFBFBF"]
    "2" [label="mainwindow.h" tooltip="mainwindow.h"]
    "16" [label="QApplication" tooltip="QApplication"]
    "17" [label="QLineSeries" tooltip="QLineSeries"]
    "14" [label="QPainter" tooltip="QPainter"]
    "5" [label="QPair" tooltip="QPair"]
    "15" [label="QPdfWriter" tooltip="QPdfWriter"]
    "18" [label="QPixmap" tooltip="QPixmap"]
    "6" [label="QQueue" tooltip="QQueue"]
    "19" [label="QScatterSeries" tooltip="QScatterSeries"]
    "20" [label="QSvgGenerator" tooltip="QSvgGenerator"]
    "12" [label="QTranslator" tooltip="QTranslator"]
    "13" [label="QVector" tooltip="QVector"]
    "7" [label="QWidget" tooltip="QWidget"]
    "9" [label="algorithm" tooltip="algorithm"]
    "4" [label="cmath" tooltip="cmath"]
    "10" [label="iostream" tooltip="iostream"]
    "11" [label="numbers" tooltip="numbers"]
    "8" [label="ui_lissajous_explorer.h" tooltip="ui_lissajous_explorer.h"]
    "1" -> "2" [dir=forward tooltip="include"]
    "1" -> "8" [dir=forward tooltip="include"]
    "1" -> "9" [dir=forward tooltip="include"]
    "1" -> "10" [dir=forward tooltip="include"]
    "1" -> "11" [dir=forward tooltip="include"]
    "1" -> "12" [dir=forward tooltip="include"]
    "1" -> "13" [dir=forward tooltip="include"]
    "1" -> "14" [dir=forward tooltip="include"]
    "1" -> "15" [dir=forward tooltip="include"]
    "1" -> "16" [dir=forward tooltip="include"]
    "1" -> "17" [dir=forward tooltip="include"]
    "1" -> "18" [dir=forward tooltip="include"]
    "1" -> "19" [dir=forward tooltip="include"]
    "1" -> "20" [dir=forward tooltip="include"]
    "2" -> "3" [dir=forward tooltip="include"]
    "2" -> "4" [dir=forward tooltip="include"]
    "2" -> "5" [dir=forward tooltip="include"]
    "2" -> "6" [dir=forward tooltip="include"]
    "2" -> "7" [dir=forward tooltip="include"]
}

Main window widget.

Time-stamp: <2022-10-21 20:52:13 hoel>

Detailed description

Author

Berthold Höllmann berhoel@gmail.com

Copyright

Copyright © 2022 by Berthold Höllmann

file mainwindow.h
#include “config.h
#include <cmath>
#include <QPair>
#include <QQueue>
#include <QWidget>

Include dependency graph for mainwindow.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="config.h" tooltip="config.h"]
    "1" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.h" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.h" fillcolor="#BFBFBF"]
    "4" [label="QPair" tooltip="QPair"]
    "5" [label="QQueue" tooltip="QQueue"]
    "6" [label="QWidget" tooltip="QWidget"]
    "3" [label="cmath" tooltip="cmath"]
    "1" -> "2" [dir=forward tooltip="include"]
    "1" -> "3" [dir=forward tooltip="include"]
    "1" -> "4" [dir=forward tooltip="include"]
    "1" -> "5" [dir=forward tooltip="include"]
    "1" -> "6" [dir=forward tooltip="include"]
}

This graph shows which files directly or indirectly include mainwindow.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="qlissajousexplorer/src/lissajous_explorer/main.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/main.cpp"]
    "3" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.cpp"]
    "1" [label="qlissajousexplorer/src/lissajous_explorer/mainwindow.h" tooltip="qlissajousexplorer/src/lissajous_explorer/mainwindow.h" fillcolor="#BFBFBF"]
    "1" -> "2" [dir=back tooltip="include"]
    "1" -> "3" [dir=back tooltip="include"]
}

Definition for lissajous explorer.

Time-stamp: <2022-10-21 21:08:37 hoel>

More to come?

Author

Berthold Höllmann berhoel@gmail.com

Copyright

Copyright © 2022 by Berthold Höllmann

dir qlissajousexplorer/src/lissajous_explorer
dir qlissajousexplorer
dir qlissajousexplorer/src