Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Keith-Maxwell committed Aug 22, 2020
0 parents commit 4094610
Show file tree
Hide file tree
Showing 7 changed files with 1,129 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__pycache__/
venv/
51 changes: 51 additions & 0 deletions MyModules/MPL3Dwidget.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas, \
NavigationToolbar2QT as NavigationToolbar
import numpy as np

plot_background_color = (51/255, 54/255, 63/255)
plot_face_color = (39/255, 42/255, 49/255)


class MplCanvas(FigureCanvas):
''' Definition of the Class that allows the integration of Matplotlib in the PyQt window
This class is used for the left plot, with 3D trajectory'''

def __init__(self, parent=None, width=5, height=4, dpi=100):
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111, projection='3d')
self.axes.tick_params(colors='white')
self.fig.tight_layout()
self.fig.set_facecolor(plot_background_color)
self.axes.patch.set_facecolor(plot_face_color)

super(MplCanvas, self).__init__(self.fig)


def set_axes_equal(ax):
'''Make axes of 3D plot have equal scale so that spheres appear as spheres,
cubes as cubes, etc.. This is one possible solution to Matplotlib's
ax.set_aspect('equal') and ax.axis('equal') not working for 3D.
Input
ax: a matplotlib axis, e.g., as output from plt.gca().
'''

x_limits = ax.get_xlim3d()
y_limits = ax.get_ylim3d()
z_limits = ax.get_zlim3d()

x_range = abs(x_limits[1] - x_limits[0])
x_middle = np.mean(x_limits)
y_range = abs(y_limits[1] - y_limits[0])
y_middle = np.mean(y_limits)
z_range = abs(z_limits[1] - z_limits[0])
z_middle = np.mean(z_limits)

# The plot bounding box is a sphere in the sense of the infinity
# norm, hence I call half the max range the plot radius.
plot_radius = 0.5*max([x_range, y_range, z_range])

ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius])
ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius])
ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius])
271 changes: 271 additions & 0 deletions MyModules/MyWindow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '.\MyModules\designer_UI.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1029, 569)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.centralwidget)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.plotWidget = QtWidgets.QWidget(self.centralwidget)
self.plotWidget.setMinimumSize(QtCore.QSize(500, 500))
self.plotWidget.setBaseSize(QtCore.QSize(500, 500))
self.plotWidget.setObjectName("plotWidget")
self.verticalLayoutWidget = QtWidgets.QWidget(self.plotWidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 501, 501))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.plotLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.plotLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.plotLayout.setContentsMargins(0, 0, 0, 0)
self.plotLayout.setObjectName("plotLayout")
self.horizontalLayout_7.addWidget(self.plotWidget)
self.sliderWidget = QtWidgets.QWidget(self.centralwidget)
self.sliderWidget.setMinimumSize(QtCore.QSize(500, 500))
self.sliderWidget.setBaseSize(QtCore.QSize(500, 500))
self.sliderWidget.setObjectName("sliderWidget")
self.layoutWidget = QtWidgets.QWidget(self.sliderWidget)
self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 501, 501))
self.layoutWidget.setObjectName("layoutWidget")
self.sliderLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.sliderLayout.setContentsMargins(0, 0, 0, 0)
self.sliderLayout.setObjectName("sliderLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_SMA = QtWidgets.QLabel(self.layoutWidget)
self.label_SMA.setObjectName("label_SMA")
self.horizontalLayout.addWidget(self.label_SMA)
self.label_SMA_value = QtWidgets.QLabel(self.layoutWidget)
self.label_SMA_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_SMA_value.setObjectName("label_SMA_value")
self.horizontalLayout.addWidget(self.label_SMA_value)
self.label_SMA_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_SMA_unit.setObjectName("label_SMA_unit")
self.horizontalLayout.addWidget(self.label_SMA_unit)
self.sliderLayout.addLayout(self.horizontalLayout)
self.slider_SMA = QtWidgets.QSlider(self.layoutWidget)
self.slider_SMA.setMinimum(1)
self.slider_SMA.setMaximum(20)
self.slider_SMA.setSingleStep(10)
self.slider_SMA.setProperty("value", 1)
self.slider_SMA.setOrientation(QtCore.Qt.Horizontal)
self.slider_SMA.setObjectName("slider_SMA")
self.sliderLayout.addWidget(self.slider_SMA)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_INC = QtWidgets.QLabel(self.layoutWidget)
self.label_INC.setObjectName("label_INC")
self.horizontalLayout_2.addWidget(self.label_INC)
self.label_INC_value = QtWidgets.QLabel(self.layoutWidget)
self.label_INC_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_INC_value.setObjectName("label_INC_value")
self.horizontalLayout_2.addWidget(self.label_INC_value)
self.label_INC_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_INC_unit.setObjectName("label_INC_unit")
self.horizontalLayout_2.addWidget(self.label_INC_unit)
self.sliderLayout.addLayout(self.horizontalLayout_2)
self.slider_INC = QtWidgets.QSlider(self.layoutWidget)
self.slider_INC.setMinimum(0)
self.slider_INC.setMaximum(180)
self.slider_INC.setOrientation(QtCore.Qt.Horizontal)
self.slider_INC.setObjectName("slider_INC")
self.sliderLayout.addWidget(self.slider_INC)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_ECC = QtWidgets.QLabel(self.layoutWidget)
self.label_ECC.setObjectName("label_ECC")
self.horizontalLayout_3.addWidget(self.label_ECC)
self.label_ECC_value = QtWidgets.QLabel(self.layoutWidget)
self.label_ECC_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_ECC_value.setObjectName("label_ECC_value")
self.horizontalLayout_3.addWidget(self.label_ECC_value)
self.label_ECC_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_ECC_unit.setObjectName("label_ECC_unit")
self.horizontalLayout_3.addWidget(self.label_ECC_unit)
self.sliderLayout.addLayout(self.horizontalLayout_3)
self.slider_ECC = QtWidgets.QSlider(self.layoutWidget)
self.slider_ECC.setMaximum(999)
self.slider_ECC.setSingleStep(1)
self.slider_ECC.setOrientation(QtCore.Qt.Horizontal)
self.slider_ECC.setObjectName("slider_ECC")
self.sliderLayout.addWidget(self.slider_ECC)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_LAN = QtWidgets.QLabel(self.layoutWidget)
self.label_LAN.setObjectName("label_LAN")
self.horizontalLayout_4.addWidget(self.label_LAN)
self.label_LAN_value = QtWidgets.QLabel(self.layoutWidget)
self.label_LAN_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_LAN_value.setObjectName("label_LAN_value")
self.horizontalLayout_4.addWidget(self.label_LAN_value)
self.label_LAN_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_LAN_unit.setObjectName("label_LAN_unit")
self.horizontalLayout_4.addWidget(self.label_LAN_unit)
self.sliderLayout.addLayout(self.horizontalLayout_4)
self.slider_LAN = QtWidgets.QSlider(self.layoutWidget)
self.slider_LAN.setMaximum(360)
self.slider_LAN.setOrientation(QtCore.Qt.Horizontal)
self.slider_LAN.setObjectName("slider_LAN")
self.sliderLayout.addWidget(self.slider_LAN)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_AOP = QtWidgets.QLabel(self.layoutWidget)
self.label_AOP.setObjectName("label_AOP")
self.horizontalLayout_5.addWidget(self.label_AOP)
self.label_AOP_value = QtWidgets.QLabel(self.layoutWidget)
self.label_AOP_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_AOP_value.setObjectName("label_AOP_value")
self.horizontalLayout_5.addWidget(self.label_AOP_value)
self.label_AOP_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_AOP_unit.setObjectName("label_AOP_unit")
self.horizontalLayout_5.addWidget(self.label_AOP_unit)
self.sliderLayout.addLayout(self.horizontalLayout_5)
self.slider_AOP = QtWidgets.QSlider(self.layoutWidget)
self.slider_AOP.setMaximum(360)
self.slider_AOP.setOrientation(QtCore.Qt.Horizontal)
self.slider_AOP.setObjectName("slider_AOP")
self.sliderLayout.addWidget(self.slider_AOP)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_MA = QtWidgets.QLabel(self.layoutWidget)
self.label_MA.setObjectName("label_MA")
self.horizontalLayout_6.addWidget(self.label_MA)
self.label_MA_value = QtWidgets.QLabel(self.layoutWidget)
self.label_MA_value.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_MA_value.setObjectName("label_MA_value")
self.horizontalLayout_6.addWidget(self.label_MA_value)
self.label_MA_unit = QtWidgets.QLabel(self.layoutWidget)
self.label_MA_unit.setObjectName("label_MA_unit")
self.horizontalLayout_6.addWidget(self.label_MA_unit)
self.sliderLayout.addLayout(self.horizontalLayout_6)
self.slider_MA = QtWidgets.QSlider(self.layoutWidget)
self.slider_MA.setMaximum(360)
self.slider_MA.setOrientation(QtCore.Qt.Horizontal)
self.slider_MA.setObjectName("slider_MA")
self.sliderLayout.addWidget(self.slider_MA)
self.horizontalLayout_7.addWidget(self.sliderWidget)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1029, 26))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuPlot = QtWidgets.QMenu(self.menubar)
self.menuPlot.setObjectName("menuPlot")
self.menuPlanet = QtWidgets.QMenu(self.menuPlot)
self.menuPlanet.setObjectName("menuPlanet")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionImport_from_json = QtWidgets.QAction(MainWindow)
self.actionImport_from_json.setObjectName("actionImport_from_json")
self.actionExport_to_json = QtWidgets.QAction(MainWindow)
self.actionExport_to_json.setObjectName("actionExport_to_json")
self.actionMercury = QtWidgets.QAction(MainWindow)
self.actionMercury.setCheckable(True)
self.actionMercury.setObjectName("actionMercury")
self.actionVenus = QtWidgets.QAction(MainWindow)
self.actionVenus.setCheckable(True)
self.actionVenus.setObjectName("actionVenus")
self.actionEarth = QtWidgets.QAction(MainWindow)
self.actionEarth.setCheckable(True)
self.actionEarth.setObjectName("actionEarth")
self.actionMars = QtWidgets.QAction(MainWindow)
self.actionMars.setCheckable(True)
self.actionMars.setObjectName("actionMars")
self.actionJupiter = QtWidgets.QAction(MainWindow)
self.actionJupiter.setCheckable(True)
self.actionJupiter.setObjectName("actionJupiter")
self.actionSaturn = QtWidgets.QAction(MainWindow)
self.actionSaturn.setCheckable(True)
self.actionSaturn.setObjectName("actionSaturn")
self.actionUranus = QtWidgets.QAction(MainWindow)
self.actionUranus.setCheckable(True)
self.actionUranus.setObjectName("actionUranus")
self.actionNeptune = QtWidgets.QAction(MainWindow)
self.actionNeptune.setCheckable(True)
self.actionNeptune.setObjectName("actionNeptune")
self.actionPluto = QtWidgets.QAction(MainWindow)
self.actionPluto.setCheckable(True)
self.actionPluto.setObjectName("actionPluto")
self.menuFile.addAction(self.actionImport_from_json)
self.menuFile.addAction(self.actionExport_to_json)
self.menuPlanet.addAction(self.actionMercury)
self.menuPlanet.addAction(self.actionVenus)
self.menuPlanet.addAction(self.actionEarth)
self.menuPlanet.addAction(self.actionMars)
self.menuPlanet.addAction(self.actionJupiter)
self.menuPlanet.addAction(self.actionSaturn)
self.menuPlanet.addAction(self.actionUranus)
self.menuPlanet.addAction(self.actionNeptune)
self.menuPlanet.addAction(self.actionPluto)
self.menuPlot.addAction(self.menuPlanet.menuAction())
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuPlot.menuAction())

self.retranslateUi(MainWindow)
self.slider_SMA.valueChanged['int'].connect(self.label_SMA_value.setNum)
self.slider_ECC.valueChanged['int'].connect(self.label_ECC_value.setNum)
self.slider_AOP.valueChanged['int'].connect(self.label_AOP_value.setNum)
self.slider_INC.valueChanged['int'].connect(self.label_INC_value.setNum)
self.slider_MA.valueChanged['int'].connect(self.label_MA_value.setNum)
self.slider_LAN.valueChanged['int'].connect(self.label_LAN_value.setNum)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Orbit Viewer"))
self.label_SMA.setText(_translate("MainWindow", "Semi-Major Axis"))
self.label_SMA_value.setText(_translate("MainWindow", "1"))
self.label_SMA_unit.setText(_translate("MainWindow", "Astronomical Units"))
self.label_INC.setText(_translate("MainWindow", "Inclination"))
self.label_INC_value.setText(_translate("MainWindow", "0"))
self.label_INC_unit.setText(_translate("MainWindow", "Degrees"))
self.label_ECC.setText(_translate("MainWindow", "Eccentricity"))
self.label_ECC_value.setText(_translate("MainWindow", "0"))
self.label_ECC_unit.setText(_translate("MainWindow", "*10^(-3)"))
self.label_LAN.setText(_translate("MainWindow", "Longitude of Ascending Node"))
self.label_LAN_value.setText(_translate("MainWindow", "0"))
self.label_LAN_unit.setText(_translate("MainWindow", "Degrees"))
self.label_AOP.setText(_translate("MainWindow", "Argument of Periapsis"))
self.label_AOP_value.setText(_translate("MainWindow", "0"))
self.label_AOP_unit.setText(_translate("MainWindow", "Degrees"))
self.label_MA.setText(_translate("MainWindow", "Mean Anomaly"))
self.label_MA_value.setText(_translate("MainWindow", "0"))
self.label_MA_unit.setText(_translate("MainWindow", "Degrees"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuPlot.setTitle(_translate("MainWindow", "Plot"))
self.menuPlanet.setTitle(_translate("MainWindow", "Planet"))
self.actionImport_from_json.setText(_translate("MainWindow", "Import from json"))
self.actionExport_to_json.setText(_translate("MainWindow", "Export to json"))
self.actionMercury.setText(_translate("MainWindow", "Mercury"))
self.actionVenus.setText(_translate("MainWindow", "Venus"))
self.actionEarth.setText(_translate("MainWindow", "Earth"))
self.actionMars.setText(_translate("MainWindow", "Mars"))
self.actionJupiter.setText(_translate("MainWindow", "Jupiter"))
self.actionSaturn.setText(_translate("MainWindow", "Saturn"))
self.actionUranus.setText(_translate("MainWindow", "Uranus"))
self.actionNeptune.setText(_translate("MainWindow", "Neptune"))
self.actionPluto.setText(_translate("MainWindow", "Pluto"))


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Loading

0 comments on commit 4094610

Please sign in to comment.