From d90a59105ebc11faf6652b4d67868274e39bb6da Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sat, 23 Nov 2024 20:07:19 -0300 Subject: [PATCH 01/32] Make MosaicCamera a separate plugin --- BUILDING.md | 1 + CMakeLists.txt | 1 + plugins/MosaicCamera/CMakeLists.txt | 14 + plugins/MosaicCamera/COPYING | 340 +++++ plugins/MosaicCamera/src/CMakeLists.txt | 40 + plugins/MosaicCamera/src/MosaicCamera.cpp | 1419 +++++++++++++++++++++ plugins/MosaicCamera/src/MosaicCamera.hpp | 58 + src/core/StelApp.cpp | 4 + 8 files changed, 1877 insertions(+) create mode 100644 plugins/MosaicCamera/CMakeLists.txt create mode 100644 plugins/MosaicCamera/COPYING create mode 100644 plugins/MosaicCamera/src/CMakeLists.txt create mode 100644 plugins/MosaicCamera/src/MosaicCamera.cpp create mode 100644 plugins/MosaicCamera/src/MosaicCamera.hpp diff --git a/BUILDING.md b/BUILDING.md index 318a5149d8c6f..7172aa3199434 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -415,6 +415,7 @@ List of supported parameters (passed as `-DPARAMETER=VALUE`): | USE_PLUGIN_LENSDISTORTIONESTIMATOR | bool | ON | Enable building the Lens Distortion Estimator plugin | USE_PLUGIN_METEORSHOWERS | bool | ON | Enable building the Meteor Showers plugin | USE_PLUGIN_MISSINGSTARS | bool | ON | Enable building the Missing Stars plugin +| USE_PLUGIN_MOSAICCAMERA | bool | OFF | Enable building the Mosaic Camera plugin | USE_PLUGIN_NAVSTARS | bool | ON | Enable building the Navigational Stars plugin | USE_PLUGIN_NOVAE | bool | ON | Enable building the Bright Novae plugin | USE_PLUGIN_OBSERVABILITY | bool | ON | Enable building the Observability Analysis plugin diff --git a/CMakeLists.txt b/CMakeLists.txt index 89de851b6abe3..ca0dbe9d5ebbc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -541,6 +541,7 @@ ADD_PLUGIN(Calendars 1) ADD_PLUGIN(Exoplanets 1) ADD_PLUGIN(EquationOfTime 1) ADD_PLUGIN(MeteorShowers 1) +ADD_PLUGIN(MosaicCamera 1) ADD_PLUGIN(MissingStars 1) ADD_PLUGIN(NavStars 1) ADD_PLUGIN(Novae 1) diff --git a/plugins/MosaicCamera/CMakeLists.txt b/plugins/MosaicCamera/CMakeLists.txt new file mode 100644 index 0000000000000..774ffd4889f96 --- /dev/null +++ b/plugins/MosaicCamera/CMakeLists.txt @@ -0,0 +1,14 @@ +# This is the cmake config file for the MosaicCamera +SET(MOSAICCAMERA_VERSION "0.0.0") +ADD_DEFINITIONS(-DBUILD_DYNAMIC_PLUGIN=0) +ADD_DEFINITIONS(-DMOSAICCAMERA_PLUGIN_VERSION="${MOSAICCAMERA_VERSION}") +ADD_DEFINITIONS(-DMOSAICCAMERA_PLUGIN_LICENSE="GNU GPLv2 or later") + +ADD_SUBDIRECTORY( src ) + +IF(APPLE) + SET(CMAKE_INSTALL_PREFIX $ENV{HOME}/Library/Application\ Support/Stellarium) +ElSE(APPLE) + SET(CMAKE_INSTALL_PREFIX $ENV{HOME}/.stellarium) +ENDIF(APPLE) +INSTALL(FILES DESTINATION "modules/MosaicCamera") diff --git a/plugins/MosaicCamera/COPYING b/plugins/MosaicCamera/COPYING new file mode 100644 index 0000000000000..b35f35c99338e --- /dev/null +++ b/plugins/MosaicCamera/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt new file mode 100644 index 0000000000000..d3654cd92b5a4 --- /dev/null +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -0,0 +1,40 @@ +INCLUDE_DIRECTORIES(.) + +LINK_DIRECTORIES(${BUILD_DIR}/src) + +SET(MosaicCamera_SRCS + MosaicCamera.hpp + MosaicCamera.cpp +) + +SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui) + +############### For building the dynamic library ###################### +IF(BUILD_DYNAMIC_PLUGIN) + ADD_LIBRARY(MosaicCamera MODULE ${MosaicCamera_SRCS}) + IF(APPLE) + FIND_LIBRARY(OPENGL_LIBRARY OpenGL) + MARK_AS_ADVANCED(OPENGL_LIBRARY) + SET_TARGET_PROPERTIES(MosaicCamera PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" SUFFIX ".dylib") + ENDIF() + + IF(WIN32) + SET_TARGET_PROPERTIES(MosaicCamera PROPERTIES LINK_FLAGS "-enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition" ) + SET(StelMain stelMain) + ELSE(WIN32) + SET(StelMain ) + ENDIF(WIN32) + + TARGET_LINK_LIBRARIES(MosaicCamera ${StelMain} ${MosaicCamera_Qt_Libraries}) + INSTALL(TARGETS MosaicCamera DESTINATION "modules/MosaicCamera") +ELSE() +############### For building the static library ###################### + ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS}) + # The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. + SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") + TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) + SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN") + ADD_DEPENDENCIES(AllStaticPlugins MosaicCamera-static) +ENDIF() + +SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES FOLDER "plugins/MosaicCamera") diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp new file mode 100644 index 0000000000000..0e9f4ae479704 --- /dev/null +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -0,0 +1,1419 @@ +/* + * Copyright (C) 2024 Josh Meyers + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. + */ + +#include "StelProjector.hpp" +#include "StelApp.hpp" +#include "StelCore.hpp" +#include "StelLocaleMgr.hpp" +#include "StelModuleMgr.hpp" +#include "MosaicCamera.hpp" +#include "StelUtils.hpp" +#include "StelPainter.hpp" + +#include + +/************************************************************************* + This method is the one called automatically by the StelModuleMgr just + after loading the dynamic library +*************************************************************************/ +StelModule* MosaicCameraStelPluginInterface::getStelModule() const +{ + return new MosaicCamera(); +} + +StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const +{ + StelPluginInfo info; + info.id = "MosaicCamera"; + info.displayedName = "Mosaic Camera plugin"; + info.authors = "Josh Meyers"; + info.contact = "jmeyers314@gmail.com"; + info.description = "Mosaic Camera Overlay plugin."; + info.version = MOSAICCAMERA_PLUGIN_VERSION; + info.license = MOSAICCAMERA_PLUGIN_LICENSE; + return info; +} + +/************************************************************************* + Constructor +*************************************************************************/ +MosaicCamera::MosaicCamera() +{ + setObjectName("MosaicCamera"); + font.setPixelSize(25); +} + +/************************************************************************* + Destructor +*************************************************************************/ +MosaicCamera::~MosaicCamera() +{ +} + +/************************************************************************* + Reimplementation of the getCallOrder method +*************************************************************************/ +double MosaicCamera::getCallOrder(StelModuleActionName actionName) const +{ + if (actionName==StelModule::ActionDraw) + return StelApp::getInstance().getModuleMgr().getModule("NebulaMgr")->getCallOrder(actionName)+10.; + return 0; +} + + +/************************************************************************* + Init our module +*************************************************************************/ +void MosaicCamera::init() +{ + qDebug() << "init called for MosaicCamera"; +} + + +void MosaicCamera::draw(StelCore* core) +{ + // Input parameters for drawing LSSTCam FoV should be: + // altitude + // azimuth + // rottelpos + // Let's start by assuming RTP=0 + // Center at alt=45 az=180 + // Need 12-point star coordinates. + // Gonna be some projection, but assume rectilinear for current test. + + // const StelProjectorP prj = core->getProjection(StelCore::FrameAltAz); + // const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); + const StelProjectorP prj = core->getProjection(StelCore::FrameEquinoxEqu); + StelPainter painter(prj); + + std::vector>> polygon_sets = { + { + { + {0.01834639524087756, 0.018390984144617213}, + {0.018348563965375937, 0.014422337724567962}, + {0.014468595819035656, 0.014423996515432115}, + {0.014466893578866316, 0.018393109419810403}, + }, + { + {0.01834862360101588, 0.014297326616356644}, + {0.01835024418533624, 0.010327405350145383}, + {0.014469914605645683, 0.010328588781031817}, + {0.014468642626776773, 0.014298970814159609}, + }, + { + {0.018350286658806923, 0.0102023599361032}, + {0.018351364887380126, 0.0062315328436198065}, + {0.014470794220642742, 0.00623224515553648}, + {0.014469947942337653, 0.010203528928313284}, + }, + { + {0.014252727585516255, 0.018393211840565905}, + {0.014254404250569156, 0.014424076454612796}, + {0.010373195550631677, 0.01442531596623177}, + {0.010371979652495306, 0.018394799957636328}, + }, + { + {0.014254450355028656, 0.014299050050058677}, + {0.014255703222047668, 0.010328645811539366}, + {0.010374137536520715, 0.010329530102731228}, + {0.010373228984782467, 0.014300278656531301}, + }, + { + {0.014255736057833323, 0.010203585262996875}, + {0.014256569620013483, 0.0062322794822355235}, + {0.010374765823008924, 0.0062328117353223364}, + {0.01037416134816802, 0.010204458764888024}, + }, + { + {0.01015775488371211, 0.01839487290337595}, + {0.010158945477297968, 0.014425372899280503}, + {0.0062768553411847935, 0.01442619757620982}, + {0.006276121427892352, 0.018395929530573393}, + }, + { + {0.010158978215624798, 0.014300335088673717}, + {0.010159867858537498, 0.010329570719589712}, + {0.006277423915951641, 0.010330159053409062}, + {0.006276875521843277, 0.014301152509832323}, + }, + { + {0.010159891174608984, 0.010204498886170692}, + {0.010160483068807747, 0.006232836182421245}, + {0.006277803141585748, 0.006233190296766815}, + {0.006277438288396498, 0.010205080041525774}, + }, + { + {0.01835139522539771, 0.006082226567808942}, + {0.01835193177960031, 0.0021108551531774647}, + {0.014471239158501572, 0.002111096136705617}, + {0.014470818032167652, 0.0060829217661185885}, + }, + { + {0.01835194022378369, 0.0019857755364457654}, + {0.01835194022378369, -0.0019857755364457654}, + {0.014471245786086306, -0.001986002236139165}, + {0.014471245786086306, 0.001986002236139165}, + }, + { + {0.01835193177960031, -0.0021108551531774647}, + {0.01835139522539771, -0.006082226567808942}, + {0.014470818032167652, -0.006082921766118588}, + {0.014471239158501572, -0.002111096136705617}, + }, + { + {0.014256593073741726, 0.006082955268098344}, + {0.014257007872092066, 0.0021111077497989682}, + {0.010375083628618163, 0.002111287816367708}, + {0.010374782830894679, 0.006083474733427027}, + }, + { + {0.014257014400087666, 0.0019860131608882836}, + {0.014257014400087666, -0.0019860131608882836}, + {0.010375088362489994, -0.0019861825543446916}, + {0.010375088362489994, 0.0019861825543446916}, + }, + { + {0.014257007872092066, -0.0021111077497989682}, + {0.014256593073741726, -0.006082955268098343}, + {0.010374782830894679, -0.006083474733427027}, + {0.010375083628618163, -0.002111287816367708}, + }, + { + {0.010160499722713452, 0.006083498593164215}, + {0.010160794259994917, 0.002111296087048672}, + {0.006277994964096426, 0.0021114158870443253}, + {0.0062778134072951275, 0.006083844199592513}, + }, + { + {0.010160798895341201, 0.0019861903347961037}, + {0.010160798895341201, -0.0019861903347961037}, + {0.006277997821383259, -0.001986303033862647}, + {0.006277997821383259, 0.001986303033862647}, + }, + { + {0.010160794259994917, -0.002111296087048672}, + {0.010160499722713452, -0.006083498593164215}, + {0.0062778134072951275, -0.006083844199592512}, + {0.006277994964096426, -0.0021114158870443253}, + }, + { + {0.018351364887380126, -0.006231532843619808}, + {0.01835028665880692, -0.0102023599361032}, + {0.014469947942337653, -0.010203528928313286}, + {0.014470794220642742, -0.006232245155536482}, + }, + { + {0.01835024418533624, -0.010327405350145384}, + {0.01834862360101588, -0.014297326616356645}, + {0.014468642626776771, -0.014298970814159609}, + {0.014469914605645683, -0.010328588781031819}, + }, + { + {0.018348563965375937, -0.014422337724567967}, + {0.01834639524087756, -0.018390984144617217}, + {0.014466893578866316, -0.018393109419810403}, + {0.014468595819035656, -0.014423996515432119}, + }, + { + {0.014256569620013483, -0.006232279482235525}, + {0.014255736057833323, -0.010203585262996875}, + {0.01037416134816802, -0.010204458764888026}, + {0.010374765823008924, -0.006232811735322338}, + }, + { + {0.014255703222047668, -0.010328645811539368}, + {0.014254450355028656, -0.014299050050058678}, + {0.01037322898478247, -0.014300278656531305}, + {0.010374137536520717, -0.01032953010273123}, + }, + { + {0.014254404250569156, -0.0144240764546128}, + {0.014252727585516257, -0.018393211840565908}, + {0.010371979652495306, -0.01839479995763633}, + {0.010373195550631677, -0.014425315966231771}, + }, + { + {0.010160483068807747, -0.006232836182421247}, + {0.010159891174608984, -0.010204498886170692}, + {0.006277438288396498, -0.010205080041525776}, + {0.006277803141585747, -0.0062331902967668155}, + }, + { + {0.010159867858537498, -0.010329570719589714}, + {0.010158978215624798, -0.01430033508867372}, + {0.006276875521843276, -0.014301152509832325}, + {0.00627742391595164, -0.010330159053409064}, + }, + { + {0.010158945477297968, -0.014425372899280507}, + {0.01015775488371211, -0.018394872903375957}, + {0.006276121427892352, -0.018395929530573396}, + {0.006276855341184793, -0.01442619757620982}, + }, + { + {0.01834630324429571, -0.0185401670710437}, + {0.018343575355022016, -0.02250715118453407}, + {0.014464680187159708, -0.022509768008202775}, + {0.014466821369616143, -0.018542310013847617}, + }, + { + {0.018343480591644513, -0.022632057842028992}, + {0.018340187157559123, -0.026597002013033385}, + {0.014462020637791272, -0.0266001167637938}, + {0.014464605804237852, -0.02263468972328368}, + }, + { + {0.018340074410604857, -0.02672183822165426}, + {0.01833620386284607, -0.030684344320173487}, + {0.014458893864271287, -0.030687967926225586}, + {0.014461932136181225, -0.026724968338770333}, + }, + { + {0.014252656461128542, -0.018542413286083914}, + {0.014250547446155577, -0.022509894119308326}, + {0.010370398612233475, -0.022511849595428866}, + {0.010371928073488725, -0.01854401460661982}, + }, + { + {0.014250474180658505, -0.022634816560110016}, + {0.014247927848186109, -0.026600266873691495}, + {0.010368498834261481, -0.026602594503908134}, + {0.010370345479436448, -0.022636783289942043}, + }, + { + {0.014247840675967266, -0.02672511918930413}, + {0.014244848039605362, -0.030688142562809186}, + {0.010366265246585266, -0.030690850547307455}, + {0.010368435614681508, -0.026727458304923533}, + }, + { + {0.010157704378118132, -0.018544088158849437}, + {0.010156206745839209, -0.02251193941573198}, + {0.006275167103373632, -0.022513240482256426}, + {0.006276090294741015, -0.018545153571375157}, + }, + { + {0.010156154718742394, -0.022636873627190267}, + {0.010154346501492911, -0.026602701419583603}, + {0.006274020368984192, -0.026604250129442005}, + {0.0062751350318891045, -0.022638182182090898}, + }, + { + {0.010154284597452403, -0.02672756574820511}, + {0.010152159391313921, -0.030690974935676803}, + {0.006272672117393783, -0.030692776761040205}, + {0.00627398220836615, -0.026729122101052574}, + }, + { + {0.006037619549417504, 0.018395978113232424}, + {0.00603832549707651, 0.014426235493818407}, + {0.0021557057048326275, 0.014426645870802968}, + {0.002155453971955117, 0.01839650391808566}, + }, + { + {0.006038344908749775, 0.01430119009382394}, + {0.006038872406166657, 0.010330186104141196}, + {0.0021559007254518506, 0.010330478869776479}, + {0.0021557126267949113, 0.014301596860086078}, + }, + { + {0.0060388862309433715, 0.010205106762199627}, + {0.006039237181201076, 0.006233206578381133}, + {0.0021560307990007425, 0.006233382791353023}, + {0.0021559056551756824, 0.010205395955651689}, + }, + { + {0.0019411706044281688, 0.018396518420487337}, + {0.0019413973041215685, 0.01442665718951877}, + {-0.0019413973041215685, 0.01442665718951877}, + {-0.0019411706044281688, 0.018396518420487337}, + }, + { + {0.0019414035377396204, 0.014301608079212748}, + {0.0019415729311960284, 0.010330486944605442}, + {-0.0019415729311960284, 0.010330486944605442}, + {-0.0019414035377396204, 0.014301608079212748}, + }, + { + {0.0019415773706903084, 0.010205403931955102}, + {0.0019416900697568516, 0.00623338765151213}, + {-0.0019416900697568516, 0.00623338765151213}, + {-0.0019415773706903084, 0.010205403931955102}, + }, + { + {-0.002155453971955117, 0.01839650391808566}, + {-0.0021557057048326275, 0.014426645870802968}, + {-0.00603832549707651, 0.014426235493818407}, + {-0.006037619549417504, 0.018395978113232424}, + }, + { + {-0.0021557126267949113, 0.014301596860086078}, + {-0.0021559007254518506, 0.010330478869776479}, + {-0.006038872406166657, 0.010330186104141196}, + {-0.006038344908749775, 0.01430119009382394}, + }, + { + {-0.0021559056551756824, 0.010205395955651689}, + {-0.0021560307990007425, 0.006233382791353023}, + {-0.006039237181201076, 0.006233206578381133}, + {-0.0060388862309433715, 0.010205106762199627}, + }, + { + {0.006039247055728695, 0.006083860090025068}, + {0.0060394216941745, 0.0021114213952493793}, + {0.002156096593543867, 0.00211148100951192}, + {0.0021560343201107073, 0.006084032069300254}, + }, + { + {0.006039424442582142, 0.0019863082155786456}, + {0.006039424442582142, -0.0019863082155786456}, + {0.002156097573583869, -0.0019863642963111844}, + {0.002156097573583869, 0.0019863642963111844}, + }, + { + {0.0060394216941745, -0.0021114213952493793}, + {0.006039247055728695, -0.006083860090025068}, + {0.0021560343201107073, -0.006084032069300254}, + {0.002156096593543867, -0.00211148100951192}, + }, + { + {0.001941693240714674, 0.006084036812688888}, + {0.001941749321447213, 0.0021114826537415496}, + {-0.001941749321447213, 0.0021114826537415496}, + {-0.001941693240714674, 0.006084036812688888}, + }, + { + {0.0019417502040283943, 0.0019863658430819935}, + {0.0019417502040283943, -0.0019863658430819935}, + {-0.0019417502040283943, -0.0019863658430819935}, + {-0.0019417502040283943, 0.0019863658430819935}, + }, + { + {0.001941749321447213, -0.0021114826537415496}, + {0.001941693240714674, -0.006084036812688887}, + {-0.001941693240714674, -0.006084036812688887}, + {-0.001941749321447213, -0.0021114826537415496}, + }, + { + {-0.0021560343201107073, 0.006084032069300254}, + {-0.002156096593543867, 0.00211148100951192}, + {-0.0060394216941745, 0.0021114213952493793}, + {-0.006039247055728695, 0.006083860090025068}, + }, + { + {-0.002156097573583869, 0.0019863642963111844}, + {-0.002156097573583869, -0.0019863642963111844}, + {-0.006039424442582142, -0.0019863082155786456}, + {-0.006039424442582142, 0.0019863082155786456}, + }, + { + {-0.002156096593543867, -0.00211148100951192}, + {-0.0021560343201107073, -0.006084032069300254}, + {-0.006039247055728695, -0.006083860090025068}, + {-0.0060394216941745, -0.0021114213952493793}, + }, + { + {0.006039237181201076, -0.0062332065783811345}, + {0.006038886230943371, -0.010205106762199628}, + {0.0021559056551756824, -0.01020539595565169}, + {0.0021560307990007425, -0.006233382791353025}, + }, + { + {0.006038872406166657, -0.010330186104141197}, + {0.006038344908749775, -0.014301190093823942}, + {0.0021557126267949113, -0.014301596860086082}, + {0.0021559007254518506, -0.01033047886977648}, + }, + { + {0.006038325497076511, -0.014426235493818412}, + {0.006037619549417504, -0.018395978113232427}, + {0.0021554539719551165, -0.018396503918085665}, + {0.0021557057048326275, -0.014426645870802971}, + }, + { + {0.0019416900697568516, -0.0062333876515121315}, + {0.0019415773706903084, -0.010205403931955103}, + {-0.0019415773706903084, -0.010205403931955103}, + {-0.0019416900697568516, -0.0062333876515121315}, + }, + { + {0.0019415729311960282, -0.010330486944605442}, + {0.0019414035377396206, -0.014301608079212751}, + {-0.0019414035377396206, -0.014301608079212751}, + {-0.0019415729311960282, -0.010330486944605442}, + }, + { + {0.0019413973041215685, -0.014426657189518771}, + {0.0019411706044281688, -0.01839651842048734}, + {-0.0019411706044281688, -0.01839651842048734}, + {-0.0019413973041215685, -0.014426657189518771}, + }, + { + {-0.0021560307990007425, -0.006233382791353025}, + {-0.0021559056551756824, -0.01020539595565169}, + {-0.006038886230943371, -0.010205106762199628}, + {-0.006039237181201076, -0.0062332065783811345}, + }, + { + {-0.0021559007254518506, -0.01033047886977648}, + {-0.0021557126267949113, -0.014301596860086082}, + {-0.006038344908749775, -0.014301190093823942}, + {-0.006038872406166657, -0.010330186104141197}, + }, + { + {-0.0021557057048326275, -0.014426645870802971}, + {-0.0021554539719551165, -0.018396503918085665}, + {-0.006037619549417504, -0.018395978113232427}, + {-0.006038325497076511, -0.014426235493818412}, + }, + { + {0.006037589602581689, -0.018545202557986182}, + {0.006036701588751924, -0.022513300304413994}, + {0.0021551266356864573, -0.02251394775553154}, + {0.0021554432932259413, -0.018545732734832468}, + }, + { + {0.006036670739318462, -0.022638242348573107}, + {0.006035598549106462, -0.026604321338666158}, + {0.0021547332990697627, -0.02660509203457798}, + {0.0021551156350259754, -0.02263889352637273}, + }, + { + {0.006035561842532645, -0.02672919366171876}, + {0.006034301669772514, -0.030692859609234752}, + {0.0021542708365451546, -0.030693756277955318}, + {0.0021547202096954825, -0.026729968161391053}, + }, + { + {0.0019411609876278618, -0.01854574735782124}, + {0.0019408758195560653, -0.02251396561316209}, + {-0.0019408758195560653, -0.02251396561316209}, + {-0.0019411609876278618, -0.01854574735782124}, + }, + { + {0.001940865912836536, -0.0226389114867926}, + {0.0019405215975557696, -0.02660511329156382}, + {-0.0019405215975557696, -0.02660511329156382}, + {-0.001940865912836536, -0.0226389114867926}, + }, + { + {0.001940509809828239, -0.026729989523293377}, + {0.001940105123644249, -0.030693781009582564}, + {-0.001940105123644249, -0.030693781009582564}, + {-0.001940509809828239, -0.026729989523293377}, + }, + { + {-0.0021554432932259413, -0.018545732734832468}, + {-0.0021551266356864573, -0.02251394775553154}, + {-0.006036701588751924, -0.022513300304413994}, + {-0.006037589602581689, -0.018545202557986182}, + }, + { + {-0.0021551156350259754, -0.02263889352637273}, + {-0.0021547332990697627, -0.02660509203457798}, + {-0.006035598549106462, -0.026604321338666158}, + {-0.006036670739318462, -0.022638242348573107}, + }, + { + {-0.0021547202096954825, -0.026729968161391053}, + {-0.0021542708365451546, -0.030693756277955318}, + {-0.006034301669772514, -0.030692859609234752}, + {-0.006035561842532645, -0.02672919366171876}, + }, + { + {-0.006272672117393783, 0.03069277676104021}, + {-0.006273982208366151, 0.02672912210105258}, + {-0.010154284597452405, 0.026727565748205118}, + {-0.010152159391313923, 0.03069097493567681}, + }, + { + {-0.006274020368984192, 0.026604250129442005}, + {-0.0062751350318891045, 0.022638182182090898}, + {-0.010156154718742394, 0.022636873627190267}, + {-0.010154346501492911, 0.026602701419583603}, + }, + { + {-0.006275167103373631, 0.022513240482256423}, + {-0.006276090294741015, 0.018545153571375154}, + {-0.010157704378118132, 0.018544088158849434}, + {-0.010156206745839209, 0.022511939415731978}, + }, + { + {-0.010366265246585269, 0.030690850547307462}, + {-0.01036843561468151, 0.026727458304923537}, + {-0.014247840675967268, 0.026725119189304133}, + {-0.014244848039605365, 0.030688142562809193}, + }, + { + {-0.010368498834261483, 0.026602594503908134}, + {-0.01037034547943645, 0.022636783289942043}, + {-0.014250474180658508, 0.022634816560110016}, + {-0.01424792784818611, 0.026600266873691495}, + }, + { + {-0.010370398612233475, 0.022511849595428863}, + {-0.010371928073488726, 0.018544014606619818}, + {-0.014252656461128548, 0.01854241328608391}, + {-0.01425054744615558, 0.022509894119308323}, + }, + { + {-0.014458893864271289, 0.030687967926225593}, + {-0.014461932136181226, 0.026724968338770333}, + {-0.01834007441060486, 0.026721838221654266}, + {-0.018336203862846075, 0.030684344320173494}, + }, + { + {-0.014462020637791274, 0.0266001167637938}, + {-0.014464605804237855, 0.02263468972328368}, + {-0.018343480591644517, 0.022632057842028992}, + {-0.018340187157559126, 0.02659700201303339}, + }, + { + {-0.014464680187159712, 0.02250976800820277}, + {-0.014466821369616144, 0.018542310013847617}, + {-0.01834630324429571, 0.0185401670710437}, + {-0.01834357535502202, 0.022507151184534068}, + }, + { + {-0.006276121427892352, 0.018395929530573393}, + {-0.0062768553411847935, 0.01442619757620982}, + {-0.010158945477297968, 0.014425372899280503}, + {-0.01015775488371211, 0.01839487290337595}, + }, + { + {-0.006276875521843277, 0.014301152509832323}, + {-0.006277423915951641, 0.010330159053409062}, + {-0.010159867858537498, 0.010329570719589712}, + {-0.010158978215624798, 0.014300335088673717}, + }, + { + {-0.006277438288396498, 0.010205080041525774}, + {-0.006277803141585748, 0.006233190296766815}, + {-0.010160483068807747, 0.006232836182421245}, + {-0.010159891174608984, 0.010204498886170692}, + }, + { + {-0.010371979652495308, 0.018394799957636328}, + {-0.010373195550631679, 0.01442531596623177}, + {-0.014254404250569161, 0.014424076454612798}, + {-0.014252727585516258, 0.018393211840565905}, + }, + { + {-0.01037322898478247, 0.014300278656531303}, + {-0.010374137536520719, 0.010329530102731228}, + {-0.014255703222047672, 0.010328645811539368}, + {-0.014254450355028661, 0.014299050050058677}, + }, + { + {-0.010374161348168022, 0.010204458764888024}, + {-0.010374765823008924, 0.0062328117353223364}, + {-0.014256569620013487, 0.006232279482235524}, + {-0.014255736057833325, 0.010203585262996875}, + }, + { + {-0.014466893578866317, 0.018393109419810403}, + {-0.014468595819035658, 0.014423996515432115}, + {-0.01834856396537594, 0.014422337724567963}, + {-0.018346395240877562, 0.018390984144617213}, + }, + { + {-0.014468642626776773, 0.014298970814159607}, + {-0.014469914605645685, 0.010328588781031817}, + {-0.018350244185336245, 0.010327405350145383}, + {-0.01834862360101588, 0.014297326616356644}, + }, + { + {-0.014469947942337658, 0.010203528928313284}, + {-0.014470794220642746, 0.006232245155536481}, + {-0.01835136488738013, 0.006231532843619807}, + {-0.018350286658806923, 0.010202359936103198}, + }, + { + {-0.0062778134072951275, 0.006083844199592513}, + {-0.006277994964096426, 0.0021114158870443253}, + {-0.010160794259994917, 0.002111296087048672}, + {-0.010160499722713452, 0.006083498593164215}, + }, + { + {-0.006277997821383259, 0.001986303033862647}, + {-0.006277997821383259, -0.001986303033862647}, + {-0.010160798895341201, -0.0019861903347961037}, + {-0.010160798895341201, 0.0019861903347961037}, + }, + { + {-0.006277994964096426, -0.0021114158870443253}, + {-0.0062778134072951275, -0.006083844199592512}, + {-0.010160499722713452, -0.006083498593164215}, + {-0.010160794259994917, -0.002111296087048672}, + }, + { + {-0.010374782830894682, 0.006083474733427028}, + {-0.010375083628618165, 0.002111287816367708}, + {-0.014257007872092067, 0.002111107749798968}, + {-0.01425659307374173, 0.006082955268098345}, + }, + { + {-0.010375088362489994, 0.001986182554344691}, + {-0.010375088362489994, -0.001986182554344691}, + {-0.014257014400087668, -0.0019860131608882836}, + {-0.014257014400087668, 0.0019860131608882836}, + }, + { + {-0.010375083628618165, -0.002111287816367708}, + {-0.010374782830894682, -0.006083474733427027}, + {-0.01425659307374173, -0.006082955268098344}, + {-0.014257007872092067, -0.002111107749798968}, + }, + { + {-0.014470818032167656, 0.0060829217661185885}, + {-0.014471239158501575, 0.0021110961367056176}, + {-0.01835193177960031, 0.0021108551531774647}, + {-0.01835139522539771, 0.006082226567808943}, + }, + { + {-0.01447124578608631, 0.001986002236139165}, + {-0.01447124578608631, -0.001986002236139165}, + {-0.01835194022378369, -0.0019857755364457654}, + {-0.01835194022378369, 0.0019857755364457654}, + }, + { + {-0.014471239158501575, -0.0021110961367056176}, + {-0.014470818032167656, -0.006082921766118588}, + {-0.01835139522539771, -0.006082226567808942}, + {-0.01835193177960031, -0.0021108551531774647}, + }, + { + {-0.006277803141585747, -0.0062331902967668155}, + {-0.006277438288396498, -0.010205080041525776}, + {-0.010159891174608984, -0.010204498886170692}, + {-0.010160483068807747, -0.006232836182421247}, + }, + { + {-0.00627742391595164, -0.010330159053409064}, + {-0.006276875521843276, -0.014301152509832325}, + {-0.010158978215624798, -0.01430033508867372}, + {-0.010159867858537498, -0.010329570719589714}, + }, + { + {-0.006276855341184793, -0.01442619757620982}, + {-0.006276121427892352, -0.018395929530573396}, + {-0.01015775488371211, -0.018394872903375957}, + {-0.010158945477297968, -0.014425372899280507}, + }, + { + {-0.010374765823008924, -0.006232811735322337}, + {-0.010374161348168024, -0.010204458764888027}, + {-0.014255736057833326, -0.010203585262996879}, + {-0.014256569620013487, -0.006232279482235525}, + }, + { + {-0.010374137536520719, -0.01032953010273123}, + {-0.01037322898478247, -0.014300278656531305}, + {-0.014254450355028661, -0.014299050050058678}, + {-0.014255703222047672, -0.010328645811539368}, + }, + { + {-0.010373195550631679, -0.014425315966231773}, + {-0.010371979652495308, -0.01839479995763633}, + {-0.014252727585516258, -0.018393211840565908}, + {-0.014254404250569157, -0.0144240764546128}, + }, + { + {-0.014470794220642746, -0.006232245155536483}, + {-0.014469947942337658, -0.010203528928313286}, + {-0.018350286658806923, -0.0102023599361032}, + {-0.01835136488738013, -0.006231532843619808}, + }, + { + {-0.014469914605645685, -0.010328588781031819}, + {-0.014468642626776773, -0.014298970814159609}, + {-0.01834862360101588, -0.014297326616356645}, + {-0.018350244185336245, -0.010327405350145384}, + }, + { + {-0.01446859581903566, -0.014423996515432117}, + {-0.014466893578866316, -0.018393109419810403}, + {-0.018346395240877562, -0.018390984144617217}, + {-0.01834856396537594, -0.014422337724567967}, + }, + { + {-0.006276090294741015, -0.018545153571375157}, + {-0.006275167103373632, -0.022513240482256426}, + {-0.010156206745839209, -0.02251193941573198}, + {-0.010157704378118132, -0.018544088158849437}, + }, + { + {-0.0062751350318891045, -0.022638182182090898}, + {-0.006274020368984192, -0.026604250129442005}, + {-0.010154346501492911, -0.026602701419583603}, + {-0.010156154718742394, -0.022636873627190267}, + }, + { + {-0.00627398220836615, -0.026729122101052574}, + {-0.006272672117393783, -0.030692776761040205}, + {-0.010152159391313921, -0.030690974935676803}, + {-0.010154284597452403, -0.02672756574820511}, + }, + { + {-0.010371928073488726, -0.01854401460661982}, + {-0.010370398612233477, -0.022511849595428866}, + {-0.01425054744615558, -0.02250989411930833}, + {-0.014252656461128548, -0.018542413286083914}, + }, + { + {-0.01037034547943645, -0.022636783289942043}, + {-0.010368498834261483, -0.026602594503908134}, + {-0.01424792784818611, -0.026600266873691495}, + {-0.014250474180658508, -0.022634816560110016}, + }, + { + {-0.01036843561468151, -0.026727458304923533}, + {-0.010366265246585267, -0.030690850547307455}, + {-0.014244848039605365, -0.030688142562809186}, + {-0.014247840675967268, -0.02672511918930413}, + }, + { + {-0.014466821369616144, -0.018542310013847617}, + {-0.014464680187159712, -0.022509768008202775}, + {-0.01834357535502202, -0.02250715118453407}, + {-0.01834630324429571, -0.0185401670710437}, + }, + { + {-0.014464605804237855, -0.02263468972328368}, + {-0.014462020637791274, -0.0266001167637938}, + {-0.018340187157559126, -0.02659700201303339}, + {-0.018343480591644517, -0.022632057842028992}, + }, + { + {-0.014461932136181226, -0.02672496833877033}, + {-0.014458893864271289, -0.030687967926225586}, + {-0.018336203862846075, -0.030684344320173487}, + {-0.01834007441060486, -0.02672183822165426}, + }, + }, + { + { + {0.03063885551542935, 0.018370137806980696}, + {0.03064253507495745, 0.01442696981174086}, + {0.026772414680591994, 0.014429930304568697}, + {0.026769225259651374, 0.01837392490311697}, + }, + { + {0.030642655794343027, 0.014278783862683653}, + {0.030645405646122927, 0.010334321482827452}, + {0.026774902797654005, 0.010336434458009844}, + {0.026772519317574853, 0.014281713501161973}, + }, + { + {0.03064549163316248, 0.010186093974824638}, + {0.030647321386790313, 0.00624071174764212}, + {0.026776563260757096, 0.0062419846303944015}, + {0.026774977327347852, 0.010188176415879269}, + }, + { + {0.02655148798272046, 0.018374121934540542}, + {0.02655465014479912, 0.014430084327435455}, + {0.022682159197689677, 0.014432603326934718}, + {0.022679476626531546, 0.018377344378115945}, + }, + { + {0.026554753887388066, 0.014281865918705084}, + {0.02655711699275384, 0.010336544386253045}, + {0.02268425185319307, 0.010338342208209228}, + {0.022682247204727283, 0.014284358662282209}, + }, + { + {0.026557190885292296, 0.010188284755526902}, + {0.026558763259770232, 0.006242050851900307}, + {0.022685648372504686, 0.0062431338626097255}, + {0.022684314536310732, 0.010190056596115485}, + }, + { + {0.02246161646315764, 0.018377509983361892}, + {0.02246427232320573, 0.014432732779277415}, + {0.01858979801723113, 0.01443481917378867}, + {0.018587612820146697, 0.018380179093430416}, + }, + { + {0.02246435945386179, 0.014284486765255492}, + {0.022466344138638492, 0.010338434597798565}, + {0.01859150263319731, 0.01033992363282485}, + {0.018589869705924383, 0.014286551410941156}, + }, + { + {0.022466406197475777, 0.010190147650494709}, + {0.02246772674903508, 0.0062431895177677745}, + {0.018592640176577992, 0.006244086500686393}, + {0.018591553692467122, 0.01019161516558273}, + }, + { + {0.030647381248504267, 0.00606823187814247}, + {0.030648291923237782, 0.00212229682261085}, + {0.026777404458888557, 0.002122729159667196}, + {0.02677661514524258, 0.0060694694866976415}, + }, + { + {0.030648309026149016, 0.001974027872202161}, + {0.030648309241516163, -0.0019720897143643014}, + {0.026777419469178613, -0.001972491443559635}, + {0.026777419282513225, 0.0019744299963251805}, + }, + { + {0.03064829215479411, -0.00212035866801649}, + {0.030647381911551506, -0.006066293896360982}, + {0.026776615719931344, -0.0060675311086212345}, + {0.026777404659585644, -0.0021207906101199376}, + }, + { + {0.026558814700644785, 0.006069533873049804}, + {0.026559597265486793, 0.0021227516518162143}, + {0.02268635584639868, 0.0021231194950477802}, + {0.02268569200915486, 0.0060705868707032935}, + }, + { + {0.026559611962362735, 0.0019744509166575272}, + {0.026559612147432052, -0.0019725123433460175}, + {0.022686368470465408, -0.001972854144583441}, + {0.022686368313474696, 0.001974793053910002}, + }, + { + {0.026559597464467826, -0.0021208130817216746}, + {0.026558815270419967, -0.00606759547435601}, + {0.0226856924924879, -0.0060686481348222}, + {0.02268635601519045, -0.0021211805889165725}, + }, + { + {0.022467769951058623, 0.006070640983497113}, + {0.02246842717625845, 0.002123138398170781}, + {0.018593216447504356, 0.0021234430548620438}, + {0.018592675720814588, 0.006071513108246817}, + }, + { + {0.022468439519155656, 0.0019748106360252013}, + {0.02246843967458265, -0.0019728717094311225}, + {0.018593226730364922, -0.0019731547974704117}, + {0.01859322660248905, 0.0019750940023607736}, + }, + { + {0.022468427343368975, -0.0021211994747709407}, + {0.022467770429577594, -0.006068702230288045}, + {0.01859267611451346, -0.006069574075764198}, + {0.018593216584992734, -0.0021215038531478985}, + }, + { + {0.030647322068738457, -0.006238773777225642}, + {0.03064549274888928, -0.010184156352078236}, + {0.02677497829440919, -0.010186238394057794}, + {0.026776563851828358, -0.006240046263594837}, + }, + { + {0.03064540677821031, -0.010332383876432571}, + {0.03064265736400101, -0.014276846779818974}, + {0.026772520678120054, -0.014279776015061862}, + {0.02677490377889677, -0.010334496452413532}, + }, + { + {0.030642536661146937, -0.014425032751886285}, + {0.030638857544494608, -0.018368201449554724}, + {0.026769227018463904, -0.01837198813690276}, + {0.026772416055467912, -0.014427992841301899}, + }, + { + {0.026558763845787866, -0.006240112464478751}, + {0.026557191844086194, -0.010186346712942808}, + {0.0226843153496563, -0.010188118213960417}, + {0.02268564886961623, -0.006241195137925272}, + }, + { + {0.02655711796560796, -0.01033460635988751}, + {0.026554755236303844, -0.014279928411625018}, + {0.022682248349040552, -0.014282420812064121}, + {0.02268425267846654, -0.010336403842164383}, + }, + { + {0.026554651507923202, -0.01442814684317947}, + {0.026551489726502623, -0.0183721851470563}, + {0.022679478105864428, -0.01837540724273277}, + {0.022682160354057308, -0.014430665499389136}, + }, + { + {0.022467727241195338, -0.006241250775751449}, + {0.022466407002720967, -0.010188209250888737}, + {0.018591554354987088, -0.010189676484716014}, + {0.018592640581500324, -0.006242147479333494}, + }, + { + {0.02246634495569282, -0.010336496214297226}, + {0.022464360586779863, -0.01428254889740254}, + {0.018589870638057625, -0.01428461325885373}, + {0.018591503305433722, -0.010337984967972454}, + }, + { + {0.022464273468058182, -0.014430794934089154}, + {0.02246161792776154, -0.018375572830098323}, + {0.018587614025213563, -0.018378241651963348}, + {0.018589798959184445, -0.01443288104423957}, + }, + { + {0.018335246837711813, 0.03067370735367386}, + {0.01833909462960039, 0.02673441936123189}, + {0.0144648293852087, 0.026737548086420215}, + {0.01446180819662856, 0.03067732621744965}, + }, + { + {0.01833922835060963, 0.026586357828155792}, + {0.018342502439266096, 0.022644645962879233}, + {0.014467505022236753, 0.022647276888956302}, + {0.01446493437765643, 0.02658946834515339}, + }, + { + {0.018342614831965764, 0.022496500870738106}, + {0.01834532671831066, 0.018552760931441727}, + {0.014469722436555916, 0.018554903352249786}, + {0.01446759326576829, 0.02249911395450982}, + }, + { + {0.01424388812250003, 0.030677503961267668}, + {0.014246863120077518, 0.026737701753822108}, + {0.010371336234152125, 0.02674003987480209}, + {0.010369177899870564, 0.030680208453948397}, + }, + { + {0.014246966507201598, 0.026589621118161367}, + {0.014249497844927848, 0.022647406104805062}, + {0.010373247655671368, 0.02264937215912172}, + {0.010371411239566062, 0.026591945629378014}, + }, + { + {0.014249584739089974, 0.022499242293977043}, + {0.01425168135044448, 0.018555008574077093}, + {0.010374831694949025, 0.018556609535681185}, + {0.0103733106942539, 0.022501195013084903}, + }, + { + {0.010151196705096106, 0.03068033505887294}, + {0.010153309327765812, 0.0267401493273252}, + {0.00627688590403686, 0.02674170507911937}, + {0.0062755828396695, 0.03068213463088569}, + }, + { + {0.010153382744584183, 0.02659205444474573}, + {0.010155180264859709, 0.022649464193246194}, + {0.0062780398774663695, 0.0226507723497532}, + {0.006276931187070007, 0.026593601139536724}, + }, + { + {0.010155241968232129, 0.022501286422928996}, + {0.010156730752151913, 0.01855668447844479}, + {0.0062789961868628995, 0.018557749693723893}, + {0.006278077935112515, 0.022502585705656535}, + }, + { + {0.0060333363116887185, 0.03068221880833412}, + {0.006034588941627878, 0.026741777850869446}, + {0.0021576267151363015, 0.026742552143131437}, + {0.002157179356695969, 0.030683114461683644}, + }, + { + {0.006034632471986048, 0.02659367348761343}, + {0.006035698250239919, 0.022650833539488553}, + {0.00215802288512689, 0.022651484596131987}, + {0.0021576422612949423, 0.026594443271855055}, + }, + { + {0.006035734834841532, 0.022502646480299014}, + {0.006036617544815552, 0.018557799519397636}, + {0.0021583511925329793, 0.01855832966086309}, + {0.0021580359506173995, 0.022503293120274524}, + }, + { + {0.001939137212643717, 0.030683139643540913}, + {0.001939539340319162, 0.026742573912746478}, + {-0.0019376007835310988, 0.026742574095859437}, + {-0.0019371990578881918, 0.03068313985535564}, + }, + { + {0.0019395533146611321, 0.02659446491472138}, + {0.0019398954549360936, 0.022651502900840493}, + {-0.001937956542116954, 0.022651503054808717}, + {-0.001937614743902017, 0.026594465096768206}, + }, + { + {0.0019399071994188023, 0.02250331130080422}, + {0.0019401905682576665, 0.0185583445659429}, + {-0.0019382513603939206, 0.018558344691315475}, + {-0.0019379682748579237, 0.02250331145372793}, + }, + { + {-0.002155241206710655, 0.030683114697334868}, + {-0.0021556881630807045, 0.02674255234685101}, + {-0.0060326505579988265, 0.02674177842146331}, + {-0.006031398331471972, 0.030682219468358862}, + }, + { + {-0.0021557036952669774, 0.026594443474388513}, + {-0.0021560839770065387, 0.022651484767427055}, + {-0.006033759509348653, 0.02265083401926916}, + {-0.006032694074337801, 0.02659367405488532}, + }, + { + {-0.002156097030754195, 0.02250329329040754}, + {-0.002156411989339928, 0.018558329800344525}, + {-0.0060346785078527, 0.018557799910074016}, + {-0.006033796082167774, 0.022502646956824926}, + }, + { + {-0.018585675405727257, 0.018380180298497976}, + {-0.01858786036934203, 0.014434820115755859}, + {-0.02246233552440618, 0.01443273392415673}, + {-0.02245967990167046, 0.018377511447979427}, + }, + { + {-0.018587932050375528, 0.014286552343088775}, + {-0.018589564803166786, 0.010339924305088859}, + {-0.02246440715468765, 0.010338435414893578}, + {-0.022462422647276128, 0.014284487898200927}, + }, + { + {-0.018589615856980574, 0.01019161582813079}, + {-0.01859070222499006, 0.006244086905650151}, + {-0.022465789641512204, 0.006243190009982679}, + {-0.022464469207978587, 0.010190148455781088}, + }, + { + {-0.022677540118066726, 0.018377345857463194}, + {-0.022680222451674774, 0.014432604483329947}, + {-0.026552714428257587, 0.014430085690600222}, + {-0.02654955250833844, 0.01837412367835007}, + }, + { + {-0.02268031045091844, 0.014284359806623573}, + {-0.022682314921840672, 0.010338343033524116}, + {-0.02655518108726439, 0.010336545359161821}, + {-0.02655281816290102, 0.014281867267662044}, + }, + { + {-0.022682377599406403, 0.010190057409502976}, + {-0.022683711317455627, 0.006243134359776667}, + {-0.026556827228167525, 0.006242051437986746}, + {-0.02655525497414257, 0.01018828571437595}, + }, + { + {-0.026767289848640255, 0.01837392666195759}, + {-0.026770479027140515, 0.014429931679486035}, + {-0.030640600637332264, 0.014426971397984992}, + {-0.03063692132562069, 0.018370139836087134}, + }, + { + {-0.026770583656168627, 0.014281714861749095}, + {-0.02677296695503463, 0.010336435439308006}, + {-0.030643471015118866, 0.010334322614983644}, + {-0.030640721348586298, 0.014278785432396796}, + }, + { + {-0.026773041479061604, 0.01018817738299651}, + {-0.026774627291877223, 0.006241985221535234}, + {-0.030645386626707172, 0.006240712429673482}, + {-0.030643556996365187, 0.010186095090620758}, + }, + { + {-0.018590737765428304, 0.006071513501987693}, + {-0.01859127843433367, 0.0021234431924059003}, + {-0.02246649000613036, 0.0021231385653501978}, + {-0.022465832839674363, 0.006070641462071325}, + }, + { + {-0.018591288588233147, 0.0019750941302926314}, + {-0.01859128871609535, -0.001973154925276626}, + {-0.022466502503337416, -0.001972871864774818}, + {-0.02246650234792431, 0.0019748107915216113}, + }, + { + {-0.018591278571807354, -0.0021215039905661042}, + {-0.018590738159085102, -0.006069574469378988}, + {-0.022465833318150562, -0.006068702708709006}, + {-0.022466490173225946, -0.0021211996417976335}, + }, + { + {-0.022683754950240522, 0.0060705873540923185}, + {-0.022684418728681148, 0.002123119663909215}, + {-0.026557661169989148, 0.0021227518508805518}, + {-0.02655687866510118, 0.006069534442894399}, + }, + { + {-0.022684431194652802, 0.001974793210970886}, + {-0.02268443135162961, -0.0019728543014900742}, + {-0.02655767605079424, -0.0019725125283173205}, + {-0.026557675865739105, 0.0019744511018106705}, + }, + { + {-0.022684418897457977, -0.002121180757623747}, + {-0.022683755433530742, -0.006068648618056432}, + {-0.026556879234832718, -0.0060675960440181335}, + {-0.026557661368954936, -0.00212081328060416}, + }, + { + {-0.026774679172417208, 0.006069470061456581}, + {-0.026775468426039024, 0.002122729360448359}, + {-0.030646357097754515, 0.002122297054265191}, + {-0.03064544648438746, 0.006068232541273535}, + }, + { + {-0.026775483248536378, 0.001974430183075174}, + {-0.02677548343518757, -0.0019724916301262197}, + {-0.03064637441486585, -0.001972089929618391}, + {-0.030646374199513212, 0.0019740280876678605}, + }, + { + {-0.026775468626720852, -0.002120790810717681}, + {-0.026774679747062272, -0.0060675316831961265}, + {-0.03064544714739002, -0.006066294559279709}, + {-0.030646357329295243, -0.0021203588994592078}, + }, + { + {-0.018590702629869126, -0.00624214788417114}, + {-0.018589616519429746, -0.010189677147137094}, + {-0.022464470013151813, -0.01018821005602078}, + {-0.022465790133628472, -0.006241251267813071}, + }, + { + {-0.018589565475331367, -0.010337985640109437}, + {-0.01858793298240918, -0.014284614190873018}, + {-0.022462423780092954, -0.014282550030192012}, + {-0.02246440797166896, -0.010336497031237856}, + }, + { + {-0.018587861311194703, -0.01443288198607837}, + {-0.018585676610665382, -0.018378242856900782}, + {-0.022459681366143496, -0.018375574294557724}, + {-0.02246233666915633, -0.014430796078812437}, + }, + { + {-0.02268371181452314, -0.006241195634937388}, + {-0.022682378412679928, -0.010188119027192018}, + {-0.026555255932863016, -0.010186347671608099}, + {-0.026556827814140257, -0.006240113050382677}, + }, + { + {-0.02268231574704105, -0.010336404667323334}, + {-0.022680311595130367, -0.014282421956247956}, + {-0.026552819511713486, -0.014279929760396298}, + {-0.026555182060043994, -0.010334607332612471}, + }, + { + {-0.022680223607939993, -0.014430666655626763}, + {-0.022677541597268615, -0.018375408721920294}, + {-0.02654955425198708, -0.01837218689067758}, + {-0.026552715791277274, -0.014428148206158474}, + }, + { + {-0.02677462788290354, -0.006240046854551585}, + {-0.02677304244604941, -0.010186239360989693}, + {-0.030643558112016807, -0.010184157467660531}, + {-0.030645387308609374, -0.006238774459044622}, + }, + { + {-0.02677296793620279, -0.010334497433526295}, + {-0.02677058501661039, -0.014279777375461702}, + {-0.030640722918138553, -0.014276848349316074}, + {-0.030643472147129983, -0.010332385008374873}, + }, + { + {-0.026770480401911913, -0.014427994216031874}, + {-0.0267672916073191, -0.018371989895553505}, + {-0.030636923354549307, -0.018368203478442157}, + {-0.030640602223414908, -0.014425034337914278}, + }, + }, + { + { + {0.027044781862091364, 0.018626414020815534}, + {0.023103362294895458, 0.018629805503367392}, + {0.02309997585202849, 0.02250307224345223}, + {0.027040789583676325, 0.02249895225902746}, + }, + { + {0.018629807032689596, 0.023101425908454556}, + {0.01862641582377898, 0.027042846549750164}, + {0.022498954449231872, 0.0270388545719163}, + {0.0225030741013136, 0.023098039760281283}, + }, + { + {0.018626414020815534, -0.027044781862091364}, + {0.018629805503367396, -0.023103362294895458}, + {0.02250307224345223, -0.023099975852028495}, + {0.02249895225902746, -0.027040789583676325}, + }, + { + {0.023101425908454553, -0.018629807032689596}, + {0.027042846549750168, -0.01862641582377898}, + {0.027038854571916307, -0.022498954449231875}, + {0.023098039760281283, -0.0225030741013136}, + }, + { + {-0.018626414020815534, 0.027044781862091364}, + {-0.018629805503367396, 0.023103362294895458}, + {-0.02250307224345223, 0.023099975852028495}, + {-0.02249895225902746, 0.027040789583676325}, + }, + { + {-0.023101425908454553, 0.018629807032689596}, + {-0.027042846549750168, 0.01862641582377898}, + {-0.027038854571916307, 0.022498954449231875}, + {-0.023098039760281283, 0.0225030741013136}, + }, + { + {-0.027044781862091364, -0.018626414020815534}, + {-0.023103362294895454, -0.018629805503367396}, + {-0.023099975852028495, -0.02250307224345223}, + {-0.027040789583676325, -0.02249895225902746}, + }, + { + {-0.018629807032689596, -0.023101425908454556}, + {-0.01862641582377898, -0.027042846549750164}, + {-0.022498954449231872, -0.0270388545719163}, + {-0.0225030741013136, -0.023098039760281283}, + }, + }, + { + { + {0.018670176093765572, 0.018792792570979773}, + {0.01866738165634269, 0.02273637949577133}, + {0.020604253071233102, 0.022734791856225036}, + {0.020607345912494586, 0.01879148802066858}, + }, + { + {0.02285725581737714, 0.0227346773210379}, + {0.022860699271749618, 0.018791739995303862}, + {0.020924032152459315, 0.018793199316126}, + {0.02092088999384325, 0.02273645325221995}, + }, + { + {0.018792792570979773, -0.018670176093765572}, + {0.02273637949577133, -0.01866738165634269}, + {0.022734791856225036, -0.020604253071233102}, + {0.01879148802066858, -0.020607345912494586}, + }, + { + {0.0227346773210379, -0.02285725581737714}, + {0.01879173999530386, -0.02286069927174962}, + {0.018793199316126, -0.020924032152459318}, + {0.02273645325221995, -0.02092088999384325}, + }, + { + {-0.018792792570979773, 0.018670176093765572}, + {-0.02273637949577133, 0.01866738165634269}, + {-0.022734791856225036, 0.020604253071233102}, + {-0.01879148802066858, 0.020607345912494586}, + }, + { + {-0.0227346773210379, 0.02285725581737714}, + {-0.018791739995303862, 0.022860699271749618}, + {-0.018793199316126, 0.020924032152459315}, + {-0.02273645325221995, 0.02092088999384325}, + }, + { + {-0.018670176093765572, -0.018792792570979773}, + {-0.01866738165634269, -0.02273637949577133}, + {-0.020604253071233102, -0.022734791856225036}, + {-0.020607345912494586, -0.01879148802066858}, + }, + { + {-0.02285725581737714, -0.0227346773210379}, + {-0.022860699271749618, -0.018791739995303862}, + {-0.020924032152459315, -0.018793199316126}, + {-0.02092088999384325, -0.02273645325221995}, + }, + }, + }; + + std::vector> colors = { + {0.0, 0.3, 1.0, 1.0}, // E2V = BLUE + {0.0, 0.7, 1.0, 1.0}, // ITL = Cyan + {0.0, 1.0, 0.0, 1.0}, // Guider = Green + {1.0, 0.0, 0.0, 1.0}, // WF = Red + }; + + double ra = 200.75 / 57.29577951308232; + double dec = -64.5 / 57.29577951308232; + double alpha = ra + 1.5707963267948966; // ra=0 isn't along x=0? + double beta = 1.5707963267948966 - dec; // polar angle + double rsp = 0.0 / 57.29577951308232; // rotation wrt current North + + double cosBeta = cos(beta); + double sinBeta = sin(beta); + + double cosAlpha = cos(alpha); + double sinAlpha = sin(alpha); + + Vec3d startPoint, endPoint; + + for (size_t iset=0; iset + +//! This is an example of a plug-in which can be dynamically loaded into stellarium +class MosaicCamera : public StelModule +{ +public: + MosaicCamera(); + ~MosaicCamera() override; + + /////////////////////////////////////////////////////////////////////////// + // Methods defined in the StelModule class + void init() override; + void draw(StelCore* core) override; + double getCallOrder(StelModuleActionName actionName) const override; +private: + // Font used for displaying our text + QFont font; +}; + + +#include +#include "StelPluginInterface.hpp" + +//! This class is used by Qt to manage a plug-in interface +class MosaicCameraStelPluginInterface : public QObject, public StelPluginInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID StelPluginInterface_iid) + Q_INTERFACES(StelPluginInterface) +public: + StelModule* getStelModule() const override; + StelPluginInfo getPluginInfo() const override; + //QObjectList getExtensionList() const override { return QObjectList(); } +}; + +#endif /* MOSAICCAMERA_HPP */ diff --git a/src/core/StelApp.cpp b/src/core/StelApp.cpp index f7a415d984092..4e4c2ae6eaa20 100644 --- a/src/core/StelApp.cpp +++ b/src/core/StelApp.cpp @@ -220,6 +220,10 @@ Q_IMPORT_PLUGIN(VtsStelPluginInterface) Q_IMPORT_PLUGIN(OnlineQueriesPluginInterface) #endif +#ifdef USE_STATIC_PLUGIN_MOSAICCAMERA +Q_IMPORT_PLUGIN(MosaicCameraStelPluginInterface) +#endif + // Initialize static variables StelApp* StelApp::singleton = Q_NULLPTR; qint64 StelApp::startMSecs = 0; From 31dce43a735c2ad42b95d97c478780b0590f7300 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 24 Nov 2024 16:21:08 -0300 Subject: [PATCH 02/32] Add MosaicCameraDialog --- plugins/MosaicCamera/src/CMakeLists.txt | 46 ++++---- plugins/MosaicCamera/src/MosaicCamera.cpp | 12 ++- plugins/MosaicCamera/src/MosaicCamera.hpp | 9 ++ .../src/gui/MosaicCameraDialog.cpp | 100 ++++++++++++++++++ .../src/gui/MosaicCameraDialog.hpp | 54 ++++++++++ .../src/gui/mosaicCameraDialog.ui | 83 +++++++++++++++ 6 files changed, 275 insertions(+), 29 deletions(-) create mode 100644 plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp create mode 100644 plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp create mode 100644 plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index d3654cd92b5a4..a3fcbd57ef86a 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -1,40 +1,30 @@ -INCLUDE_DIRECTORIES(.) +INCLUDE_DIRECTORIES( + . + gui + ${CMAKE_BINARY_DIR}/plugins/MosaicCamera/src + ${CMAKE_BINARY_DIR}/plugins/MosaicCamera/src/gui +) LINK_DIRECTORIES(${BUILD_DIR}/src) SET(MosaicCamera_SRCS MosaicCamera.hpp MosaicCamera.cpp + gui/MosaicCameraDialog.hpp + gui/MosaicCameraDialog.cpp ) -SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui) - -############### For building the dynamic library ###################### -IF(BUILD_DYNAMIC_PLUGIN) - ADD_LIBRARY(MosaicCamera MODULE ${MosaicCamera_SRCS}) - IF(APPLE) - FIND_LIBRARY(OPENGL_LIBRARY OpenGL) - MARK_AS_ADVANCED(OPENGL_LIBRARY) - SET_TARGET_PROPERTIES(MosaicCamera PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" SUFFIX ".dylib") - ENDIF() +SET(MosaicCameraDialog_UIS + gui/mosaicCameraDialog.ui +) - IF(WIN32) - SET_TARGET_PROPERTIES(MosaicCamera PROPERTIES LINK_FLAGS "-enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition" ) - SET(StelMain stelMain) - ELSE(WIN32) - SET(StelMain ) - ENDIF(WIN32) +SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) - TARGET_LINK_LIBRARIES(MosaicCamera ${StelMain} ${MosaicCamera_Qt_Libraries}) - INSTALL(TARGETS MosaicCamera DESTINATION "modules/MosaicCamera") -ELSE() -############### For building the static library ###################### - ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS}) - # The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. - SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") - TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) - SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN") - ADD_DEPENDENCIES(AllStaticPlugins MosaicCamera-static) -ENDIF() +ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCameraDialog_UIS_H}) +# The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. +SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") +TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) +SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN") +ADD_DEPENDENCIES(AllStaticPlugins MosaicCamera-static) SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES FOLDER "plugins/MosaicCamera") diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 0e9f4ae479704..413d4c2f8ff87 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -22,6 +22,7 @@ #include "StelLocaleMgr.hpp" #include "StelModuleMgr.hpp" #include "MosaicCamera.hpp" +#include "MosaicCameraDialog.hpp" #include "StelUtils.hpp" #include "StelPainter.hpp" @@ -56,6 +57,7 @@ MosaicCamera::MosaicCamera() { setObjectName("MosaicCamera"); font.setPixelSize(25); + configDialog = new MosaicCameraDialog(); } /************************************************************************* @@ -63,6 +65,7 @@ MosaicCamera::MosaicCamera() *************************************************************************/ MosaicCamera::~MosaicCamera() { + delete configDialog; } /************************************************************************* @@ -1416,4 +1419,11 @@ void MosaicCamera::draw(StelCore* core) } } } -} \ No newline at end of file +} + +bool MosaicCamera::configureGui(bool show) +{ + if (show) + configDialog->setVisible(true); + return true; +} diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index d180550a6c92b..22f61e0d8d90e 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -22,9 +22,13 @@ #include "StelModule.hpp" #include +class MosaicCameraDialog; + //! This is an example of a plug-in which can be dynamically loaded into stellarium class MosaicCamera : public StelModule { + Q_OBJECT + public: MosaicCamera(); ~MosaicCamera() override; @@ -34,9 +38,14 @@ class MosaicCamera : public StelModule void init() override; void draw(StelCore* core) override; double getCallOrder(StelModuleActionName actionName) const override; + + bool configureGui(bool show=true) override; + private: // Font used for displaying our text QFont font; + // GUI + MosaicCameraDialog* configDialog; }; diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp new file mode 100644 index 0000000000000..64c4e16eed870 --- /dev/null +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -0,0 +1,100 @@ +/* + * Mosaic Camera Plug-in GUI + * + * Copyright (C) 2024 Josh Meyers + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. +*/ + +// #include +// #include + +#include "StelApp.hpp" +#include "ui_MosaicCameraDialog.h" +#include "MosaicCameraDialog.hpp" +#include "MosaicCamera.hpp" +#include "StelModuleMgr.hpp" +#include "StelStyle.hpp" +#include "StelGui.hpp" +#include "StelTranslator.hpp" + + +MosaicCameraDialog::MosaicCameraDialog() + : StelDialog("MosaicCamera") + , msm(nullptr) +{ + ui = new Ui_mosaicCameraDialog; +} + +MosaicCameraDialog::~MosaicCameraDialog() +{ + delete ui; +} + +void MosaicCameraDialog::retranslate() +{ + if (dialog) + { + ui->retranslateUi(dialog); + setAboutHtml(); + } +} + +// Initialize the dialog widgets and connect the signals/slots +void MosaicCameraDialog::createDialogContent() +{ + msm = GETSTELMODULE(MosaicCamera); + ui->setupUi(dialog); + ui->tabs->setCurrentIndex(0); + connect(&StelApp::getInstance(), SIGNAL(languageChanged()), + this, SLOT(retranslate())); + + // Kinetic scrolling + kineticScrollingList << ui->aboutTextBrowser; + StelGui* gui= dynamic_cast(StelApp::getInstance().getGui()); + if (gui) + { + enableKineticScrolling(gui->getFlagUseKineticScrolling()); + connect(gui, SIGNAL(flagUseKineticScrollingChanged(bool)), this, SLOT(enableKineticScrolling(bool))); + } + + connect(ui->titleBar, &TitleBar::closeClicked, this, &StelDialog::close); + connect(ui->titleBar, SIGNAL(movedTo(QPoint)), this, SLOT(handleMovedTo(QPoint))); + + // About tab + setAboutHtml(); + if(gui!=nullptr) + ui->aboutTextBrowser->document()->setDefaultStyleSheet(QString(gui->getStelStyle().htmlStyleSheet)); +} + +void MosaicCameraDialog::setAboutHtml(void) +{ + QString html = ""; + html += "

" + q_("Mosaic Camera Plug-in") + "

"; + html += ""; + html += ""; + html += ""; + html += "
" + q_("Version") + ":" + MOSAICCAMERA_PLUGIN_VERSION + "
" + q_("License") + ":" + MOSAICCAMERA_PLUGIN_LICENSE + "
" + q_("Author") + ":Josh Meyers
"; + html += ""; + + StelGui* gui = dynamic_cast(StelApp::getInstance().getGui()); + if(gui!=nullptr) + { + QString htmlStyleSheet(gui->getStelStyle().htmlStyleSheet); + ui->aboutTextBrowser->document()->setDefaultStyleSheet(htmlStyleSheet); + } + + ui->aboutTextBrowser->setHtml(html); +} diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp new file mode 100644 index 0000000000000..4516a32019829 --- /dev/null +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -0,0 +1,54 @@ +/* + * Mosaic Camera Plug-in GUI + * + * Copyright (C) 2024 Josh Meyers + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. +*/ + +#ifndef MOSAICCAMERADIALOG_HPP +#define MOSAICCAMERADIALOG_HPP + +#include +#include "StelDialog.hpp" +#include "MosaicCamera.hpp" + +class Ui_mosaicCameraDialog; +class QTimer; +class MosaicCamera; + +//! @ingroup mosaicCamera +class MosaicCameraDialog : public StelDialog +{ + Q_OBJECT + +public: + MosaicCameraDialog(); + ~MosaicCameraDialog() override; + +protected: + //! Initialize the dialog widgets and connect the signals/slots + void createDialogContent() override; + +public slots: + void retranslate() override; + +private: + MosaicCamera* msm; + Ui_mosaicCameraDialog* ui; + void setAboutHtml(void); +}; + +#endif // MOSAICCAMERADIALOG_HPP diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui new file mode 100644 index 0000000000000..f8613b982f8ca --- /dev/null +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -0,0 +1,83 @@ + + + mosaicCameraDialog + + + + 0 + 0 + 530 + 334 + + + + Mosaic Camera Configuration + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Mosaic Camera Plug-in Configuration + + + + + + + false + + + + About + + + + 9 + + + + + true + + + true + + + + + + + + + + + + TitleBar + QFrame +
Dialog.hpp
+ 1 +
+ + StelCloseButton + QPushButton +
gui/StelCloseButton.hpp
+
+
+ + +
From 85cdd8add0fc851c4b68bc70e6a0799511ad166d Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 24 Nov 2024 17:03:32 -0300 Subject: [PATCH 03/32] Add basic location spinboxes --- plugins/MosaicCamera/src/CMakeLists.txt | 3 +- .../src/gui/mosaicCameraDialog.ui | 45 ++++++++++++++++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index a3fcbd57ef86a..02785bd571dfd 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -20,7 +20,8 @@ SET(MosaicCameraDialog_UIS SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) -ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCameraDialog_UIS_H}) +ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCameraDialog_UIS_H} + gui/mosaicCameraDialog.ui) # The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index f8613b982f8ca..1dfc9d54c99a1 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -31,13 +31,16 @@ - + Mosaic Camera Plug-in Configuration + + 1 + false @@ -61,6 +64,41 @@ + + + Location + + + + + 20 + 10 + 211 + 22 + + + + + + + 20 + 40 + 211 + 22 + + + + + + + 20 + 70 + 211 + 21 + + + + @@ -72,11 +110,6 @@
Dialog.hpp
1 - - StelCloseButton - QPushButton -
gui/StelCloseButton.hpp
-
From 233e3d2e26e6382d8b467847e62ef266f6f8eb0e Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 24 Nov 2024 19:26:05 -0300 Subject: [PATCH 04/32] connect spin boxes --- .../src/gui/MosaicCameraDialog.cpp | 18 ++++++++++++++++-- .../src/gui/MosaicCameraDialog.hpp | 5 ++++- .../MosaicCamera/src/gui/mosaicCameraDialog.ui | 18 ++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 64c4e16eed870..115f568bce315 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -33,7 +33,7 @@ MosaicCameraDialog::MosaicCameraDialog() : StelDialog("MosaicCamera") - , msm(nullptr) + , mc(nullptr) { ui = new Ui_mosaicCameraDialog; } @@ -43,6 +43,15 @@ MosaicCameraDialog::~MosaicCameraDialog() delete ui; } +void MosaicCameraDialog::updateRA(double ra) +{} + +void MosaicCameraDialog::updateDec(double dec) +{} + +void MosaicCameraDialog::updateRot(double rot) +{} + void MosaicCameraDialog::retranslate() { if (dialog) @@ -55,7 +64,7 @@ void MosaicCameraDialog::retranslate() // Initialize the dialog widgets and connect the signals/slots void MosaicCameraDialog::createDialogContent() { - msm = GETSTELMODULE(MosaicCamera); + mc = GETSTELMODULE(MosaicCamera); ui->setupUi(dialog); ui->tabs->setCurrentIndex(0); connect(&StelApp::getInstance(), SIGNAL(languageChanged()), @@ -77,6 +86,11 @@ void MosaicCameraDialog::createDialogContent() setAboutHtml(); if(gui!=nullptr) ui->aboutTextBrowser->document()->setDefaultStyleSheet(QString(gui->getStelStyle().htmlStyleSheet)); + + // Location tab + connect(ui->RASpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRA); + connect(ui->DecSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateDec); + connect(ui->RotSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRot); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 4516a32019829..2b94e2491f331 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -46,9 +46,12 @@ public slots: void retranslate() override; private: - MosaicCamera* msm; + MosaicCamera* mc; Ui_mosaicCameraDialog* ui; void setAboutHtml(void); + void updateRA(double ra); + void updateDec(double ra); + void updateRot(double ra); }; #endif // MOSAICCAMERADIALOG_HPP diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 1dfc9d54c99a1..0fae5df98d12f 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -77,6 +77,12 @@ 22 + + -360.000000000000000 + + + 360.000000000000000 + @@ -87,6 +93,12 @@ 22 + + -90.000000000000000 + + + 90.000000000000000 + @@ -97,6 +109,12 @@ 21 + + -90.000000000000000 + + + 90.000000000000000 + From f835eb8142fafbfe6b8d174e43d12c09e8745c0d Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 24 Nov 2024 19:36:01 -0300 Subject: [PATCH 05/32] connect spinboxes to mosaic --- plugins/MosaicCamera/src/MosaicCamera.cpp | 25 ++++++++++++++----- plugins/MosaicCamera/src/MosaicCamera.hpp | 7 ++++++ .../src/gui/MosaicCameraDialog.cpp | 12 ++++++--- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 413d4c2f8ff87..cb740f56647ee 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -53,7 +53,7 @@ StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const /************************************************************************* Constructor *************************************************************************/ -MosaicCamera::MosaicCamera() +MosaicCamera::MosaicCamera() : ra(0), dec(0), rot(0) { setObjectName("MosaicCamera"); font.setPixelSize(25); @@ -88,6 +88,21 @@ void MosaicCamera::init() } +void MosaicCamera::setRA(double ra) +{ + this->ra = ra; +} + +void MosaicCamera::setDec(double dec) +{ + this->dec = dec; +} + +void MosaicCamera::setRot(double rot) +{ + this->rot = rot; +} + void MosaicCamera::draw(StelCore* core) { // Input parameters for drawing LSSTCam FoV should be: @@ -1352,11 +1367,9 @@ void MosaicCamera::draw(StelCore* core) {1.0, 0.0, 0.0, 1.0}, // WF = Red }; - double ra = 200.75 / 57.29577951308232; - double dec = -64.5 / 57.29577951308232; - double alpha = ra + 1.5707963267948966; // ra=0 isn't along x=0? - double beta = 1.5707963267948966 - dec; // polar angle - double rsp = 0.0 / 57.29577951308232; // rotation wrt current North + double alpha = ra / 57.29577951308232 + 1.5707963267948966; // ra=0 isn't along x=0? + double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle + double rsp = rot / 57.29577951308232; // rotation wrt current North double cosBeta = cos(beta); double sinBeta = sin(beta); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index 22f61e0d8d90e..7b95e74904c95 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -41,7 +41,14 @@ class MosaicCamera : public StelModule bool configureGui(bool show=true) override; + void setRA(double ra); + void setDec(double dec); + void setRot(double rot); + private: + double ra; + double dec; + double rot; // Font used for displaying our text QFont font; // GUI diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 115f568bce315..1efa602f75ea0 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -44,13 +44,19 @@ MosaicCameraDialog::~MosaicCameraDialog() } void MosaicCameraDialog::updateRA(double ra) -{} +{ + mc->setRA(ra); +} void MosaicCameraDialog::updateDec(double dec) -{} +{ + mc->setDec(dec); +} void MosaicCameraDialog::updateRot(double rot) -{} +{ + mc->setRot(rot); +} void MosaicCameraDialog::retranslate() { From 286e65b2d584dd97a4c506f8376dcaa3ee74c905 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 25 Nov 2024 14:29:39 -0300 Subject: [PATCH 06/32] Initial TCP server for Mosaic Camera --- plugins/MosaicCamera/src/CMakeLists.txt | 4 +- plugins/MosaicCamera/src/MosaicCamera.cpp | 104 +++++++++++++++++- plugins/MosaicCamera/src/MosaicCamera.hpp | 7 ++ plugins/MosaicCamera/src/MosaicServer.cpp | 49 +++++++++ plugins/MosaicCamera/src/MosaicTcpServer.cpp | 47 ++++++++ plugins/MosaicCamera/src/MosaicTcpServer.hpp | 25 +++++ .../src/gui/MosaicCameraDialog.cpp | 15 +++ .../src/gui/MosaicCameraDialog.hpp | 3 + 8 files changed, 249 insertions(+), 5 deletions(-) create mode 100644 plugins/MosaicCamera/src/MosaicServer.cpp create mode 100644 plugins/MosaicCamera/src/MosaicTcpServer.cpp create mode 100644 plugins/MosaicCamera/src/MosaicTcpServer.hpp diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index 02785bd571dfd..4d85bfe55005e 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -10,6 +10,8 @@ LINK_DIRECTORIES(${BUILD_DIR}/src) SET(MosaicCamera_SRCS MosaicCamera.hpp MosaicCamera.cpp + MosaicTcpServer.hpp + MosaicTcpServer.cpp gui/MosaicCameraDialog.hpp gui/MosaicCameraDialog.cpp ) @@ -18,7 +20,7 @@ SET(MosaicCameraDialog_UIS gui/mosaicCameraDialog.ui ) -SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) +SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network) ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCameraDialog_UIS_H} gui/mosaicCameraDialog.ui) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index cb740f56647ee..8d5a8d7065eee 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -23,8 +23,10 @@ #include "StelModuleMgr.hpp" #include "MosaicCamera.hpp" #include "MosaicCameraDialog.hpp" +#include "MosaicTcpServer.hpp" #include "StelUtils.hpp" #include "StelPainter.hpp" +#include "CustomObject.hpp" #include @@ -58,6 +60,7 @@ MosaicCamera::MosaicCamera() : ra(0), dec(0), rot(0) setObjectName("MosaicCamera"); font.setPixelSize(25); configDialog = new MosaicCameraDialog(); + tcpServer = new MosaicTcpServer(); } /************************************************************************* @@ -66,6 +69,7 @@ MosaicCamera::MosaicCamera() : ra(0), dec(0), rot(0) MosaicCamera::~MosaicCamera() { delete configDialog; + delete tcpServer; } /************************************************************************* @@ -84,23 +88,55 @@ double MosaicCamera::getCallOrder(StelModuleActionName actionName) const *************************************************************************/ void MosaicCamera::init() { + qDebug() << "\n\n\n\n\n"; qDebug() << "init called for MosaicCamera"; + qDebug() << "Starting TCP server"; + tcpServer->startServer(5772); + connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); + qDebug() << "\n\n\n\n\n"; } void MosaicCamera::setRA(double ra) { this->ra = ra; + if(configDialog->visible()) { + configDialog->setRA(ra); + } } void MosaicCamera::setDec(double dec) { this->dec = dec; + if(configDialog->visible()) { + configDialog->setDec(dec); + } } void MosaicCamera::setRot(double rot) { this->rot = rot; + if(configDialog->visible()) { + configDialog->setRot(rot); + } +} + +void MosaicCamera::updateMosaic(double ra, double dec, double rot) +{ + qDebug() << "Received new values: RA=" << ra << ", Dec=" << dec << ", Rot=" << rot; + setRA(ra); + setDec(dec); + setRot(rot); +} + +float MosaicCamera::getParallacticAngle() const +{ + Vec3d v; + StelUtils::spheToRect(ra, dec, v); + CustomObject obj(QString("test"), v, false); + float q = obj.getParallacticAngle(StelApp::getInstance().getCore()); + qDebug() << "parallactic angle = " << q; + return q; } void MosaicCamera::draw(StelCore* core) @@ -115,8 +151,8 @@ void MosaicCamera::draw(StelCore* core) // Gonna be some projection, but assume rectilinear for current test. // const StelProjectorP prj = core->getProjection(StelCore::FrameAltAz); - // const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); - const StelProjectorP prj = core->getProjection(StelCore::FrameEquinoxEqu); + const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); + // const StelProjectorP prj = core->getProjection(StelCore::FrameEquinoxEqu); StelPainter painter(prj); std::vector>> polygon_sets = { @@ -1358,18 +1394,78 @@ void MosaicCamera::draw(StelCore* core) {-0.02092088999384325, -0.02273645325221995}, }, }, + { + { + {0.006039247055728695, 0.006083860090025068}, + {0.0060394216941745, 0.0021114213952493793}, + {0.002156096593543867, 0.00211148100951192}, + {0.0021560343201107073, 0.006084032069300254}, + }, + { + {0.006039424442582142, 0.0019863082155786456}, + {0.006039424442582142, -0.0019863082155786456}, + {0.002156097573583869, -0.0019863642963111844}, + {0.002156097573583869, 0.0019863642963111844}, + }, + { + {0.0060394216941745, -0.0021114213952493793}, + {0.006039247055728695, -0.006083860090025068}, + {0.0021560343201107073, -0.006084032069300254}, + {0.002156096593543867, -0.00211148100951192}, + }, + { + {0.001941693240714674, 0.006084036812688888}, + {0.001941749321447213, 0.0021114826537415496}, + {-0.001941749321447213, 0.0021114826537415496}, + {-0.001941693240714674, 0.006084036812688888}, + }, + { + {0.0019417502040283943, 0.0019863658430819935}, + {0.0019417502040283943, -0.0019863658430819935}, + {-0.0019417502040283943, -0.0019863658430819935}, + {-0.0019417502040283943, 0.0019863658430819935}, + }, + { + {0.001941749321447213, -0.0021114826537415496}, + {0.001941693240714674, -0.006084036812688887}, + {-0.001941693240714674, -0.006084036812688887}, + {-0.001941749321447213, -0.0021114826537415496}, + }, + { + {-0.0021560343201107073, 0.006084032069300254}, + {-0.002156096593543867, 0.00211148100951192}, + {-0.0060394216941745, 0.0021114213952493793}, + {-0.006039247055728695, 0.006083860090025068}, + }, + { + {-0.002156097573583869, 0.0019863642963111844}, + {-0.002156097573583869, -0.0019863642963111844}, + {-0.006039424442582142, -0.0019863082155786456}, + {-0.006039424442582142, 0.0019863082155786456}, + }, + { + {-0.002156096593543867, -0.00211148100951192}, + {-0.0021560343201107073, -0.006084032069300254}, + {-0.006039247055728695, -0.006083860090025068}, + {-0.0060394216941745, -0.0021114213952493793}, + }, + }, }; std::vector> colors = { {0.0, 0.3, 1.0, 1.0}, // E2V = BLUE {0.0, 0.7, 1.0, 1.0}, // ITL = Cyan - {0.0, 1.0, 0.0, 1.0}, // Guider = Green + {0.0, 1.0, 0.0, 1.0}, // Guider = Green {1.0, 0.0, 0.0, 1.0}, // WF = Red + {1.0, 1.0, 1.0, 1.0}, // ComCam = White }; double alpha = ra / 57.29577951308232 + 1.5707963267948966; // ra=0 isn't along x=0? double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle - double rsp = rot / 57.29577951308232; // rotation wrt current North + double rtp = rot / 57.29577951308232; // rotation wrt current North + double rsp = rtp + getParallacticAngle(); + qDebug() << "rsp = " << rsp; + qDebug() << "rtp = " << rtp; double cosBeta = cos(beta); double sinBeta = sin(beta); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index 7b95e74904c95..d878b50256fec 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -20,6 +20,7 @@ #define MOSAICCAMERA_HPP #include "StelModule.hpp" +#include "MosaicTcpServer.hpp" #include class MosaicCameraDialog; @@ -45,14 +46,20 @@ class MosaicCamera : public StelModule void setDec(double dec); void setRot(double rot); +public slots: + void updateMosaic(double ra, double dec, double rot); // Slot to update mosaic with received values + private: double ra; double dec; double rot; + + float getParallacticAngle() const; // Font used for displaying our text QFont font; // GUI MosaicCameraDialog* configDialog; + MosaicTcpServer* tcpServer; }; diff --git a/plugins/MosaicCamera/src/MosaicServer.cpp b/plugins/MosaicCamera/src/MosaicServer.cpp new file mode 100644 index 0000000000000..1eb4977b7b504 --- /dev/null +++ b/plugins/MosaicCamera/src/MosaicServer.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +#include + +class MosaicTcpServer : public QTcpServer { + Q_OBJECT + +public: + MosaicTcpServer(QObject *parent = nullptr) : QTcpServer(parent) { + connect(this, &QTcpServer::newConnection, this, &MosaicTcpServer::onNewConnection); + } + + void startServer(quint16 port) { + if (!this->listen(QHostAddress::Any, port)) { + qDebug() << "Server failed to start: " << this->errorString(); + } else { + qDebug() << "Server started on port" << port; + } + } + +private slots: + void onNewConnection() { + QTcpSocket *client = this->nextPendingConnection(); + connect(client, &QTcpSocket::readyRead, this, [client, this]() { + QByteArray data = client->readAll(); + QString message(data); + + // Parse RA, Dec, and rotation + QStringList params = message.split(','); + if (params.size() == 3) { + bool ok1, ok2, ok3; + double ra = params[0].toDouble(&ok1); + double dec = params[1].toDouble(&ok2); + double rot = params[2].toDouble(&ok3); + + if (ok1 && ok2 && ok3) { + // Update plugin settings + emit newValuesReceived(ra, dec, rot); + } + } + }); + + connect(client, &QTcpSocket::disconnected, client, &QTcpSocket::deleteLater); + } + +signals: + void newValuesReceived(double ra, double dec, double rot); +}; diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.cpp b/plugins/MosaicCamera/src/MosaicTcpServer.cpp new file mode 100644 index 0000000000000..028cde656b373 --- /dev/null +++ b/plugins/MosaicCamera/src/MosaicTcpServer.cpp @@ -0,0 +1,47 @@ +#include "MosaicTcpServer.hpp" +#include +#include + +MosaicTcpServer::MosaicTcpServer(QObject *parent) : QTcpServer(parent) +{ + connect(this, &MosaicTcpServer::newConnection, this, &MosaicTcpServer::onNewConnection); +} + +void MosaicTcpServer::startServer(quint16 port) +{ + if (!this->listen(QHostAddress::Any, port)) { + qDebug() << "Server failed to start: " << this->errorString(); + } else { + qDebug() << "Server started on port" << port; + } +} + +void MosaicTcpServer::onNewConnection() +{ + QTcpSocket *client = this->nextPendingConnection(); + connect(client, &QTcpSocket::readyRead, this, [this, client]() { + processClientData(client); + }); + + connect(client, &QTcpSocket::disconnected, client, &QTcpSocket::deleteLater); +} + +void MosaicTcpServer::processClientData(QTcpSocket *client) +{ + QByteArray data = client->readAll(); + QString message(data); + + // Parse RA, Dec, and rotation + QStringList params = message.split(','); + if (params.size() == 3) { + bool ok1, ok2, ok3; + double ra = params[0].toDouble(&ok1); + double dec = params[1].toDouble(&ok2); + double rot = params[2].toDouble(&ok3); + + if (ok1 && ok2 && ok3) { + // Emit the parsed values to be processed elsewhere + emit newValuesReceived(ra, dec, rot); + } + } +} diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.hpp b/plugins/MosaicCamera/src/MosaicTcpServer.hpp new file mode 100644 index 0000000000000..266e45678c93b --- /dev/null +++ b/plugins/MosaicCamera/src/MosaicTcpServer.hpp @@ -0,0 +1,25 @@ +#ifndef MOSAICTCPSERVER_HPP +#define MOSAICTCPSERVER_HPP + +#include +#include + +class MosaicTcpServer : public QTcpServer +{ + Q_OBJECT + +public: + explicit MosaicTcpServer(QObject *parent = nullptr); + void startServer(quint16 port); + +signals: + void newValuesReceived(double ra, double dec, double rot); + +private slots: + void onNewConnection(); + +private: + void processClientData(QTcpSocket *client); +}; + +#endif // MOSAICTCPSERVER_HPP diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 1efa602f75ea0..f110ecff05717 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -58,6 +58,21 @@ void MosaicCameraDialog::updateRot(double rot) mc->setRot(rot); } +void MosaicCameraDialog::setRA(double ra) +{ + ui->RASpinBox->setValue(ra); +} + +void MosaicCameraDialog::setDec(double dec) +{ + ui->DecSpinBox->setValue(dec); +} + +void MosaicCameraDialog::setRot(double rot) +{ + ui->RotSpinBox->setValue(rot); +} + void MosaicCameraDialog::retranslate() { if (dialog) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 2b94e2491f331..f9afe95fac3f2 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -37,6 +37,9 @@ class MosaicCameraDialog : public StelDialog public: MosaicCameraDialog(); ~MosaicCameraDialog() override; + void setRA(double ra); + void setDec(double dec); + void setRot(double rot); protected: //! Initialize the dialog widgets and connect the signals/slots From 5944b34efaec6116fe617bd17908272930c4bafc Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Wed, 27 Nov 2024 20:50:53 -0300 Subject: [PATCH 07/32] remove debug statements --- plugins/MosaicCamera/src/MosaicCamera.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 8d5a8d7065eee..64a373177549f 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -135,7 +135,6 @@ float MosaicCamera::getParallacticAngle() const StelUtils::spheToRect(ra, dec, v); CustomObject obj(QString("test"), v, false); float q = obj.getParallacticAngle(StelApp::getInstance().getCore()); - qDebug() << "parallactic angle = " << q; return q; } @@ -1464,8 +1463,6 @@ void MosaicCamera::draw(StelCore* core) double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle double rtp = rot / 57.29577951308232; // rotation wrt current North double rsp = rtp + getParallacticAngle(); - qDebug() << "rsp = " << rsp; - qDebug() << "rtp = " << rtp; double cosBeta = cos(beta); double sinBeta = sin(beta); From 4d25efc4617e651d97e2464ade37c2268d00a53b Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 1 Dec 2024 13:19:46 -0300 Subject: [PATCH 08/32] Use RSP --- plugins/MosaicCamera/src/MosaicCamera.cpp | 39 ++++++++----------- plugins/MosaicCamera/src/MosaicCamera.hpp | 6 +-- .../src/gui/MosaicCameraDialog.cpp | 10 ++--- .../src/gui/MosaicCameraDialog.hpp | 6 +-- .../src/gui/mosaicCameraDialog.ui | 2 +- 5 files changed, 28 insertions(+), 35 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 64a373177549f..40c85928e06e0 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -55,7 +55,7 @@ StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const /************************************************************************* Constructor *************************************************************************/ -MosaicCamera::MosaicCamera() : ra(0), dec(0), rot(0) +MosaicCamera::MosaicCamera() : ra(0), dec(0), rsp(0) { setObjectName("MosaicCamera"); font.setPixelSize(25); @@ -113,20 +113,20 @@ void MosaicCamera::setDec(double dec) } } -void MosaicCamera::setRot(double rot) +void MosaicCamera::setRSP(double rsp) { - this->rot = rot; + this->rsp = rsp; if(configDialog->visible()) { - configDialog->setRot(rot); + configDialog->setRSP(rsp); } } -void MosaicCamera::updateMosaic(double ra, double dec, double rot) +void MosaicCamera::updateMosaic(double ra, double dec, double rsp) { - qDebug() << "Received new values: RA=" << ra << ", Dec=" << dec << ", Rot=" << rot; + qDebug() << "Received new values: RA=" << ra << ", Dec=" << dec << ", RSP=" << rsp; setRA(ra); setDec(dec); - setRot(rot); + setRSP(rsp); } float MosaicCamera::getParallacticAngle() const @@ -140,18 +140,12 @@ float MosaicCamera::getParallacticAngle() const void MosaicCamera::draw(StelCore* core) { - // Input parameters for drawing LSSTCam FoV should be: - // altitude - // azimuth - // rottelpos - // Let's start by assuming RTP=0 - // Center at alt=45 az=180 - // Need 12-point star coordinates. - // Gonna be some projection, but assume rectilinear for current test. + // Input parameters for drawing LSSTCam FoV are be: + // ra + // dec + // rotskypos - // const StelProjectorP prj = core->getProjection(StelCore::FrameAltAz); const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); - // const StelProjectorP prj = core->getProjection(StelCore::FrameEquinoxEqu); StelPainter painter(prj); std::vector>> polygon_sets = { @@ -1461,8 +1455,7 @@ void MosaicCamera::draw(StelCore* core) double alpha = ra / 57.29577951308232 + 1.5707963267948966; // ra=0 isn't along x=0? double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle - double rtp = rot / 57.29577951308232; // rotation wrt current North - double rsp = rtp + getParallacticAngle(); + double rot = rsp / 57.29577951308232; // rotation angle double cosBeta = cos(beta); double sinBeta = sin(beta); @@ -1488,10 +1481,10 @@ void MosaicCamera::draw(StelCore* core) // Apply camera rotator - double r1x = cos(rsp) * p1[0] + sin(rsp) * p1[1]; - double r1y = -sin(rsp) * p1[0] + cos(rsp) * p1[1]; - double r2x = cos(rsp) * p2[0] + sin(rsp) * p2[1]; - double r2y = -sin(rsp) * p2[0] + cos(rsp) * p2[1]; + double r1x = cos(rot) * p1[0] + sin(rot) * p1[1]; + double r1y = -sin(rot) * p1[0] + cos(rot) * p1[1]; + double r2x = cos(rot) * p2[0] + sin(rot) * p2[1]; + double r2y = -sin(rot) * p2[0] + cos(rot) * p2[1]; double r1z = 1.0; double r2z = 1.0; diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index d878b50256fec..d88d8e3ec3aa8 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -44,15 +44,15 @@ class MosaicCamera : public StelModule void setRA(double ra); void setDec(double dec); - void setRot(double rot); + void setRSP(double rsp); public slots: - void updateMosaic(double ra, double dec, double rot); // Slot to update mosaic with received values + void updateMosaic(double ra, double dec, double rsp); // Slot to update mosaic with received values private: double ra; double dec; - double rot; + double rsp; float getParallacticAngle() const; // Font used for displaying our text diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index f110ecff05717..8fbc53d749821 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -53,9 +53,9 @@ void MosaicCameraDialog::updateDec(double dec) mc->setDec(dec); } -void MosaicCameraDialog::updateRot(double rot) +void MosaicCameraDialog::updateRSP(double rsp) { - mc->setRot(rot); + mc->setRSP(rsp); } void MosaicCameraDialog::setRA(double ra) @@ -68,9 +68,9 @@ void MosaicCameraDialog::setDec(double dec) ui->DecSpinBox->setValue(dec); } -void MosaicCameraDialog::setRot(double rot) +void MosaicCameraDialog::setRSP(double rsp) { - ui->RotSpinBox->setValue(rot); + ui->RSPSpinBox->setValue(rsp); } void MosaicCameraDialog::retranslate() @@ -111,7 +111,7 @@ void MosaicCameraDialog::createDialogContent() // Location tab connect(ui->RASpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRA); connect(ui->DecSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateDec); - connect(ui->RotSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRot); + connect(ui->RSPSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRSP); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index f9afe95fac3f2..8c1766ae0c772 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -39,7 +39,7 @@ class MosaicCameraDialog : public StelDialog ~MosaicCameraDialog() override; void setRA(double ra); void setDec(double dec); - void setRot(double rot); + void setRSP(double rsp); protected: //! Initialize the dialog widgets and connect the signals/slots @@ -53,8 +53,8 @@ public slots: Ui_mosaicCameraDialog* ui; void setAboutHtml(void); void updateRA(double ra); - void updateDec(double ra); - void updateRot(double ra); + void updateDec(double dec); + void updateRSP(double rsp); }; #endif // MOSAICCAMERADIALOG_HPP diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 0fae5df98d12f..6acff93486908 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -100,7 +100,7 @@ 90.000000000000000 - + 20 From 53ae87e3296a853b7a99816128670f3a4df1ba70 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 1 Dec 2024 13:33:37 -0300 Subject: [PATCH 09/32] cleanup --- plugins/MosaicCamera/src/MosaicCamera.cpp | 10 ---------- plugins/MosaicCamera/src/MosaicCamera.hpp | 5 ----- 2 files changed, 15 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 40c85928e06e0..4cb1d22f60c21 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -58,7 +58,6 @@ StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const MosaicCamera::MosaicCamera() : ra(0), dec(0), rsp(0) { setObjectName("MosaicCamera"); - font.setPixelSize(25); configDialog = new MosaicCameraDialog(); tcpServer = new MosaicTcpServer(); } @@ -129,15 +128,6 @@ void MosaicCamera::updateMosaic(double ra, double dec, double rsp) setRSP(rsp); } -float MosaicCamera::getParallacticAngle() const -{ - Vec3d v; - StelUtils::spheToRect(ra, dec, v); - CustomObject obj(QString("test"), v, false); - float q = obj.getParallacticAngle(StelApp::getInstance().getCore()); - return q; -} - void MosaicCamera::draw(StelCore* core) { // Input parameters for drawing LSSTCam FoV are be: diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index d88d8e3ec3aa8..f887c94c4f659 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -21,7 +21,6 @@ #include "StelModule.hpp" #include "MosaicTcpServer.hpp" -#include class MosaicCameraDialog; @@ -54,9 +53,6 @@ public slots: double dec; double rsp; - float getParallacticAngle() const; - // Font used for displaying our text - QFont font; // GUI MosaicCameraDialog* configDialog; MosaicTcpServer* tcpServer; @@ -75,7 +71,6 @@ class MosaicCameraStelPluginInterface : public QObject, public StelPluginInterfa public: StelModule* getStelModule() const override; StelPluginInfo getPluginInfo() const override; - //QObjectList getExtensionList() const override { return QObjectList(); } }; #endif /* MOSAICCAMERA_HPP */ From 5d822c63d28dd859aa71ffc8596c3014e8a6ded7 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 1 Dec 2024 23:02:56 -0300 Subject: [PATCH 10/32] Use json for mosaic layout --- plugins/MosaicCamera/src/CMakeLists.txt | 20 +- plugins/MosaicCamera/src/MosaicCamera.cpp | 1407 ++------------------- plugins/MosaicCamera/src/MosaicCamera.hpp | 14 + 3 files changed, 112 insertions(+), 1329 deletions(-) diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index 4d85bfe55005e..eac630783e796 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -20,11 +20,23 @@ SET(MosaicCameraDialog_UIS gui/mosaicCameraDialog.ui ) -SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network) +SET(MosaicCamera_RES ../resources/MosaicCamera.qrc) +QT5_ADD_RESOURCES(MosaicCamera_RES_RCC ${MosaicCamera_RES}) + +SET(MosaicCamera_Qt_Libraries + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Network +) + +ADD_LIBRARY(MosaicCamera-static STATIC + ${MosaicCamera_SRCS} + ${MosaicCameraDialog_UIS_H} + ${MosaicCamera_RES_RCC} + gui/mosaicCameraDialog.ui +) -ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCameraDialog_UIS_H} - gui/mosaicCameraDialog.ui) -# The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN") diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 4cb1d22f60c21..463b5d3db6525 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -29,6 +29,11 @@ #include "CustomObject.hpp" #include +#include +#include +#include +#include +#include /************************************************************************* This method is the one called automatically by the StelModuleMgr just @@ -87,15 +92,72 @@ double MosaicCamera::getCallOrder(StelModuleActionName actionName) const *************************************************************************/ void MosaicCamera::init() { - qDebug() << "\n\n\n\n\n"; - qDebug() << "init called for MosaicCamera"; + Q_INIT_RESOURCE(MosaicCamera); + qDebug() << "Starting TCP server"; tcpServer->startServer(5772); connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); - qDebug() << "\n\n\n\n\n"; + + qDebug() << "Loading Rubin json"; + polygon_sets = MosaicCamera::readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); } +QVector MosaicCamera::readPolygonSetsFromJson(const QString& filename) +{ + QVector polygonSets; + + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) { + qWarning() << "Couldn't open file:" << file.errorString(); + return polygonSets; + } + + QByteArray saveData = file.readAll(); + QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); + QJsonArray jsonArray = loadDoc.array(); + + for (int i = 0; i < jsonArray.size(); ++i) { + QJsonObject setObject = jsonArray[i].toObject(); + PolygonSet set; + + // Read name + set.name = setObject["name"].toString(); + + // Read corners + QJsonArray cornersArray = setObject["corners"].toArray(); + for (int j = 0; j < cornersArray.size(); ++j) { + QVector polygon; + QJsonArray polygonArray = cornersArray[j].toArray(); + for (int k = 0; k < polygonArray.size(); ++k) { + QJsonArray pointArray = polygonArray[k].toArray(); + if (pointArray.size() == 2) { + QPointF point(pointArray[0].toDouble(), pointArray[1].toDouble()); + polygon.append(point); + } + } + set.corners.append(polygon); + } + + // Read color + QJsonObject colorObject = setObject["color"].toObject(); + set.colorComment = colorObject["comment"].toString(); + QJsonArray colorArray = colorObject["value"].toArray(); + if (colorArray.size() == 4) { + set.color = QColor::fromRgbF( + colorArray[0].toDouble(), + colorArray[1].toDouble(), + colorArray[2].toDouble(), + colorArray[3].toDouble() + ); + } + + polygonSets.append(set); + } + + return polygonSets; +} + void MosaicCamera::setRA(double ra) { this->ra = ra; @@ -130,7 +192,7 @@ void MosaicCamera::updateMosaic(double ra, double dec, double rsp) void MosaicCamera::draw(StelCore* core) { - // Input parameters for drawing LSSTCam FoV are be: + // Input parameters for drawing LSSTCam FoV are: // ra // dec // rotskypos @@ -138,1310 +200,6 @@ void MosaicCamera::draw(StelCore* core) const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); StelPainter painter(prj); - std::vector>> polygon_sets = { - { - { - {0.01834639524087756, 0.018390984144617213}, - {0.018348563965375937, 0.014422337724567962}, - {0.014468595819035656, 0.014423996515432115}, - {0.014466893578866316, 0.018393109419810403}, - }, - { - {0.01834862360101588, 0.014297326616356644}, - {0.01835024418533624, 0.010327405350145383}, - {0.014469914605645683, 0.010328588781031817}, - {0.014468642626776773, 0.014298970814159609}, - }, - { - {0.018350286658806923, 0.0102023599361032}, - {0.018351364887380126, 0.0062315328436198065}, - {0.014470794220642742, 0.00623224515553648}, - {0.014469947942337653, 0.010203528928313284}, - }, - { - {0.014252727585516255, 0.018393211840565905}, - {0.014254404250569156, 0.014424076454612796}, - {0.010373195550631677, 0.01442531596623177}, - {0.010371979652495306, 0.018394799957636328}, - }, - { - {0.014254450355028656, 0.014299050050058677}, - {0.014255703222047668, 0.010328645811539366}, - {0.010374137536520715, 0.010329530102731228}, - {0.010373228984782467, 0.014300278656531301}, - }, - { - {0.014255736057833323, 0.010203585262996875}, - {0.014256569620013483, 0.0062322794822355235}, - {0.010374765823008924, 0.0062328117353223364}, - {0.01037416134816802, 0.010204458764888024}, - }, - { - {0.01015775488371211, 0.01839487290337595}, - {0.010158945477297968, 0.014425372899280503}, - {0.0062768553411847935, 0.01442619757620982}, - {0.006276121427892352, 0.018395929530573393}, - }, - { - {0.010158978215624798, 0.014300335088673717}, - {0.010159867858537498, 0.010329570719589712}, - {0.006277423915951641, 0.010330159053409062}, - {0.006276875521843277, 0.014301152509832323}, - }, - { - {0.010159891174608984, 0.010204498886170692}, - {0.010160483068807747, 0.006232836182421245}, - {0.006277803141585748, 0.006233190296766815}, - {0.006277438288396498, 0.010205080041525774}, - }, - { - {0.01835139522539771, 0.006082226567808942}, - {0.01835193177960031, 0.0021108551531774647}, - {0.014471239158501572, 0.002111096136705617}, - {0.014470818032167652, 0.0060829217661185885}, - }, - { - {0.01835194022378369, 0.0019857755364457654}, - {0.01835194022378369, -0.0019857755364457654}, - {0.014471245786086306, -0.001986002236139165}, - {0.014471245786086306, 0.001986002236139165}, - }, - { - {0.01835193177960031, -0.0021108551531774647}, - {0.01835139522539771, -0.006082226567808942}, - {0.014470818032167652, -0.006082921766118588}, - {0.014471239158501572, -0.002111096136705617}, - }, - { - {0.014256593073741726, 0.006082955268098344}, - {0.014257007872092066, 0.0021111077497989682}, - {0.010375083628618163, 0.002111287816367708}, - {0.010374782830894679, 0.006083474733427027}, - }, - { - {0.014257014400087666, 0.0019860131608882836}, - {0.014257014400087666, -0.0019860131608882836}, - {0.010375088362489994, -0.0019861825543446916}, - {0.010375088362489994, 0.0019861825543446916}, - }, - { - {0.014257007872092066, -0.0021111077497989682}, - {0.014256593073741726, -0.006082955268098343}, - {0.010374782830894679, -0.006083474733427027}, - {0.010375083628618163, -0.002111287816367708}, - }, - { - {0.010160499722713452, 0.006083498593164215}, - {0.010160794259994917, 0.002111296087048672}, - {0.006277994964096426, 0.0021114158870443253}, - {0.0062778134072951275, 0.006083844199592513}, - }, - { - {0.010160798895341201, 0.0019861903347961037}, - {0.010160798895341201, -0.0019861903347961037}, - {0.006277997821383259, -0.001986303033862647}, - {0.006277997821383259, 0.001986303033862647}, - }, - { - {0.010160794259994917, -0.002111296087048672}, - {0.010160499722713452, -0.006083498593164215}, - {0.0062778134072951275, -0.006083844199592512}, - {0.006277994964096426, -0.0021114158870443253}, - }, - { - {0.018351364887380126, -0.006231532843619808}, - {0.01835028665880692, -0.0102023599361032}, - {0.014469947942337653, -0.010203528928313286}, - {0.014470794220642742, -0.006232245155536482}, - }, - { - {0.01835024418533624, -0.010327405350145384}, - {0.01834862360101588, -0.014297326616356645}, - {0.014468642626776771, -0.014298970814159609}, - {0.014469914605645683, -0.010328588781031819}, - }, - { - {0.018348563965375937, -0.014422337724567967}, - {0.01834639524087756, -0.018390984144617217}, - {0.014466893578866316, -0.018393109419810403}, - {0.014468595819035656, -0.014423996515432119}, - }, - { - {0.014256569620013483, -0.006232279482235525}, - {0.014255736057833323, -0.010203585262996875}, - {0.01037416134816802, -0.010204458764888026}, - {0.010374765823008924, -0.006232811735322338}, - }, - { - {0.014255703222047668, -0.010328645811539368}, - {0.014254450355028656, -0.014299050050058678}, - {0.01037322898478247, -0.014300278656531305}, - {0.010374137536520717, -0.01032953010273123}, - }, - { - {0.014254404250569156, -0.0144240764546128}, - {0.014252727585516257, -0.018393211840565908}, - {0.010371979652495306, -0.01839479995763633}, - {0.010373195550631677, -0.014425315966231771}, - }, - { - {0.010160483068807747, -0.006232836182421247}, - {0.010159891174608984, -0.010204498886170692}, - {0.006277438288396498, -0.010205080041525776}, - {0.006277803141585747, -0.0062331902967668155}, - }, - { - {0.010159867858537498, -0.010329570719589714}, - {0.010158978215624798, -0.01430033508867372}, - {0.006276875521843276, -0.014301152509832325}, - {0.00627742391595164, -0.010330159053409064}, - }, - { - {0.010158945477297968, -0.014425372899280507}, - {0.01015775488371211, -0.018394872903375957}, - {0.006276121427892352, -0.018395929530573396}, - {0.006276855341184793, -0.01442619757620982}, - }, - { - {0.01834630324429571, -0.0185401670710437}, - {0.018343575355022016, -0.02250715118453407}, - {0.014464680187159708, -0.022509768008202775}, - {0.014466821369616143, -0.018542310013847617}, - }, - { - {0.018343480591644513, -0.022632057842028992}, - {0.018340187157559123, -0.026597002013033385}, - {0.014462020637791272, -0.0266001167637938}, - {0.014464605804237852, -0.02263468972328368}, - }, - { - {0.018340074410604857, -0.02672183822165426}, - {0.01833620386284607, -0.030684344320173487}, - {0.014458893864271287, -0.030687967926225586}, - {0.014461932136181225, -0.026724968338770333}, - }, - { - {0.014252656461128542, -0.018542413286083914}, - {0.014250547446155577, -0.022509894119308326}, - {0.010370398612233475, -0.022511849595428866}, - {0.010371928073488725, -0.01854401460661982}, - }, - { - {0.014250474180658505, -0.022634816560110016}, - {0.014247927848186109, -0.026600266873691495}, - {0.010368498834261481, -0.026602594503908134}, - {0.010370345479436448, -0.022636783289942043}, - }, - { - {0.014247840675967266, -0.02672511918930413}, - {0.014244848039605362, -0.030688142562809186}, - {0.010366265246585266, -0.030690850547307455}, - {0.010368435614681508, -0.026727458304923533}, - }, - { - {0.010157704378118132, -0.018544088158849437}, - {0.010156206745839209, -0.02251193941573198}, - {0.006275167103373632, -0.022513240482256426}, - {0.006276090294741015, -0.018545153571375157}, - }, - { - {0.010156154718742394, -0.022636873627190267}, - {0.010154346501492911, -0.026602701419583603}, - {0.006274020368984192, -0.026604250129442005}, - {0.0062751350318891045, -0.022638182182090898}, - }, - { - {0.010154284597452403, -0.02672756574820511}, - {0.010152159391313921, -0.030690974935676803}, - {0.006272672117393783, -0.030692776761040205}, - {0.00627398220836615, -0.026729122101052574}, - }, - { - {0.006037619549417504, 0.018395978113232424}, - {0.00603832549707651, 0.014426235493818407}, - {0.0021557057048326275, 0.014426645870802968}, - {0.002155453971955117, 0.01839650391808566}, - }, - { - {0.006038344908749775, 0.01430119009382394}, - {0.006038872406166657, 0.010330186104141196}, - {0.0021559007254518506, 0.010330478869776479}, - {0.0021557126267949113, 0.014301596860086078}, - }, - { - {0.0060388862309433715, 0.010205106762199627}, - {0.006039237181201076, 0.006233206578381133}, - {0.0021560307990007425, 0.006233382791353023}, - {0.0021559056551756824, 0.010205395955651689}, - }, - { - {0.0019411706044281688, 0.018396518420487337}, - {0.0019413973041215685, 0.01442665718951877}, - {-0.0019413973041215685, 0.01442665718951877}, - {-0.0019411706044281688, 0.018396518420487337}, - }, - { - {0.0019414035377396204, 0.014301608079212748}, - {0.0019415729311960284, 0.010330486944605442}, - {-0.0019415729311960284, 0.010330486944605442}, - {-0.0019414035377396204, 0.014301608079212748}, - }, - { - {0.0019415773706903084, 0.010205403931955102}, - {0.0019416900697568516, 0.00623338765151213}, - {-0.0019416900697568516, 0.00623338765151213}, - {-0.0019415773706903084, 0.010205403931955102}, - }, - { - {-0.002155453971955117, 0.01839650391808566}, - {-0.0021557057048326275, 0.014426645870802968}, - {-0.00603832549707651, 0.014426235493818407}, - {-0.006037619549417504, 0.018395978113232424}, - }, - { - {-0.0021557126267949113, 0.014301596860086078}, - {-0.0021559007254518506, 0.010330478869776479}, - {-0.006038872406166657, 0.010330186104141196}, - {-0.006038344908749775, 0.01430119009382394}, - }, - { - {-0.0021559056551756824, 0.010205395955651689}, - {-0.0021560307990007425, 0.006233382791353023}, - {-0.006039237181201076, 0.006233206578381133}, - {-0.0060388862309433715, 0.010205106762199627}, - }, - { - {0.006039247055728695, 0.006083860090025068}, - {0.0060394216941745, 0.0021114213952493793}, - {0.002156096593543867, 0.00211148100951192}, - {0.0021560343201107073, 0.006084032069300254}, - }, - { - {0.006039424442582142, 0.0019863082155786456}, - {0.006039424442582142, -0.0019863082155786456}, - {0.002156097573583869, -0.0019863642963111844}, - {0.002156097573583869, 0.0019863642963111844}, - }, - { - {0.0060394216941745, -0.0021114213952493793}, - {0.006039247055728695, -0.006083860090025068}, - {0.0021560343201107073, -0.006084032069300254}, - {0.002156096593543867, -0.00211148100951192}, - }, - { - {0.001941693240714674, 0.006084036812688888}, - {0.001941749321447213, 0.0021114826537415496}, - {-0.001941749321447213, 0.0021114826537415496}, - {-0.001941693240714674, 0.006084036812688888}, - }, - { - {0.0019417502040283943, 0.0019863658430819935}, - {0.0019417502040283943, -0.0019863658430819935}, - {-0.0019417502040283943, -0.0019863658430819935}, - {-0.0019417502040283943, 0.0019863658430819935}, - }, - { - {0.001941749321447213, -0.0021114826537415496}, - {0.001941693240714674, -0.006084036812688887}, - {-0.001941693240714674, -0.006084036812688887}, - {-0.001941749321447213, -0.0021114826537415496}, - }, - { - {-0.0021560343201107073, 0.006084032069300254}, - {-0.002156096593543867, 0.00211148100951192}, - {-0.0060394216941745, 0.0021114213952493793}, - {-0.006039247055728695, 0.006083860090025068}, - }, - { - {-0.002156097573583869, 0.0019863642963111844}, - {-0.002156097573583869, -0.0019863642963111844}, - {-0.006039424442582142, -0.0019863082155786456}, - {-0.006039424442582142, 0.0019863082155786456}, - }, - { - {-0.002156096593543867, -0.00211148100951192}, - {-0.0021560343201107073, -0.006084032069300254}, - {-0.006039247055728695, -0.006083860090025068}, - {-0.0060394216941745, -0.0021114213952493793}, - }, - { - {0.006039237181201076, -0.0062332065783811345}, - {0.006038886230943371, -0.010205106762199628}, - {0.0021559056551756824, -0.01020539595565169}, - {0.0021560307990007425, -0.006233382791353025}, - }, - { - {0.006038872406166657, -0.010330186104141197}, - {0.006038344908749775, -0.014301190093823942}, - {0.0021557126267949113, -0.014301596860086082}, - {0.0021559007254518506, -0.01033047886977648}, - }, - { - {0.006038325497076511, -0.014426235493818412}, - {0.006037619549417504, -0.018395978113232427}, - {0.0021554539719551165, -0.018396503918085665}, - {0.0021557057048326275, -0.014426645870802971}, - }, - { - {0.0019416900697568516, -0.0062333876515121315}, - {0.0019415773706903084, -0.010205403931955103}, - {-0.0019415773706903084, -0.010205403931955103}, - {-0.0019416900697568516, -0.0062333876515121315}, - }, - { - {0.0019415729311960282, -0.010330486944605442}, - {0.0019414035377396206, -0.014301608079212751}, - {-0.0019414035377396206, -0.014301608079212751}, - {-0.0019415729311960282, -0.010330486944605442}, - }, - { - {0.0019413973041215685, -0.014426657189518771}, - {0.0019411706044281688, -0.01839651842048734}, - {-0.0019411706044281688, -0.01839651842048734}, - {-0.0019413973041215685, -0.014426657189518771}, - }, - { - {-0.0021560307990007425, -0.006233382791353025}, - {-0.0021559056551756824, -0.01020539595565169}, - {-0.006038886230943371, -0.010205106762199628}, - {-0.006039237181201076, -0.0062332065783811345}, - }, - { - {-0.0021559007254518506, -0.01033047886977648}, - {-0.0021557126267949113, -0.014301596860086082}, - {-0.006038344908749775, -0.014301190093823942}, - {-0.006038872406166657, -0.010330186104141197}, - }, - { - {-0.0021557057048326275, -0.014426645870802971}, - {-0.0021554539719551165, -0.018396503918085665}, - {-0.006037619549417504, -0.018395978113232427}, - {-0.006038325497076511, -0.014426235493818412}, - }, - { - {0.006037589602581689, -0.018545202557986182}, - {0.006036701588751924, -0.022513300304413994}, - {0.0021551266356864573, -0.02251394775553154}, - {0.0021554432932259413, -0.018545732734832468}, - }, - { - {0.006036670739318462, -0.022638242348573107}, - {0.006035598549106462, -0.026604321338666158}, - {0.0021547332990697627, -0.02660509203457798}, - {0.0021551156350259754, -0.02263889352637273}, - }, - { - {0.006035561842532645, -0.02672919366171876}, - {0.006034301669772514, -0.030692859609234752}, - {0.0021542708365451546, -0.030693756277955318}, - {0.0021547202096954825, -0.026729968161391053}, - }, - { - {0.0019411609876278618, -0.01854574735782124}, - {0.0019408758195560653, -0.02251396561316209}, - {-0.0019408758195560653, -0.02251396561316209}, - {-0.0019411609876278618, -0.01854574735782124}, - }, - { - {0.001940865912836536, -0.0226389114867926}, - {0.0019405215975557696, -0.02660511329156382}, - {-0.0019405215975557696, -0.02660511329156382}, - {-0.001940865912836536, -0.0226389114867926}, - }, - { - {0.001940509809828239, -0.026729989523293377}, - {0.001940105123644249, -0.030693781009582564}, - {-0.001940105123644249, -0.030693781009582564}, - {-0.001940509809828239, -0.026729989523293377}, - }, - { - {-0.0021554432932259413, -0.018545732734832468}, - {-0.0021551266356864573, -0.02251394775553154}, - {-0.006036701588751924, -0.022513300304413994}, - {-0.006037589602581689, -0.018545202557986182}, - }, - { - {-0.0021551156350259754, -0.02263889352637273}, - {-0.0021547332990697627, -0.02660509203457798}, - {-0.006035598549106462, -0.026604321338666158}, - {-0.006036670739318462, -0.022638242348573107}, - }, - { - {-0.0021547202096954825, -0.026729968161391053}, - {-0.0021542708365451546, -0.030693756277955318}, - {-0.006034301669772514, -0.030692859609234752}, - {-0.006035561842532645, -0.02672919366171876}, - }, - { - {-0.006272672117393783, 0.03069277676104021}, - {-0.006273982208366151, 0.02672912210105258}, - {-0.010154284597452405, 0.026727565748205118}, - {-0.010152159391313923, 0.03069097493567681}, - }, - { - {-0.006274020368984192, 0.026604250129442005}, - {-0.0062751350318891045, 0.022638182182090898}, - {-0.010156154718742394, 0.022636873627190267}, - {-0.010154346501492911, 0.026602701419583603}, - }, - { - {-0.006275167103373631, 0.022513240482256423}, - {-0.006276090294741015, 0.018545153571375154}, - {-0.010157704378118132, 0.018544088158849434}, - {-0.010156206745839209, 0.022511939415731978}, - }, - { - {-0.010366265246585269, 0.030690850547307462}, - {-0.01036843561468151, 0.026727458304923537}, - {-0.014247840675967268, 0.026725119189304133}, - {-0.014244848039605365, 0.030688142562809193}, - }, - { - {-0.010368498834261483, 0.026602594503908134}, - {-0.01037034547943645, 0.022636783289942043}, - {-0.014250474180658508, 0.022634816560110016}, - {-0.01424792784818611, 0.026600266873691495}, - }, - { - {-0.010370398612233475, 0.022511849595428863}, - {-0.010371928073488726, 0.018544014606619818}, - {-0.014252656461128548, 0.01854241328608391}, - {-0.01425054744615558, 0.022509894119308323}, - }, - { - {-0.014458893864271289, 0.030687967926225593}, - {-0.014461932136181226, 0.026724968338770333}, - {-0.01834007441060486, 0.026721838221654266}, - {-0.018336203862846075, 0.030684344320173494}, - }, - { - {-0.014462020637791274, 0.0266001167637938}, - {-0.014464605804237855, 0.02263468972328368}, - {-0.018343480591644517, 0.022632057842028992}, - {-0.018340187157559126, 0.02659700201303339}, - }, - { - {-0.014464680187159712, 0.02250976800820277}, - {-0.014466821369616144, 0.018542310013847617}, - {-0.01834630324429571, 0.0185401670710437}, - {-0.01834357535502202, 0.022507151184534068}, - }, - { - {-0.006276121427892352, 0.018395929530573393}, - {-0.0062768553411847935, 0.01442619757620982}, - {-0.010158945477297968, 0.014425372899280503}, - {-0.01015775488371211, 0.01839487290337595}, - }, - { - {-0.006276875521843277, 0.014301152509832323}, - {-0.006277423915951641, 0.010330159053409062}, - {-0.010159867858537498, 0.010329570719589712}, - {-0.010158978215624798, 0.014300335088673717}, - }, - { - {-0.006277438288396498, 0.010205080041525774}, - {-0.006277803141585748, 0.006233190296766815}, - {-0.010160483068807747, 0.006232836182421245}, - {-0.010159891174608984, 0.010204498886170692}, - }, - { - {-0.010371979652495308, 0.018394799957636328}, - {-0.010373195550631679, 0.01442531596623177}, - {-0.014254404250569161, 0.014424076454612798}, - {-0.014252727585516258, 0.018393211840565905}, - }, - { - {-0.01037322898478247, 0.014300278656531303}, - {-0.010374137536520719, 0.010329530102731228}, - {-0.014255703222047672, 0.010328645811539368}, - {-0.014254450355028661, 0.014299050050058677}, - }, - { - {-0.010374161348168022, 0.010204458764888024}, - {-0.010374765823008924, 0.0062328117353223364}, - {-0.014256569620013487, 0.006232279482235524}, - {-0.014255736057833325, 0.010203585262996875}, - }, - { - {-0.014466893578866317, 0.018393109419810403}, - {-0.014468595819035658, 0.014423996515432115}, - {-0.01834856396537594, 0.014422337724567963}, - {-0.018346395240877562, 0.018390984144617213}, - }, - { - {-0.014468642626776773, 0.014298970814159607}, - {-0.014469914605645685, 0.010328588781031817}, - {-0.018350244185336245, 0.010327405350145383}, - {-0.01834862360101588, 0.014297326616356644}, - }, - { - {-0.014469947942337658, 0.010203528928313284}, - {-0.014470794220642746, 0.006232245155536481}, - {-0.01835136488738013, 0.006231532843619807}, - {-0.018350286658806923, 0.010202359936103198}, - }, - { - {-0.0062778134072951275, 0.006083844199592513}, - {-0.006277994964096426, 0.0021114158870443253}, - {-0.010160794259994917, 0.002111296087048672}, - {-0.010160499722713452, 0.006083498593164215}, - }, - { - {-0.006277997821383259, 0.001986303033862647}, - {-0.006277997821383259, -0.001986303033862647}, - {-0.010160798895341201, -0.0019861903347961037}, - {-0.010160798895341201, 0.0019861903347961037}, - }, - { - {-0.006277994964096426, -0.0021114158870443253}, - {-0.0062778134072951275, -0.006083844199592512}, - {-0.010160499722713452, -0.006083498593164215}, - {-0.010160794259994917, -0.002111296087048672}, - }, - { - {-0.010374782830894682, 0.006083474733427028}, - {-0.010375083628618165, 0.002111287816367708}, - {-0.014257007872092067, 0.002111107749798968}, - {-0.01425659307374173, 0.006082955268098345}, - }, - { - {-0.010375088362489994, 0.001986182554344691}, - {-0.010375088362489994, -0.001986182554344691}, - {-0.014257014400087668, -0.0019860131608882836}, - {-0.014257014400087668, 0.0019860131608882836}, - }, - { - {-0.010375083628618165, -0.002111287816367708}, - {-0.010374782830894682, -0.006083474733427027}, - {-0.01425659307374173, -0.006082955268098344}, - {-0.014257007872092067, -0.002111107749798968}, - }, - { - {-0.014470818032167656, 0.0060829217661185885}, - {-0.014471239158501575, 0.0021110961367056176}, - {-0.01835193177960031, 0.0021108551531774647}, - {-0.01835139522539771, 0.006082226567808943}, - }, - { - {-0.01447124578608631, 0.001986002236139165}, - {-0.01447124578608631, -0.001986002236139165}, - {-0.01835194022378369, -0.0019857755364457654}, - {-0.01835194022378369, 0.0019857755364457654}, - }, - { - {-0.014471239158501575, -0.0021110961367056176}, - {-0.014470818032167656, -0.006082921766118588}, - {-0.01835139522539771, -0.006082226567808942}, - {-0.01835193177960031, -0.0021108551531774647}, - }, - { - {-0.006277803141585747, -0.0062331902967668155}, - {-0.006277438288396498, -0.010205080041525776}, - {-0.010159891174608984, -0.010204498886170692}, - {-0.010160483068807747, -0.006232836182421247}, - }, - { - {-0.00627742391595164, -0.010330159053409064}, - {-0.006276875521843276, -0.014301152509832325}, - {-0.010158978215624798, -0.01430033508867372}, - {-0.010159867858537498, -0.010329570719589714}, - }, - { - {-0.006276855341184793, -0.01442619757620982}, - {-0.006276121427892352, -0.018395929530573396}, - {-0.01015775488371211, -0.018394872903375957}, - {-0.010158945477297968, -0.014425372899280507}, - }, - { - {-0.010374765823008924, -0.006232811735322337}, - {-0.010374161348168024, -0.010204458764888027}, - {-0.014255736057833326, -0.010203585262996879}, - {-0.014256569620013487, -0.006232279482235525}, - }, - { - {-0.010374137536520719, -0.01032953010273123}, - {-0.01037322898478247, -0.014300278656531305}, - {-0.014254450355028661, -0.014299050050058678}, - {-0.014255703222047672, -0.010328645811539368}, - }, - { - {-0.010373195550631679, -0.014425315966231773}, - {-0.010371979652495308, -0.01839479995763633}, - {-0.014252727585516258, -0.018393211840565908}, - {-0.014254404250569157, -0.0144240764546128}, - }, - { - {-0.014470794220642746, -0.006232245155536483}, - {-0.014469947942337658, -0.010203528928313286}, - {-0.018350286658806923, -0.0102023599361032}, - {-0.01835136488738013, -0.006231532843619808}, - }, - { - {-0.014469914605645685, -0.010328588781031819}, - {-0.014468642626776773, -0.014298970814159609}, - {-0.01834862360101588, -0.014297326616356645}, - {-0.018350244185336245, -0.010327405350145384}, - }, - { - {-0.01446859581903566, -0.014423996515432117}, - {-0.014466893578866316, -0.018393109419810403}, - {-0.018346395240877562, -0.018390984144617217}, - {-0.01834856396537594, -0.014422337724567967}, - }, - { - {-0.006276090294741015, -0.018545153571375157}, - {-0.006275167103373632, -0.022513240482256426}, - {-0.010156206745839209, -0.02251193941573198}, - {-0.010157704378118132, -0.018544088158849437}, - }, - { - {-0.0062751350318891045, -0.022638182182090898}, - {-0.006274020368984192, -0.026604250129442005}, - {-0.010154346501492911, -0.026602701419583603}, - {-0.010156154718742394, -0.022636873627190267}, - }, - { - {-0.00627398220836615, -0.026729122101052574}, - {-0.006272672117393783, -0.030692776761040205}, - {-0.010152159391313921, -0.030690974935676803}, - {-0.010154284597452403, -0.02672756574820511}, - }, - { - {-0.010371928073488726, -0.01854401460661982}, - {-0.010370398612233477, -0.022511849595428866}, - {-0.01425054744615558, -0.02250989411930833}, - {-0.014252656461128548, -0.018542413286083914}, - }, - { - {-0.01037034547943645, -0.022636783289942043}, - {-0.010368498834261483, -0.026602594503908134}, - {-0.01424792784818611, -0.026600266873691495}, - {-0.014250474180658508, -0.022634816560110016}, - }, - { - {-0.01036843561468151, -0.026727458304923533}, - {-0.010366265246585267, -0.030690850547307455}, - {-0.014244848039605365, -0.030688142562809186}, - {-0.014247840675967268, -0.02672511918930413}, - }, - { - {-0.014466821369616144, -0.018542310013847617}, - {-0.014464680187159712, -0.022509768008202775}, - {-0.01834357535502202, -0.02250715118453407}, - {-0.01834630324429571, -0.0185401670710437}, - }, - { - {-0.014464605804237855, -0.02263468972328368}, - {-0.014462020637791274, -0.0266001167637938}, - {-0.018340187157559126, -0.02659700201303339}, - {-0.018343480591644517, -0.022632057842028992}, - }, - { - {-0.014461932136181226, -0.02672496833877033}, - {-0.014458893864271289, -0.030687967926225586}, - {-0.018336203862846075, -0.030684344320173487}, - {-0.01834007441060486, -0.02672183822165426}, - }, - }, - { - { - {0.03063885551542935, 0.018370137806980696}, - {0.03064253507495745, 0.01442696981174086}, - {0.026772414680591994, 0.014429930304568697}, - {0.026769225259651374, 0.01837392490311697}, - }, - { - {0.030642655794343027, 0.014278783862683653}, - {0.030645405646122927, 0.010334321482827452}, - {0.026774902797654005, 0.010336434458009844}, - {0.026772519317574853, 0.014281713501161973}, - }, - { - {0.03064549163316248, 0.010186093974824638}, - {0.030647321386790313, 0.00624071174764212}, - {0.026776563260757096, 0.0062419846303944015}, - {0.026774977327347852, 0.010188176415879269}, - }, - { - {0.02655148798272046, 0.018374121934540542}, - {0.02655465014479912, 0.014430084327435455}, - {0.022682159197689677, 0.014432603326934718}, - {0.022679476626531546, 0.018377344378115945}, - }, - { - {0.026554753887388066, 0.014281865918705084}, - {0.02655711699275384, 0.010336544386253045}, - {0.02268425185319307, 0.010338342208209228}, - {0.022682247204727283, 0.014284358662282209}, - }, - { - {0.026557190885292296, 0.010188284755526902}, - {0.026558763259770232, 0.006242050851900307}, - {0.022685648372504686, 0.0062431338626097255}, - {0.022684314536310732, 0.010190056596115485}, - }, - { - {0.02246161646315764, 0.018377509983361892}, - {0.02246427232320573, 0.014432732779277415}, - {0.01858979801723113, 0.01443481917378867}, - {0.018587612820146697, 0.018380179093430416}, - }, - { - {0.02246435945386179, 0.014284486765255492}, - {0.022466344138638492, 0.010338434597798565}, - {0.01859150263319731, 0.01033992363282485}, - {0.018589869705924383, 0.014286551410941156}, - }, - { - {0.022466406197475777, 0.010190147650494709}, - {0.02246772674903508, 0.0062431895177677745}, - {0.018592640176577992, 0.006244086500686393}, - {0.018591553692467122, 0.01019161516558273}, - }, - { - {0.030647381248504267, 0.00606823187814247}, - {0.030648291923237782, 0.00212229682261085}, - {0.026777404458888557, 0.002122729159667196}, - {0.02677661514524258, 0.0060694694866976415}, - }, - { - {0.030648309026149016, 0.001974027872202161}, - {0.030648309241516163, -0.0019720897143643014}, - {0.026777419469178613, -0.001972491443559635}, - {0.026777419282513225, 0.0019744299963251805}, - }, - { - {0.03064829215479411, -0.00212035866801649}, - {0.030647381911551506, -0.006066293896360982}, - {0.026776615719931344, -0.0060675311086212345}, - {0.026777404659585644, -0.0021207906101199376}, - }, - { - {0.026558814700644785, 0.006069533873049804}, - {0.026559597265486793, 0.0021227516518162143}, - {0.02268635584639868, 0.0021231194950477802}, - {0.02268569200915486, 0.0060705868707032935}, - }, - { - {0.026559611962362735, 0.0019744509166575272}, - {0.026559612147432052, -0.0019725123433460175}, - {0.022686368470465408, -0.001972854144583441}, - {0.022686368313474696, 0.001974793053910002}, - }, - { - {0.026559597464467826, -0.0021208130817216746}, - {0.026558815270419967, -0.00606759547435601}, - {0.0226856924924879, -0.0060686481348222}, - {0.02268635601519045, -0.0021211805889165725}, - }, - { - {0.022467769951058623, 0.006070640983497113}, - {0.02246842717625845, 0.002123138398170781}, - {0.018593216447504356, 0.0021234430548620438}, - {0.018592675720814588, 0.006071513108246817}, - }, - { - {0.022468439519155656, 0.0019748106360252013}, - {0.02246843967458265, -0.0019728717094311225}, - {0.018593226730364922, -0.0019731547974704117}, - {0.01859322660248905, 0.0019750940023607736}, - }, - { - {0.022468427343368975, -0.0021211994747709407}, - {0.022467770429577594, -0.006068702230288045}, - {0.01859267611451346, -0.006069574075764198}, - {0.018593216584992734, -0.0021215038531478985}, - }, - { - {0.030647322068738457, -0.006238773777225642}, - {0.03064549274888928, -0.010184156352078236}, - {0.02677497829440919, -0.010186238394057794}, - {0.026776563851828358, -0.006240046263594837}, - }, - { - {0.03064540677821031, -0.010332383876432571}, - {0.03064265736400101, -0.014276846779818974}, - {0.026772520678120054, -0.014279776015061862}, - {0.02677490377889677, -0.010334496452413532}, - }, - { - {0.030642536661146937, -0.014425032751886285}, - {0.030638857544494608, -0.018368201449554724}, - {0.026769227018463904, -0.01837198813690276}, - {0.026772416055467912, -0.014427992841301899}, - }, - { - {0.026558763845787866, -0.006240112464478751}, - {0.026557191844086194, -0.010186346712942808}, - {0.0226843153496563, -0.010188118213960417}, - {0.02268564886961623, -0.006241195137925272}, - }, - { - {0.02655711796560796, -0.01033460635988751}, - {0.026554755236303844, -0.014279928411625018}, - {0.022682248349040552, -0.014282420812064121}, - {0.02268425267846654, -0.010336403842164383}, - }, - { - {0.026554651507923202, -0.01442814684317947}, - {0.026551489726502623, -0.0183721851470563}, - {0.022679478105864428, -0.01837540724273277}, - {0.022682160354057308, -0.014430665499389136}, - }, - { - {0.022467727241195338, -0.006241250775751449}, - {0.022466407002720967, -0.010188209250888737}, - {0.018591554354987088, -0.010189676484716014}, - {0.018592640581500324, -0.006242147479333494}, - }, - { - {0.02246634495569282, -0.010336496214297226}, - {0.022464360586779863, -0.01428254889740254}, - {0.018589870638057625, -0.01428461325885373}, - {0.018591503305433722, -0.010337984967972454}, - }, - { - {0.022464273468058182, -0.014430794934089154}, - {0.02246161792776154, -0.018375572830098323}, - {0.018587614025213563, -0.018378241651963348}, - {0.018589798959184445, -0.01443288104423957}, - }, - { - {0.018335246837711813, 0.03067370735367386}, - {0.01833909462960039, 0.02673441936123189}, - {0.0144648293852087, 0.026737548086420215}, - {0.01446180819662856, 0.03067732621744965}, - }, - { - {0.01833922835060963, 0.026586357828155792}, - {0.018342502439266096, 0.022644645962879233}, - {0.014467505022236753, 0.022647276888956302}, - {0.01446493437765643, 0.02658946834515339}, - }, - { - {0.018342614831965764, 0.022496500870738106}, - {0.01834532671831066, 0.018552760931441727}, - {0.014469722436555916, 0.018554903352249786}, - {0.01446759326576829, 0.02249911395450982}, - }, - { - {0.01424388812250003, 0.030677503961267668}, - {0.014246863120077518, 0.026737701753822108}, - {0.010371336234152125, 0.02674003987480209}, - {0.010369177899870564, 0.030680208453948397}, - }, - { - {0.014246966507201598, 0.026589621118161367}, - {0.014249497844927848, 0.022647406104805062}, - {0.010373247655671368, 0.02264937215912172}, - {0.010371411239566062, 0.026591945629378014}, - }, - { - {0.014249584739089974, 0.022499242293977043}, - {0.01425168135044448, 0.018555008574077093}, - {0.010374831694949025, 0.018556609535681185}, - {0.0103733106942539, 0.022501195013084903}, - }, - { - {0.010151196705096106, 0.03068033505887294}, - {0.010153309327765812, 0.0267401493273252}, - {0.00627688590403686, 0.02674170507911937}, - {0.0062755828396695, 0.03068213463088569}, - }, - { - {0.010153382744584183, 0.02659205444474573}, - {0.010155180264859709, 0.022649464193246194}, - {0.0062780398774663695, 0.0226507723497532}, - {0.006276931187070007, 0.026593601139536724}, - }, - { - {0.010155241968232129, 0.022501286422928996}, - {0.010156730752151913, 0.01855668447844479}, - {0.0062789961868628995, 0.018557749693723893}, - {0.006278077935112515, 0.022502585705656535}, - }, - { - {0.0060333363116887185, 0.03068221880833412}, - {0.006034588941627878, 0.026741777850869446}, - {0.0021576267151363015, 0.026742552143131437}, - {0.002157179356695969, 0.030683114461683644}, - }, - { - {0.006034632471986048, 0.02659367348761343}, - {0.006035698250239919, 0.022650833539488553}, - {0.00215802288512689, 0.022651484596131987}, - {0.0021576422612949423, 0.026594443271855055}, - }, - { - {0.006035734834841532, 0.022502646480299014}, - {0.006036617544815552, 0.018557799519397636}, - {0.0021583511925329793, 0.01855832966086309}, - {0.0021580359506173995, 0.022503293120274524}, - }, - { - {0.001939137212643717, 0.030683139643540913}, - {0.001939539340319162, 0.026742573912746478}, - {-0.0019376007835310988, 0.026742574095859437}, - {-0.0019371990578881918, 0.03068313985535564}, - }, - { - {0.0019395533146611321, 0.02659446491472138}, - {0.0019398954549360936, 0.022651502900840493}, - {-0.001937956542116954, 0.022651503054808717}, - {-0.001937614743902017, 0.026594465096768206}, - }, - { - {0.0019399071994188023, 0.02250331130080422}, - {0.0019401905682576665, 0.0185583445659429}, - {-0.0019382513603939206, 0.018558344691315475}, - {-0.0019379682748579237, 0.02250331145372793}, - }, - { - {-0.002155241206710655, 0.030683114697334868}, - {-0.0021556881630807045, 0.02674255234685101}, - {-0.0060326505579988265, 0.02674177842146331}, - {-0.006031398331471972, 0.030682219468358862}, - }, - { - {-0.0021557036952669774, 0.026594443474388513}, - {-0.0021560839770065387, 0.022651484767427055}, - {-0.006033759509348653, 0.02265083401926916}, - {-0.006032694074337801, 0.02659367405488532}, - }, - { - {-0.002156097030754195, 0.02250329329040754}, - {-0.002156411989339928, 0.018558329800344525}, - {-0.0060346785078527, 0.018557799910074016}, - {-0.006033796082167774, 0.022502646956824926}, - }, - { - {-0.018585675405727257, 0.018380180298497976}, - {-0.01858786036934203, 0.014434820115755859}, - {-0.02246233552440618, 0.01443273392415673}, - {-0.02245967990167046, 0.018377511447979427}, - }, - { - {-0.018587932050375528, 0.014286552343088775}, - {-0.018589564803166786, 0.010339924305088859}, - {-0.02246440715468765, 0.010338435414893578}, - {-0.022462422647276128, 0.014284487898200927}, - }, - { - {-0.018589615856980574, 0.01019161582813079}, - {-0.01859070222499006, 0.006244086905650151}, - {-0.022465789641512204, 0.006243190009982679}, - {-0.022464469207978587, 0.010190148455781088}, - }, - { - {-0.022677540118066726, 0.018377345857463194}, - {-0.022680222451674774, 0.014432604483329947}, - {-0.026552714428257587, 0.014430085690600222}, - {-0.02654955250833844, 0.01837412367835007}, - }, - { - {-0.02268031045091844, 0.014284359806623573}, - {-0.022682314921840672, 0.010338343033524116}, - {-0.02655518108726439, 0.010336545359161821}, - {-0.02655281816290102, 0.014281867267662044}, - }, - { - {-0.022682377599406403, 0.010190057409502976}, - {-0.022683711317455627, 0.006243134359776667}, - {-0.026556827228167525, 0.006242051437986746}, - {-0.02655525497414257, 0.01018828571437595}, - }, - { - {-0.026767289848640255, 0.01837392666195759}, - {-0.026770479027140515, 0.014429931679486035}, - {-0.030640600637332264, 0.014426971397984992}, - {-0.03063692132562069, 0.018370139836087134}, - }, - { - {-0.026770583656168627, 0.014281714861749095}, - {-0.02677296695503463, 0.010336435439308006}, - {-0.030643471015118866, 0.010334322614983644}, - {-0.030640721348586298, 0.014278785432396796}, - }, - { - {-0.026773041479061604, 0.01018817738299651}, - {-0.026774627291877223, 0.006241985221535234}, - {-0.030645386626707172, 0.006240712429673482}, - {-0.030643556996365187, 0.010186095090620758}, - }, - { - {-0.018590737765428304, 0.006071513501987693}, - {-0.01859127843433367, 0.0021234431924059003}, - {-0.02246649000613036, 0.0021231385653501978}, - {-0.022465832839674363, 0.006070641462071325}, - }, - { - {-0.018591288588233147, 0.0019750941302926314}, - {-0.01859128871609535, -0.001973154925276626}, - {-0.022466502503337416, -0.001972871864774818}, - {-0.02246650234792431, 0.0019748107915216113}, - }, - { - {-0.018591278571807354, -0.0021215039905661042}, - {-0.018590738159085102, -0.006069574469378988}, - {-0.022465833318150562, -0.006068702708709006}, - {-0.022466490173225946, -0.0021211996417976335}, - }, - { - {-0.022683754950240522, 0.0060705873540923185}, - {-0.022684418728681148, 0.002123119663909215}, - {-0.026557661169989148, 0.0021227518508805518}, - {-0.02655687866510118, 0.006069534442894399}, - }, - { - {-0.022684431194652802, 0.001974793210970886}, - {-0.02268443135162961, -0.0019728543014900742}, - {-0.02655767605079424, -0.0019725125283173205}, - {-0.026557675865739105, 0.0019744511018106705}, - }, - { - {-0.022684418897457977, -0.002121180757623747}, - {-0.022683755433530742, -0.006068648618056432}, - {-0.026556879234832718, -0.0060675960440181335}, - {-0.026557661368954936, -0.00212081328060416}, - }, - { - {-0.026774679172417208, 0.006069470061456581}, - {-0.026775468426039024, 0.002122729360448359}, - {-0.030646357097754515, 0.002122297054265191}, - {-0.03064544648438746, 0.006068232541273535}, - }, - { - {-0.026775483248536378, 0.001974430183075174}, - {-0.02677548343518757, -0.0019724916301262197}, - {-0.03064637441486585, -0.001972089929618391}, - {-0.030646374199513212, 0.0019740280876678605}, - }, - { - {-0.026775468626720852, -0.002120790810717681}, - {-0.026774679747062272, -0.0060675316831961265}, - {-0.03064544714739002, -0.006066294559279709}, - {-0.030646357329295243, -0.0021203588994592078}, - }, - { - {-0.018590702629869126, -0.00624214788417114}, - {-0.018589616519429746, -0.010189677147137094}, - {-0.022464470013151813, -0.01018821005602078}, - {-0.022465790133628472, -0.006241251267813071}, - }, - { - {-0.018589565475331367, -0.010337985640109437}, - {-0.01858793298240918, -0.014284614190873018}, - {-0.022462423780092954, -0.014282550030192012}, - {-0.02246440797166896, -0.010336497031237856}, - }, - { - {-0.018587861311194703, -0.01443288198607837}, - {-0.018585676610665382, -0.018378242856900782}, - {-0.022459681366143496, -0.018375574294557724}, - {-0.02246233666915633, -0.014430796078812437}, - }, - { - {-0.02268371181452314, -0.006241195634937388}, - {-0.022682378412679928, -0.010188119027192018}, - {-0.026555255932863016, -0.010186347671608099}, - {-0.026556827814140257, -0.006240113050382677}, - }, - { - {-0.02268231574704105, -0.010336404667323334}, - {-0.022680311595130367, -0.014282421956247956}, - {-0.026552819511713486, -0.014279929760396298}, - {-0.026555182060043994, -0.010334607332612471}, - }, - { - {-0.022680223607939993, -0.014430666655626763}, - {-0.022677541597268615, -0.018375408721920294}, - {-0.02654955425198708, -0.01837218689067758}, - {-0.026552715791277274, -0.014428148206158474}, - }, - { - {-0.02677462788290354, -0.006240046854551585}, - {-0.02677304244604941, -0.010186239360989693}, - {-0.030643558112016807, -0.010184157467660531}, - {-0.030645387308609374, -0.006238774459044622}, - }, - { - {-0.02677296793620279, -0.010334497433526295}, - {-0.02677058501661039, -0.014279777375461702}, - {-0.030640722918138553, -0.014276848349316074}, - {-0.030643472147129983, -0.010332385008374873}, - }, - { - {-0.026770480401911913, -0.014427994216031874}, - {-0.0267672916073191, -0.018371989895553505}, - {-0.030636923354549307, -0.018368203478442157}, - {-0.030640602223414908, -0.014425034337914278}, - }, - }, - { - { - {0.027044781862091364, 0.018626414020815534}, - {0.023103362294895458, 0.018629805503367392}, - {0.02309997585202849, 0.02250307224345223}, - {0.027040789583676325, 0.02249895225902746}, - }, - { - {0.018629807032689596, 0.023101425908454556}, - {0.01862641582377898, 0.027042846549750164}, - {0.022498954449231872, 0.0270388545719163}, - {0.0225030741013136, 0.023098039760281283}, - }, - { - {0.018626414020815534, -0.027044781862091364}, - {0.018629805503367396, -0.023103362294895458}, - {0.02250307224345223, -0.023099975852028495}, - {0.02249895225902746, -0.027040789583676325}, - }, - { - {0.023101425908454553, -0.018629807032689596}, - {0.027042846549750168, -0.01862641582377898}, - {0.027038854571916307, -0.022498954449231875}, - {0.023098039760281283, -0.0225030741013136}, - }, - { - {-0.018626414020815534, 0.027044781862091364}, - {-0.018629805503367396, 0.023103362294895458}, - {-0.02250307224345223, 0.023099975852028495}, - {-0.02249895225902746, 0.027040789583676325}, - }, - { - {-0.023101425908454553, 0.018629807032689596}, - {-0.027042846549750168, 0.01862641582377898}, - {-0.027038854571916307, 0.022498954449231875}, - {-0.023098039760281283, 0.0225030741013136}, - }, - { - {-0.027044781862091364, -0.018626414020815534}, - {-0.023103362294895454, -0.018629805503367396}, - {-0.023099975852028495, -0.02250307224345223}, - {-0.027040789583676325, -0.02249895225902746}, - }, - { - {-0.018629807032689596, -0.023101425908454556}, - {-0.01862641582377898, -0.027042846549750164}, - {-0.022498954449231872, -0.0270388545719163}, - {-0.0225030741013136, -0.023098039760281283}, - }, - }, - { - { - {0.018670176093765572, 0.018792792570979773}, - {0.01866738165634269, 0.02273637949577133}, - {0.020604253071233102, 0.022734791856225036}, - {0.020607345912494586, 0.01879148802066858}, - }, - { - {0.02285725581737714, 0.0227346773210379}, - {0.022860699271749618, 0.018791739995303862}, - {0.020924032152459315, 0.018793199316126}, - {0.02092088999384325, 0.02273645325221995}, - }, - { - {0.018792792570979773, -0.018670176093765572}, - {0.02273637949577133, -0.01866738165634269}, - {0.022734791856225036, -0.020604253071233102}, - {0.01879148802066858, -0.020607345912494586}, - }, - { - {0.0227346773210379, -0.02285725581737714}, - {0.01879173999530386, -0.02286069927174962}, - {0.018793199316126, -0.020924032152459318}, - {0.02273645325221995, -0.02092088999384325}, - }, - { - {-0.018792792570979773, 0.018670176093765572}, - {-0.02273637949577133, 0.01866738165634269}, - {-0.022734791856225036, 0.020604253071233102}, - {-0.01879148802066858, 0.020607345912494586}, - }, - { - {-0.0227346773210379, 0.02285725581737714}, - {-0.018791739995303862, 0.022860699271749618}, - {-0.018793199316126, 0.020924032152459315}, - {-0.02273645325221995, 0.02092088999384325}, - }, - { - {-0.018670176093765572, -0.018792792570979773}, - {-0.01866738165634269, -0.02273637949577133}, - {-0.020604253071233102, -0.022734791856225036}, - {-0.020607345912494586, -0.01879148802066858}, - }, - { - {-0.02285725581737714, -0.0227346773210379}, - {-0.022860699271749618, -0.018791739995303862}, - {-0.020924032152459315, -0.018793199316126}, - {-0.02092088999384325, -0.02273645325221995}, - }, - }, - { - { - {0.006039247055728695, 0.006083860090025068}, - {0.0060394216941745, 0.0021114213952493793}, - {0.002156096593543867, 0.00211148100951192}, - {0.0021560343201107073, 0.006084032069300254}, - }, - { - {0.006039424442582142, 0.0019863082155786456}, - {0.006039424442582142, -0.0019863082155786456}, - {0.002156097573583869, -0.0019863642963111844}, - {0.002156097573583869, 0.0019863642963111844}, - }, - { - {0.0060394216941745, -0.0021114213952493793}, - {0.006039247055728695, -0.006083860090025068}, - {0.0021560343201107073, -0.006084032069300254}, - {0.002156096593543867, -0.00211148100951192}, - }, - { - {0.001941693240714674, 0.006084036812688888}, - {0.001941749321447213, 0.0021114826537415496}, - {-0.001941749321447213, 0.0021114826537415496}, - {-0.001941693240714674, 0.006084036812688888}, - }, - { - {0.0019417502040283943, 0.0019863658430819935}, - {0.0019417502040283943, -0.0019863658430819935}, - {-0.0019417502040283943, -0.0019863658430819935}, - {-0.0019417502040283943, 0.0019863658430819935}, - }, - { - {0.001941749321447213, -0.0021114826537415496}, - {0.001941693240714674, -0.006084036812688887}, - {-0.001941693240714674, -0.006084036812688887}, - {-0.001941749321447213, -0.0021114826537415496}, - }, - { - {-0.0021560343201107073, 0.006084032069300254}, - {-0.002156096593543867, 0.00211148100951192}, - {-0.0060394216941745, 0.0021114213952493793}, - {-0.006039247055728695, 0.006083860090025068}, - }, - { - {-0.002156097573583869, 0.0019863642963111844}, - {-0.002156097573583869, -0.0019863642963111844}, - {-0.006039424442582142, -0.0019863082155786456}, - {-0.006039424442582142, 0.0019863082155786456}, - }, - { - {-0.002156096593543867, -0.00211148100951192}, - {-0.0021560343201107073, -0.006084032069300254}, - {-0.006039247055728695, -0.006083860090025068}, - {-0.0060394216941745, -0.0021114213952493793}, - }, - }, - }; - - std::vector> colors = { - {0.0, 0.3, 1.0, 1.0}, // E2V = BLUE - {0.0, 0.7, 1.0, 1.0}, // ITL = Cyan - {0.0, 1.0, 0.0, 1.0}, // Guider = Green - {1.0, 0.0, 0.0, 1.0}, // WF = Red - {1.0, 1.0, 1.0, 1.0}, // ComCam = White - }; double alpha = ra / 57.29577951308232 + 1.5707963267948966; // ra=0 isn't along x=0? double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle @@ -1455,26 +213,27 @@ void MosaicCamera::draw(StelCore* core) Vec3d startPoint, endPoint; - for (size_t iset=0; iset +#include +#include +#include class MosaicCameraDialog; +struct PolygonSet { + QString name; + QVector> corners; + QColor color; + QString colorComment; +}; + //! This is an example of a plug-in which can be dynamically loaded into stellarium class MosaicCamera : public StelModule { @@ -52,6 +63,9 @@ public slots: double ra; double dec; double rsp; + QVector polygon_sets; + + static QVector readPolygonSetsFromJson(const QString& filename); // GUI MosaicCameraDialog* configDialog; From 12dc5f1185caff11b95eead5f0034cc6dacbd7ac Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 17:35:27 -0300 Subject: [PATCH 11/32] Promote RA/DEC/RSP to AngleSpinBoxs --- .../src/gui/MosaicCameraDialog.cpp | 27 ++++++++++--------- .../src/gui/MosaicCameraDialog.hpp | 6 ++--- .../src/gui/mosaicCameraDialog.ui | 11 +++++--- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 8fbc53d749821..a32e24e83a6f8 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -43,34 +43,37 @@ MosaicCameraDialog::~MosaicCameraDialog() delete ui; } -void MosaicCameraDialog::updateRA(double ra) +void MosaicCameraDialog::updateRA() { - mc->setRA(ra); + qDebug() << "Updating RA"; + mc->setRA(ui->RASpinBox->valueDegrees()); } -void MosaicCameraDialog::updateDec(double dec) +void MosaicCameraDialog::updateDec() { - mc->setDec(dec); + qDebug() << "Updating Dec"; + mc->setDec(ui->DecSpinBox->valueDegrees()); } -void MosaicCameraDialog::updateRSP(double rsp) +void MosaicCameraDialog::updateRSP() { - mc->setRSP(rsp); + qDebug() << "Updating RSP"; + mc->setRSP(ui->RSPSpinBox->valueDegrees()); } void MosaicCameraDialog::setRA(double ra) { - ui->RASpinBox->setValue(ra); + ui->RASpinBox->setDegrees(ra); } void MosaicCameraDialog::setDec(double dec) { - ui->DecSpinBox->setValue(dec); + ui->DecSpinBox->setDegrees(dec); } void MosaicCameraDialog::setRSP(double rsp) { - ui->RSPSpinBox->setValue(rsp); + ui->RSPSpinBox->setDegrees(rsp); } void MosaicCameraDialog::retranslate() @@ -109,9 +112,9 @@ void MosaicCameraDialog::createDialogContent() ui->aboutTextBrowser->document()->setDefaultStyleSheet(QString(gui->getStelStyle().htmlStyleSheet)); // Location tab - connect(ui->RASpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRA); - connect(ui->DecSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateDec); - connect(ui->RSPSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), this, &MosaicCameraDialog::updateRSP); + connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); + connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); + connect(ui->RSPSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRSP())); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 8c1766ae0c772..752f096117e6e 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -47,14 +47,14 @@ class MosaicCameraDialog : public StelDialog public slots: void retranslate() override; + void updateRA(); + void updateDec(); + void updateRSP(); private: MosaicCamera* mc; Ui_mosaicCameraDialog* ui; void setAboutHtml(void); - void updateRA(double ra); - void updateDec(double dec); - void updateRSP(double rsp); }; #endif // MOSAICCAMERADIALOG_HPP diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 6acff93486908..44d614873bb0d 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -68,7 +68,7 @@ Location - + 20 @@ -84,7 +84,7 @@ 360.000000000000000 - + 20 @@ -100,7 +100,7 @@ 90.000000000000000 - + 20 @@ -128,6 +128,11 @@
Dialog.hpp
1 + + AngleSpinBox + QSpinBox +
AngleSpinBox.hpp
+
From df6f07f7a16c6743d9c5cdc8464f08f02cc1d723 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 17:39:43 -0300 Subject: [PATCH 12/32] Add gui labels --- .../src/gui/mosaicCameraDialog.ui | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 44d614873bb0d..02477c28c2aff 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -68,11 +68,24 @@ Location - + 20 10 + 100 + 20 + + + + Right Ascension: + + + + + + 130 + 10 211 22 @@ -84,11 +97,24 @@ 360.000000000000000 - + 20 40 + 100 + 20 + + + + Declination: + + + + + + 130 + 40 211 22 @@ -100,11 +126,24 @@ 90.000000000000000 - + 20 70 + 100 + 20 + + + + RotSkyPos: + + + + + + 130 + 70 211 21 From a0aa96deb1f527c4eb347518b39a1c18569e1a9a Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 17:58:34 -0300 Subject: [PATCH 13/32] Add json mosaics --- plugins/MosaicCamera/resources/DECam.json | 1132 +++++ plugins/MosaicCamera/resources/HSC.json | 2032 +++++++++ .../MosaicCamera/resources/RubinMosaic.json | 3924 +++++++++++++++++ 3 files changed, 7088 insertions(+) create mode 100644 plugins/MosaicCamera/resources/DECam.json create mode 100644 plugins/MosaicCamera/resources/HSC.json create mode 100644 plugins/MosaicCamera/resources/RubinMosaic.json diff --git a/plugins/MosaicCamera/resources/DECam.json b/plugins/MosaicCamera/resources/DECam.json new file mode 100644 index 0000000000000..255dee340c383 --- /dev/null +++ b/plugins/MosaicCamera/resources/DECam.json @@ -0,0 +1,1132 @@ +[ + { + "name": "DECam", + "corners": [ + [ + [ + -0.017069925922537352, + -0.00802416980991785 + ], + [ + -0.014469213765415045, + -0.008029473985751129 + ], + [ + -0.014474307765819648, + -0.002808586545205558 + ], + [ + -0.017076104243274944, + -0.002806435609813904 + ] + ], + [ + [ + -0.01707722176700091, + -0.0026101962377681944 + ], + [ + -0.014475408675990576, + -0.0026165593785254042 + ], + [ + -0.014465868981811294, + 0.0026076971264091964 + ], + [ + -0.01706769403610855, + 0.002610907520699585 + ] + ], + [ + [ + -0.017078756085290622, + 0.002809040597256251 + ], + [ + -0.014476964949449972, + 0.0028107375475397234 + ], + [ + -0.014470958836016963, + 0.008031620987960971 + ], + [ + -0.017071666276497265, + 0.008026769977131257 + ] + ], + [ + [ + -0.01420603608177172, + -0.010733913640726137 + ], + [ + -0.011601570952261758, + -0.010739400514733098 + ], + [ + -0.011608424396274407, + -0.0055198616159784775 + ], + [ + -0.014214514528452384, + -0.005516954476749757 + ] + ], + [ + [ + -0.014217001315250697, + -0.005321978599919836 + ], + [ + -0.011610875550442264, + -0.005323467787717644 + ], + [ + -0.011615557551714187, + -9.71881804866207e-05 + ], + [ + -0.014222222589140092, + -9.828007162604375e-05 + ] + ], + [ + [ + -0.014225105296683431, + 0.00010100126049729438 + ], + [ + -0.011618444555227992, + 9.991072528469036e-05 + ], + [ + -0.011613759541486602, + 0.005326186073480247 + ], + [ + -0.014219880467078136, + 0.005324694951546095 + ] + ], + [ + [ + -0.014216211461222565, + 0.005515592806843047 + ], + [ + -0.011610123561579712, + 0.0055184996330620815 + ], + [ + -0.011603270267557439, + 0.010738039560296057 + ], + [ + -0.014207733436360233, + 0.010732552659416575 + ] + ], + [ + [ + -0.011332066926672433, + -0.013440919829088304 + ], + [ + -0.0087250706868009, + -0.01344471840593698 + ], + [ + -0.008735040071823711, + -0.008228830719156551 + ], + [ + -0.011344199901971254, + -0.008227039796079052 + ] + ], + [ + [ + -0.011356570355937302, + -0.008032681890366704 + ], + [ + -0.008747361452537952, + -0.00803668039547951 + ], + [ + -0.008749163281228572, + -0.002810701096491275 + ], + [ + -0.011359456635800045, + -0.0028087097365897414 + ] + ], + [ + [ + -0.011357464534068058, + -0.002613640091320498 + ], + [ + -0.008747148844248851, + -0.002614369949202535 + ], + [ + -0.00874769564395779, + 0.0026149839660705174 + ], + [ + -0.011358010879372486, + 0.0026137064659426832 + ] + ], + [ + [ + -0.01136241189622714, + 0.0028098488429855375 + ], + [ + -0.00875212309505936, + 0.0028095595046489824 + ], + [ + -0.00874576435917004, + 0.008035542531297648 + ], + [ + -0.011354972214087234, + 0.008033822698818966 + ] + ], + [ + [ + -0.011349831549557167, + 0.008229852270145341 + ], + [ + -0.008740678900931467, + 0.008231782763898587 + ], + [ + -0.008730976019431147, + 0.013447658986870167 + ], + [ + -0.011337964290905715, + 0.013443719909912933 + ] + ], + [ + [ + -0.008464350216644526, + -0.016145529418765677 + ], + [ + -0.005856054760815647, + -0.01615014014225779 + ], + [ + -0.005861762915471394, + -0.010940239813878243 + ], + [ + -0.008472765821516785, + -0.010937060612152747 + ] + ], + [ + [ + -0.00848225836757441, + -0.01075109464218464 + ], + [ + -0.0058711864606607825, + -0.01075358912506131 + ], + [ + -0.0058757515655556555, + -0.005530227497825609 + ], + [ + -0.008488448939724443, + -0.005529167385343278 + ] + ], + [ + [ + -0.008494937005567308, + -0.005329963160721848 + ], + [ + -0.005882203568103801, + -0.0053309242722057865 + ], + [ + -0.005884426801933686, + -0.00010081426645758394 + ], + [ + -0.008497701858787548, + -0.0001012886272885236 + ] + ], + [ + [ + -0.008489863173472396, + 9.949321479811421e-05 + ], + [ + -0.005876581622057993, + 9.988569974220467e-05 + ], + [ + -0.005876093933857706, + 0.005329999056624118 + ], + [ + -0.008488833186224145, + 0.005328172852181885 + ] + ], + [ + [ + -0.008496618014590946, + 0.00552763485098608 + ], + [ + -0.005883928296217734, + 0.005527327657771514 + ], + [ + -0.0058766240468861265, + 0.010750692354708132 + ], + [ + -0.008487690244659481, + 0.010749562117370997 + ] + ], + [ + [ + -0.00847615047732733, + 0.010944355459067565 + ], + [ + -0.0058651529192014894, + 0.010948221052344036 + ], + [ + -0.005860803881049938, + 0.016158092819522404 + ], + [ + -0.008469091709947632, + 0.01615279630768134 + ] + ], + [ + [ + -0.005606441525912318, + -0.01614685722177861 + ], + [ + -0.0029962614100205436, + -0.016148790375124913 + ], + [ + -0.003000826653972277, + -0.010937905992825304 + ], + [ + -0.005613712757716111, + -0.010936834496731437 + ] + ], + [ + [ + -0.005611151127032428, + -0.010754028937907343 + ], + [ + -0.002998187309631563, + -0.010755843354451953 + ], + [ + -0.0029999610501922447, + -0.0055315086704072 + ], + [ + -0.005614550865448475, + -0.005530553935101383 + ] + ], + [ + [ + -0.005623214075519028, + -0.005333493100198155 + ], + [ + -0.0030085877302301377, + -0.0053340521297589065 + ], + [ + -0.003009850952543414, + -0.0001029681807028283 + ], + [ + -0.005625019665656003, + -0.0001032707888796871 + ] + ], + [ + [ + -0.0056306401969223145, + 0.00010225097960727887 + ], + [ + -0.003015474436258009, + 0.00010126333368043452 + ], + [ + -0.0030128411215198485, + 0.005332347025535017 + ], + [ + -0.0056274652382194154, + 0.005332471764519986 + ] + ], + [ + [ + -0.0056242759112805196, + 0.005537200713193021 + ], + [ + -0.003009692753903647, + 0.005537109135503321 + ], + [ + -0.0030058133917405822, + 0.01076143173839664 + ], + [ + -0.005618770019874431, + 0.01076066059554528 + ] + ], + [ + [ + -0.005614894489808352, + 0.010946514532127794 + ], + [ + -0.003002013029829553, + 0.010947588126121857 + ], + [ + -0.002997444331254814, + 0.016158442095706375 + ], + [ + -0.005607617866402468, + 0.016156506605487047 + ] + ], + [ + [ + -0.0027311366997702117, + -0.01885109249385044 + ], + [ + -0.00012182960108020937, + -0.018851806191509116 + ], + [ + -0.00012261970088821135, + -0.013649867725003336 + ], + [ + -0.00273517591268946, + -0.013649440256451071 + ] + ], + [ + [ + -0.0027429876156685423, + -0.01345833652062195 + ], + [ + -0.00013033334260658798, + -0.013458939374744655 + ], + [ + -0.00013071527229043531, + -0.00824015754076824 + ], + [ + -0.0027455364302177193, + -0.008239841980004964 + ] + ], + [ + [ + -0.0027421747373435608, + -0.008044642518259124 + ], + [ + -0.0001272923149752832, + -0.008045539062827236 + ], + [ + -0.00012643188490793822, + -0.002816641267403313 + ], + [ + -0.002742398374390036, + -0.0028160306632266613 + ] + ], + [ + [ + -0.0027455861085041817, + -0.0026085938184507457 + ], + [ + -0.0001295987891482667, + -0.0026078693841726387 + ], + [ + -0.0001313337943457474, + 0.002624404841785021 + ], + [ + -0.0027473193600513124, + 0.0026233933761490766 + ] + ], + [ + [ + -0.002741206022801365, + 0.0028187554543877085 + ], + [ + -0.00012523963056594568, + 0.002819366079323172 + ], + [ + -0.00012610052833288181, + 0.008048260497923355 + ], + [ + -0.0027409823097867447, + 0.008047364170677206 + ] + ], + [ + [ + -0.002741606001178693, + 0.008249275853454318 + ], + [ + -0.00012678716278942157, + 0.008249773074099248 + ], + [ + -0.00012677321100455782, + 0.013468531005723827 + ], + [ + -0.002739423221334174, + 0.013467747542000265 + ] + ], + [ + [ + -0.0027423094861331976, + 0.013653164682564252 + ], + [ + -0.00012975655460703147, + 0.013654960357770276 + ], + [ + -0.00013169014156698896, + 0.01885687922330102 + ], + [ + -0.0027409927770660706, + 0.01885479902309686 + ] + ], + [ + [ + 0.0001292099193352243, + -0.018854462617410007 + ], + [ + 0.002738513076918485, + -0.018854513594121273 + ], + [ + 0.002744112355089398, + -0.013652875341110557 + ], + [ + 0.0001315596444658706, + -0.01365253457551653 + ] + ], + [ + [ + 0.00012907238650815186, + -0.013460600877048607 + ], + [ + 0.0027417257346654014, + -0.01346040788781135 + ], + [ + 0.0027450953206996326, + -0.00824191808536512 + ], + [ + 0.00013027480414002946, + -0.008241823270275703 + ] + ], + [ + [ + 0.00013342123712537242, + -0.008049280917161167 + ], + [ + 0.0027483015004227435, + -0.008048382285272965 + ], + [ + 0.0027485284645270857, + -0.0028197763741162215 + ], + [ + 0.00013256338603151693, + -0.0028203878424347055 + ] + ], + [ + [ + 0.00013196576563466857, + -0.002617738472983851 + ], + [ + 0.002747951957079483, + -0.0026174577597974525 + ], + [ + 0.002747678347943795, + 0.0026145294363031 + ], + [ + 0.00013169182055271296, + 0.0026145360274162743 + ] + ], + [ + [ + 0.00014007248424370995, + 0.002808119891570864 + ], + [ + 0.002756036373271489, + 0.002810247417619303 + ], + [ + 0.0027503322939467353, + 0.00803886345456445 + ], + [ + 0.00013545043964364323, + 0.008037026311252258 + ] + ], + [ + [ + 0.0001290708416437662, + 0.00823630190856406 + ], + [ + 0.002743893386683451, + 0.008236215037816323 + ], + [ + 0.002740890749650482, + 0.013454719151163372 + ], + [ + 0.00012823429174803366, + 0.013455093319421458 + ] + ], + [ + [ + 0.00012846600070387382, + 0.013651532573404155 + ], + [ + 0.0027410208464048887, + 0.013650147019430953 + ], + [ + 0.0027388867296980405, + 0.018851793810851277 + ], + [ + 0.0001295814446074645, + 0.0188534645713905 + ] + ], + [ + [ + 0.003001054474316226, + -0.01615803639849363 + ], + [ + 0.005611228163835596, + -0.016154873203433694 + ], + [ + 0.005616045916264801, + -0.010944879699297043 + ], + [ + 0.0030031636945228772, + -0.01094718307481294 + ] + ], + [ + [ + 0.003005775972555307, + -0.010759204237591326 + ], + [ + 0.005618734879230727, + -0.010757112929675568 + ], + [ + 0.005621593220813016, + -0.005533647250413922 + ], + [ + 0.003007007490205537, + -0.005534877756485453 + ] + ], + [ + [ + 0.003006573162112068, + -0.005332875148733326 + ], + [ + 0.005621201119212194, + -0.005331267381331864 + ], + [ + 0.00562090631344116, + -0.00010104300182058437 + ], + [ + 0.0030057356371109467, + -0.00010179017873263996 + ] + ], + [ + [ + 0.003011408288457114, + 0.00010295592459752407 + ], + [ + 0.005626576158867418, + 0.00010362374416626963 + ], + [ + 0.005624040151937766, + 0.005333845347070915 + ], + [ + 0.00300941444257523, + 0.005334039554572589 + ] + ], + [ + [ + 0.003007763378141783, + 0.005531096233465388 + ], + [ + 0.0056223489416950085, + 0.005530961104271463 + ], + [ + 0.0056173028515714785, + 0.0107544332163794 + ], + [ + 0.0030043427445722074, + 0.010755430441648142 + ] + ], + [ + [ + 0.0030027625061652074, + 0.010942798041676522 + ], + [ + 0.005615645911509356, + 0.010941451733505653 + ], + [ + 0.0056089172138768665, + 0.016151458646548572 + ], + [ + 0.0029987409282001406, + 0.01615366648734188 + ] + ], + [ + [ + 0.005864182636946844, + -0.016156553755118482 + ], + [ + 0.00847246915290013, + -0.016150937937707936 + ], + [ + 0.008478892512052515, + -0.01094249461235564 + ], + [ + 0.005867896256601548, + -0.010946679561328217 + ] + ], + [ + [ + 0.005872202384801487, + -0.010762252625603187 + ], + [ + 0.008483270823465535, + -0.010759072499773408 + ], + [ + 0.00848809981029109, + -0.005537161716798529 + ], + [ + 0.005875403488311464, + -0.005538908255845008 + ] + ], + [ + [ + 0.005876970990551305, + -0.005329926383859219 + ], + [ + 0.008489708317711774, + -0.005329605153682612 + ], + [ + 0.00849374838406276, + -0.00010092738577464068 + ], + [ + 0.0058804702742176, + -9.981379682039247e-05 + ] + ], + [ + [ + 0.005886746862117095, + 9.011805816282848e-05 + ], + [ + 0.008500019677534453, + 9.155375244774979e-05 + ], + [ + 0.008495346263508816, + 0.005320233370950138 + ], + [ + 0.005882611975712284, + 0.005320233815219714 + ] + ], + [ + [ + 0.005876524534167896, + 0.005527969278273912 + ], + [ + 0.008489221669842053, + 0.00552700083823655 + ], + [ + 0.008482849814884279, + 0.010748931845664455 + ], + [ + 0.0058717776044689375, + 0.010751334905324308 + ] + ], + [ + [ + 0.005865617355337426, + 0.010942895831499022 + ], + [ + 0.008476615348313319, + 0.010940169473471428 + ], + [ + 0.008467283655573392, + 0.016148627893705744 + ], + [ + 0.005858993190546579, + 0.016152787398300627 + ] + ], + [ + [ + 0.008731389412893321, + -0.013445489165070174 + ], + [ + 0.011338379409097248, + -0.013441141768615909 + ], + [ + 0.011349425567422947, + -0.00822726885282853 + ], + [ + 0.008740271038941545, + -0.008229608346435997 + ] + ], + [ + [ + 0.00873933110241853, + -0.008038113491726315 + ], + [ + 0.011348547323399428, + -0.008035346888430637 + ], + [ + 0.011353891242372198, + -0.002811369634980156 + ], + [ + 0.00874359205424508, + -0.0028121294311623333 + ] + ], + [ + [ + 0.008743318260774692, + -0.002610240560294041 + ], + [ + 0.011353638728996699, + -0.0026096038961393097 + ], + [ + 0.01135436369684336, + 0.0026177458848611833 + ], + [ + 0.008744044638583281, + 0.0026191158307946106 + ] + ], + [ + [ + 0.008750348099680453, + 0.0028114689901068478 + ], + [ + 0.011360639596467702, + 0.0028106631086036045 + ], + [ + 0.011355384511310941, + 0.008034635258436524 + ], + [ + 0.008746175915497627, + 0.00803744926859788 + ] + ], + [ + [ + 0.008738885993739365, + 0.008230301938403918 + ], + [ + 0.011348042487915048, + 0.008227598200576893 + ], + [ + 0.011337724763341201, + 0.013441470050702358 + ], + [ + 0.008730733464095291, + 0.013446180882975504 + ] + ], + [ + [ + 0.011598993115056586, + -0.01073709543012581 + ], + [ + 0.01420346178679894, + -0.010732156516375178 + ], + [ + 0.01421302750171942, + -0.00551519002281799 + ], + [ + 0.011606935315747573, + -0.00551754892926417 + ] + ], + [ + [ + 0.011606065079408276, + -0.00532965411573091 + ], + [ + 0.01421219822562165, + -0.0053270236888389826 + ], + [ + 0.014215150984667132, + -0.00010332261573564613 + ], + [ + 0.011608475192139582, + -0.00010337362473211394 + ] + ], + [ + [ + 0.011615346018135705, + 9.499743484176536e-05 + ], + [ + 0.01422201100983803, + 9.672873802370895e-05 + ], + [ + 0.014215518850805766, + 0.005320429162682904 + ], + [ + 0.011609391496706443, + 0.005321279031237407 + ] + ], + [ + [ + 0.011606341261184783, + 0.00551470259159134 + ], + [ + 0.014212434103568209, + 0.005512937557378038 + ], + [ + 0.0142016902475911, + 0.010729911255422697 + ], + [ + 0.011597219238908019, + 0.010734256795137585 + ] + ], + [ + [ + 0.014465336517057477, + -0.008027621164590456 + ], + [ + 0.01706605426446151, + -0.0080233203188762 + ], + [ + 0.017074226019137842, + -0.00280557858619228 + ], + [ + 0.014472426644868523, + -0.0028067259375456166 + ] + ], + [ + [ + 0.014467416153999565, + -0.002610774083084931 + ], + [ + 0.017069245578633818, + -0.0026091988422334155 + ], + [ + 0.017069243800965164, + 0.0026119179019957043 + ], + [ + 0.014467414648206311, + 0.0026134947845781755 + ] + ], + [ + [ + 0.014470017838801197, + 0.0028128649252522225 + ], + [ + 0.01707182192883864, + 0.002809982956546272 + ], + [ + 0.017067091916769712, + 0.008027714973369298 + ], + [ + 0.014466374688991491, + 0.008033748862044356 + ] + ] + ], + "color": { + "comment": "Yellow", + "value": [ + 1.0, + 1.0, + 0.0, + 1.0 + ] + } + } +] \ No newline at end of file diff --git a/plugins/MosaicCamera/resources/HSC.json b/plugins/MosaicCamera/resources/HSC.json new file mode 100644 index 0000000000000..0faa731382a7c --- /dev/null +++ b/plugins/MosaicCamera/resources/HSC.json @@ -0,0 +1,2032 @@ +[ + { + "name": "HSC", + "corners": [ + [ + [ + 0.012533445891454612, + -0.0035840329951105803 + ], + [ + 0.01100167664480769, + -0.0036113755074193565 + ], + [ + 0.010925727516608374, + -0.0068840870222568904 + ], + [ + 0.012441839752816293, + -0.006828374427112947 + ] + ], + [ + [ + 0.012566997086166327, + -5.0653555082808234e-05 + ], + [ + 0.011029589992397852, + -5.052403624765569e-05 + ], + [ + 0.011005476687183852, + -0.00337179531071922 + ], + [ + 0.012537975193489596, + -0.0033465148905076026 + ] + ], + [ + [ + 0.012535307945364772, + 0.0034808455320121897 + ], + [ + 0.011003464575616283, + 0.0035075608729149238 + ], + [ + 0.011030046638061768, + 0.00018750326116512785 + ], + [ + 0.012567419555230054, + 0.00018590522755576984 + ] + ], + [ + [ + 0.012435248046824107, + 0.006958590929629595 + ], + [ + 0.010920810003150188, + 0.007015320126791068 + ], + [ + 0.01099929028361114, + 0.0037462995219168273 + ], + [ + 0.012530362904070173, + 0.003717250358869895 + ] + ], + [ + [ + 0.01086054651128322, + -0.0071170763237714384 + ], + [ + 0.00930525081262845, + -0.007163786618285741 + ], + [ + 0.00919548394247641, + -0.010357700174046091 + ], + [ + 0.010726337601267481, + -0.010283413309825282 + ] + ], + [ + [ + 0.010944743507847472, + -0.003611391853951554 + ], + [ + 0.009374105409483023, + -0.0036329634968779844 + ], + [ + 0.00931138682865989, + -0.006929327714392653 + ], + [ + 0.010868045902892679, + -0.006885093149411401 + ] + ], + [ + [ + 0.010972791764809442, + -5.1638561956624954e-05 + ], + [ + 0.009397162123043984, + -5.0780720604447205e-05 + ], + [ + 0.009376025160910876, + -0.003393552579147221 + ], + [ + 0.010947325167906391, + -0.003373758652954446 + ] + ], + [ + [ + 0.010947401274123449, + 0.0035081964506199913 + ], + [ + 0.009376461176425587, + 0.0035292267291743384 + ], + [ + 0.009399856619812902, + 0.000187701101841273 + ], + [ + 0.010975420165797153, + 0.00018731363375301498 + ] + ], + [ + [ + 0.010865407727744154, + 0.0070171013721055655 + ], + [ + 0.009309611232834157, + 0.007064288737371606 + ], + [ + 0.009372000055208187, + 0.003771576799583448 + ], + [ + 0.010942315988145407, + 0.00374718734274006 + ] + ], + [ + [ + 0.010719981819321819, + 0.010408572539533029 + ], + [ + 0.00919067759494293, + 0.010485220330084168 + ], + [ + 0.009301187707364206, + 0.007297746570227373 + ], + [ + 0.010855623739115245, + 0.007248310409406891 + ] + ], + [ + [ + 0.009248509848167783, + -0.007164667092248296 + ], + [ + 0.007661076792387804, + -0.00720175303030769 + ], + [ + 0.007574142234967416, + -0.010418334347057556 + ], + [ + 0.009139090830656154, + -0.010359511409302032 + ] + ], + [ + [ + 0.009315794684913815, + -0.003634391395196642 + ], + [ + 0.007714711036025592, + -0.0036534309426070654 + ], + [ + 0.007668271438692353, + -0.0069683420450003765 + ], + [ + 0.009256921750112054, + -0.00693139568675439 + ] + ], + [ + [ + 0.009338683600613873, + -4.84902972095786e-05 + ], + [ + 0.0077332399338737685, + -4.754647844642702e-05 + ], + [ + 0.007715753079002548, + -0.0034076346172319237 + ], + [ + 0.009317411646026237, + -0.003391960467607491 + ] + ], + [ + [ + 0.009316940026346162, + 0.0035316076149904175 + ], + [ + 0.007715609692541528, + 0.003550206471259584 + ], + [ + 0.007730955044586244, + 0.00019132979744973318 + ], + [ + 0.009336424193399195, + 0.00018939945065015175 + ] + ], + [ + [ + 0.009252331477461965, + 0.007064464015512196 + ], + [ + 0.007664476581996547, + 0.007100813246253874 + ], + [ + 0.0077168388488676005, + 0.0037890360289586245 + ], + [ + 0.009317500329104155, + 0.0037709340417550327 + ] + ], + [ + [ + 0.009133637560819315, + 0.010486750059482674 + ], + [ + 0.007570003652405531, + 0.010547943987822316 + ], + [ + 0.007658086790891089, + 0.007337431995162751 + ], + [ + 0.009244721518410794, + 0.007298284466429857 + ] + ], + [ + [ + 0.005926983926962396, + -0.01029708472252207 + ], + [ + 0.007520005076121733, + -0.010252918853885108 + ], + [ + 0.007604885877885446, + -0.007029251729067615 + ], + [ + 0.005991836497482654, + -0.007056974450987702 + ] + ], + [ + [ + 0.005994920855881677, + -0.006817326236941602 + ], + [ + 0.0076090741797107606, + -0.006790761296968063 + ], + [ + 0.007656862109011432, + -0.0034717189162025365 + ], + [ + 0.006031911552924934, + -0.00348453159775676 + ] + ], + [ + [ + 0.006033526536139388, + -0.0032445265467716984 + ], + [ + 0.0076589653695657255, + -0.003232376553051701 + ], + [ + 0.007673457633259986, + 0.00012923583625244552 + ], + [ + 0.00604492052393206, + 0.00013010311673244615 + ] + ], + [ + [ + 0.007656982140258626, + 0.0035497903300044363 + ], + [ + 0.006032252119683595, + 0.0035632651188723854 + ], + [ + 0.006046014581065988, + 0.00019074907980580927 + ], + [ + 0.007674532213456305, + 0.00019036654547941237 + ] + ], + [ + [ + 0.007603806671111512, + 0.007103466775538717 + ], + [ + 0.005991233207572011, + 0.007132560611590457 + ], + [ + 0.006029162967704917, + 0.0038061766467920657 + ], + [ + 0.007653368645940082, + 0.0037911336355201295 + ] + ], + [ + [ + 0.007512376267713323, + 0.010548432515056454 + ], + [ + 0.005921999334907293, + 0.010593734187209328 + ], + [ + 0.005992743366285903, + 0.007365304326252602 + ], + [ + 0.007604075037977003, + 0.007337057255210738 + ] + ], + [ + [ + 0.004181616391039552, + -0.013653419102105267 + ], + [ + 0.005764255747842652, + -0.01360365761255992 + ], + [ + 0.005862741732626132, + -0.010523649595891383 + ], + [ + 0.004251624752521095, + -0.010557307360019407 + ] + ], + [ + [ + 0.004259300087424667, + -0.010329609870938507 + ], + [ + 0.005872069560229651, + -0.010296183158867052 + ], + [ + 0.005933940312912701, + -0.007055544095217443 + ], + [ + 0.004302643766326008, + -0.007077043684286266 + ] + ], + [ + [ + 0.004306897166080629, + -0.006839187093599382 + ], + [ + 0.00593918927649322, + -0.006818207246811679 + ], + [ + 0.005972825341141778, + -0.003485028560326578 + ], + [ + 0.004330394508056877, + -0.0034959433278569972 + ] + ], + [ + [ + 0.00433220571897732, + -0.0032522592575152274 + ], + [ + 0.00597509499006593, + -0.0032423869441370228 + ], + [ + 0.005984618174382401, + 0.00013266082661763477 + ], + [ + 0.004338757972208839, + 0.00013244703384568434 + ] + ], + [ + [ + 0.005973026324586637, + 0.0035635885564354788 + ], + [ + 0.004330790843718878, + 0.0035741137611595124 + ], + [ + 0.004339388862982108, + 0.00019146319607962235 + ], + [ + 0.005985238395485044, + 0.00019065981771000299 + ] + ], + [ + [ + 0.005933228122337567, + 0.007133291275675636 + ], + [ + 0.0043023748328208985, + 0.00715398619711803 + ], + [ + 0.004330472503738352, + 0.0038169048434839353 + ], + [ + 0.005972179360413643, + 0.003806460661670808 + ] + ], + [ + [ + 0.005864300331069397, + 0.010597683614498527 + ], + [ + 0.004253916453156801, + 0.010630644390047371 + ], + [ + 0.004303813374059507, + 0.00738944763292102 + ], + [ + 0.005933557752046264, + 0.007368835833771691 + ] + ], + [ + [ + 0.00575399886626064, + 0.013887496483386174 + ], + [ + 0.004174959312171876, + 0.013938009677043856 + ], + [ + 0.00424716377863669, + 0.010860747815772526 + ], + [ + 0.0058558468366147285, + 0.010825280578547607 + ] + ], + [ + [ + 0.002529062794322825, + -0.013688114324726644 + ], + [ + 0.004126503172183473, + -0.01365490030881519 + ], + [ + 0.0041941396974482, + -0.01055835778806873 + ], + [ + 0.0025694094068861224, + -0.010581107504618019 + ] + ], + [ + [ + 0.002569895665345365, + -0.010352416424162575 + ], + [ + 0.004196195854299147, + -0.010331551852124811 + ], + [ + 0.004241602392272683, + -0.007078605059186172 + ], + [ + 0.00259779864524466, + -0.007091650307525909 + ] + ], + [ + [ + 0.0025984110550191777, + -0.006853482393289665 + ], + [ + 0.004243191059309404, + -0.006840003427897422 + ], + [ + 0.004267626239743924, + -0.0034964322941807204 + ], + [ + 0.0026130579418001407, + -0.003503305579536166 + ] + ], + [ + [ + 0.002618363012534666, + -0.003260121596079422 + ], + [ + 0.004273364108283728, + -0.0032530762019280218 + ], + [ + 0.0042791705051387794, + 0.00013191311376484352 + ], + [ + 0.0026212237833704633, + 0.00013125466037218413 + ] + ], + [ + [ + 0.004269933073063935, + 0.003574188568674321 + ], + [ + 0.002615517109642436, + 0.003581206750826564 + ], + [ + 0.0026205776935116867, + 0.00019180139025005326 + ], + [ + 0.004278523236039101, + 0.00019123824530516143 + ] + ], + [ + [ + 0.004241344376224412, + 0.007154537611020337 + ], + [ + 0.0025978561820225567, + 0.007168977369662691 + ], + [ + 0.002613084725595099, + 0.0038249018306269985 + ], + [ + 0.004267010135109424, + 0.003817151263768345 + ] + ], + [ + [ + 0.004193613897800998, + 0.010632342514149516 + ], + [ + 0.002569413404041278, + 0.010654761221718875 + ], + [ + 0.002597549825718567, + 0.00740526304641635 + ], + [ + 0.004240019446715676, + 0.0073908238434693945 + ] + ], + [ + [ + 0.0041171071962554494, + 0.013939494095247513 + ], + [ + 0.0025228441115914967, + 0.013972932969171943 + ], + [ + 0.0025655239106738836, + 0.010885143247063422 + ], + [ + 0.004188078577307591, + 0.010861774900242819 + ] + ], + [ + [ + 0.0008629605807857276, + -0.013704944451327259 + ], + [ + 0.002469100327568862, + -0.013688819550621283 + ], + [ + 0.0025096262329211503, + -0.010581496882034826 + ], + [ + 0.0008769709926767337, + -0.010592466641315154 + ] + ], + [ + [ + 0.0008750731268271609, + -0.010361772242838834 + ], + [ + 0.002509264307538905, + -0.010351865876356408 + ], + [ + 0.002536623182218192, + -0.007090843798130136 + ], + [ + 0.0008854805720539424, + -0.007096837791221709 + ] + ], + [ + [ + 0.0008866394170385412, + -0.0068592096553206005 + ], + [ + 0.0025387190255036665, + -0.006852957630820178 + ], + [ + 0.0025540185955665166, + -0.003502583733700595 + ], + [ + 0.0008922949042783687, + -0.0035055641844013927 + ] + ], + [ + [ + 0.0008935124214973775, + -0.0032612529218209634 + ], + [ + 0.0025556904564894567, + -0.003258005060998024 + ], + [ + 0.0025597125543448873, + 0.0001335633659562938 + ], + [ + 0.000894589289215786, + 0.00013345855097193445 + ] + ], + [ + [ + 0.002555919611991382, + 0.0035818493801609915 + ], + [ + 0.0008943105981790724, + 0.0035848074209428138 + ], + [ + 0.000897186827273847, + 0.000191994736555398 + ], + [ + 0.0025622980379875495, + 0.0001922729063166633 + ] + ], + [ + [ + 0.0025375784143135314, + 0.007169805986079161 + ], + [ + 0.0008867108295182173, + 0.007176027513492051 + ], + [ + 0.0008939337782499995, + 0.003828433733730261 + ], + [ + 0.0025550458105804198, + 0.0038255481944190523 + ] + ], + [ + [ + 0.0025095032348038133, + 0.010657432663672283 + ], + [ + 0.0008772981821064073, + 0.010668254661039184 + ], + [ + 0.0008878158229421716, + 0.007414668771039501 + ], + [ + 0.0025376925962430747, + 0.007407787043332368 + ] + ], + [ + [ + 0.0024643452340225784, + 0.013973444264031017 + ], + [ + 0.0008610889832316508, + 0.013989817794586367 + ], + [ + 0.0008764159491905794, + 0.010896631544258916 + ], + [ + 0.0025070388539548353, + 0.010885341083287725 + ] + ], + [ + [ + -0.0008056237994694977, + -0.013705567183170099 + ], + [ + 0.0008033498496308359, + -0.0137057116814065 + ], + [ + 0.0008167776002343013, + -0.010593165633708232 + ], + [ + -0.0008184848562956928, + -0.010592982262266576 + ] + ], + [ + [ + -0.0008203361855249329, + -0.010362989196200085 + ], + [ + 0.0008164421351052482, + -0.01036279411797192 + ], + [ + 0.0008242424031984041, + -0.007097820349031547 + ], + [ + -0.0008293407086807375, + -0.007097917260626492 + ] + ], + [ + [ + -0.0008278344960232267, + -0.006859840311737488 + ], + [ + 0.0008266796470540426, + -0.006860044583930143 + ], + [ + 0.0008316581211006842, + -0.0035063534070110874 + ], + [ + -0.0008324687485847532, + -0.003506151580479991 + ] + ], + [ + [ + -0.0008318198120631249, + -0.003262678340981198 + ], + [ + 0.0008327612866770167, + -0.003262558918726725 + ], + [ + 0.0008337681686298564, + 0.0001322019038359742 + ], + [ + -0.0008337636686460728, + 0.0001320102309664527 + ] + ], + [ + [ + 0.0008309880901960883, + 0.0035869709850877714 + ], + [ + -0.0008330378675606696, + 0.003585530160227359 + ], + [ + -0.0008316744691127428, + 0.00019263299194847267 + ], + [ + 0.0008358517127073983, + 0.00019411076314964043 + ] + ], + [ + [ + 0.0008266904699422592, + 0.007176630993138971 + ], + [ + -0.0008266387822658712, + 0.0071752104341604155 + ], + [ + -0.0008283895007193141, + 0.00382750093913561 + ], + [ + 0.0008351444524178676, + 0.0038289849977544716 + ] + ], + [ + [ + 0.0008171335281540606, + 0.010669407783039583 + ], + [ + -0.0008176750706707163, + 0.010670013226111504 + ], + [ + -0.0008270815947657372, + 0.007416374594498199 + ], + [ + 0.0008252593902188625, + 0.0074157873234693495 + ] + ], + [ + [ + 0.0008027113142350133, + 0.013989908917110501 + ], + [ + -0.0008034921972784734, + 0.013989802700456388 + ], + [ + -0.0008160400098747418, + 0.010896490152464435 + ], + [ + 0.0008172109985235956, + 0.010896615866694175 + ] + ], + [ + [ + -0.002470525966186779, + -0.013689741429229156 + ], + [ + -0.0008644608038310485, + -0.013706077386594278 + ], + [ + -0.0008775196360666763, + -0.010593634026641473 + ], + [ + -0.0025101816237832917, + -0.010582256646506822 + ] + ], + [ + [ + -0.002514818978148177, + -0.01035132978801719 + ], + [ + -0.0008806184879015541, + -0.010362721781310882 + ], + [ + -0.0008879716015469459, + -0.007097718520548177 + ], + [ + -0.002539193935788554, + -0.007090002289815821 + ] + ], + [ + [ + -0.0025396410282269542, + -0.006851876275126702 + ], + [ + -0.0008874766552112877, + -0.0068584250367547265 + ], + [ + -0.0008927317262176955, + -0.0035047715947856615 + ], + [ + -0.0025545496225083332, + -0.0035014717607254977 + ] + ], + [ + [ + -0.0025571718562868, + -0.0032597406754049157 + ], + [ + -0.0008949076903857281, + -0.0032638461054012575 + ], + [ + -0.0008944759298114433, + 0.00013077230584006763 + ], + [ + -0.0025596884053577084, + 0.00013163382632534992 + ] + ], + [ + [ + -0.0008922529589156244, + 0.003585617830967727 + ], + [ + -0.002553973630832827, + 0.003582107249390199 + ], + [ + -0.002558950722705197, + 0.00019241089648049814 + ], + [ + -0.0008937407602288675, + 0.0001927757292011804 + ] + ], + [ + [ + -0.0008862464131831093, + 0.007177325266502151 + ], + [ + -0.002537207629935467, + 0.00717056471958802 + ], + [ + -0.0025528585905052895, + 0.0038261841413464457 + ], + [ + -0.0008916334753117463, + 0.00382971124546127 + ] + ], + [ + [ + -0.0008754529253040618, + 0.01066879408914932 + ], + [ + -0.002507627670701846, + 0.010657813231457808 + ], + [ + -0.0025342831846278478, + 0.007408067645993378 + ], + [ + -0.000884307600563634, + 0.007415188067089543 + ] + ], + [ + [ + -0.0008622599387583323, + 0.013990612934925928 + ], + [ + -0.0024654886678123983, + 0.013973953494098737 + ], + [ + -0.002506434616668094, + 0.0108859893527532 + ], + [ + -0.0008758587056797695, + 0.010897464536577877 + ] + ], + [ + [ + -0.004124102626261704, + -0.013657221029172774 + ], + [ + -0.0025267075054755863, + -0.013688576483203506 + ], + [ + -0.0025693654110133086, + -0.010581312993847342 + ], + [ + -0.004194075200977221, + -0.0105599461832049 + ] + ], + [ + [ + -0.004199683891175889, + -0.010330508973897846 + ], + [ + -0.0025733833058962496, + -0.01035169610081033 + ], + [ + -0.0026001792529691875, + -0.007090591394674109 + ], + [ + -0.004244087090781768, + -0.007077040952123859 + ] + ], + [ + [ + -0.004246554619190137, + -0.006837755735689998 + ], + [ + -0.0026016717938990696, + -0.0068512096469010375 + ], + [ + -0.0026160024961760244, + -0.003500986246105385 + ], + [ + -0.004270698490396142, + -0.0034940650190258956 + ] + ], + [ + [ + -0.0042716440278087195, + -0.003252265694238719 + ], + [ + -0.002616493491984669, + -0.0032585891125916345 + ], + [ + -0.002620564864906971, + 0.000132618582465915 + ], + [ + -0.004278659601011435, + 0.0001325535473875693 + ] + ], + [ + [ + -0.0026145568130009314, + 0.0035825538821113766 + ], + [ + -0.004269166574973462, + 0.003575729878060666 + ], + [ + -0.004278012106588833, + 0.00019252828207003917 + ], + [ + -0.0026199184916716163, + 0.00019303417482067478 + ] + ], + [ + [ + -0.0025973483337475467, + 0.0071709435258970975 + ], + [ + -0.0042410193692463205, + 0.007157349832542259 + ], + [ + -0.004267880963230944, + 0.0038197472142081613 + ], + [ + -0.0026137713427043787, + 0.003826754617839342 + ] + ], + [ + [ + -0.002568804772320367, + 0.010656289340181075 + ], + [ + -0.004193000642860153, + 0.010633806807132344 + ], + [ + -0.0042384201424995405, + 0.007392149342984595 + ], + [ + -0.00259575412758062, + 0.007406733226869469 + ] + ], + [ + [ + -0.0025225673857536875, + 0.013973015137282326 + ], + [ + -0.004116946327524696, + 0.013940117602155896 + ], + [ + -0.004188825916614527, + 0.010863030755163839 + ], + [ + -0.0025663125302113916, + 0.010885309205795488 + ] + ], + [ + [ + -0.005771405634530402, + -0.013605213374247261 + ], + [ + -0.004188520434293538, + -0.013655127207740302 + ], + [ + -0.00425515626468312, + -0.010558406313924436 + ], + [ + -0.005866288105906752, + -0.01052343195642752 + ] + ], + [ + [ + -0.005871215156987045, + -0.010296993884458382 + ], + [ + -0.004258436074237023, + -0.010329298010305988 + ], + [ + -0.004303561358904424, + -0.007076172040692006 + ], + [ + -0.005934932220726322, + -0.007055731766567653 + ] + ], + [ + [ + -0.0059369276326103615, + -0.006818238917115676 + ], + [ + -0.00430452768859274, + -0.00683785601512661 + ], + [ + -0.004330033160141751, + -0.0034944631453613048 + ], + [ + -0.005972599082411996, + -0.003484819098050267 + ] + ], + [ + [ + -0.005976213061251855, + -0.0032446625237798747 + ], + [ + -0.004333203886878817, + -0.0032534006693652993 + ], + [ + -0.004341513813015977, + 0.0001311135596070839 + ], + [ + -0.005987503461305484, + 0.00013028314451305042 + ] + ], + [ + [ + -0.004329553975087541, + 0.0035762205526387886 + ], + [ + -0.005972031455385638, + 0.003565712945373639 + ], + [ + -0.005984115242894423, + 0.0001923498951030982 + ], + [ + -0.004338101453667653, + 0.0001933140010183139 + ] + ], + [ + [ + -0.0043016928124169785, + 0.007156508789918786 + ], + [ + -0.005932836826412662, + 0.00713537569799712 + ], + [ + -0.005970295708667712, + 0.003808190550461512 + ], + [ + -0.004328327580575964, + 0.0038192133829547757 + ] + ], + [ + [ + -0.004252363325269014, + 0.010634639462926143 + ], + [ + -0.005862868142689826, + 0.010601250388418979 + ], + [ + -0.005930513675958982, + 0.007372238928255136 + ], + [ + -0.00430046286492801, + 0.00739339646072306 + ] + ], + [ + [ + -0.0041760955669654, + 0.013938517624500964 + ], + [ + -0.0057556980857788745, + 0.01388721085633541 + ], + [ + -0.005856388704991554, + 0.010826832388605365 + ], + [ + -0.004247615652089727, + 0.010861951851267274 + ] + ], + [ + [ + -0.007520183441851699, + -0.010253468873693133 + ], + [ + -0.005927008451451448, + -0.01029680433230426 + ], + [ + -0.005993699717238978, + -0.0070560406232293 + ], + [ + -0.007606838702516622, + -0.0070292242588785945 + ] + ], + [ + [ + -0.007610381442415341, + -0.006789939900391166 + ], + [ + -0.005996112370798824, + -0.0068162567279349065 + ], + [ + -0.006033158173542735, + -0.0034832382018479225 + ], + [ + -0.007658245151846322, + -0.0034706325153889806 + ] + ], + [ + [ + -0.007660191725365013, + -0.0032298598973636667 + ], + [ + -0.006034609641386757, + -0.0032422675814020303 + ], + [ + -0.006045047222088543, + 0.00013228962460323703 + ], + [ + -0.00767372191385725, + 0.00013180686509985668 + ] + ], + [ + [ + -0.006033259926964805, + 0.003567183570412463 + ], + [ + -0.007658191996694245, + 0.0035533490747054674 + ], + [ + -0.007674661820769647, + 0.0001933600529348942 + ], + [ + -0.006046004398801042, + 0.00019425220124114306 + ] + ], + [ + [ + -0.0059934666190973, + 0.007133474224585805 + ], + [ + -0.007606332592241293, + 0.007104231688421561 + ], + [ + -0.007654800508021123, + 0.0037914095869311256 + ], + [ + -0.006030379634582437, + 0.003806724196952121 + ] + ], + [ + [ + -0.005921736233901831, + 0.01059814861329218 + ], + [ + -0.0075124379113402796, + 0.01055128281241601 + ], + [ + -0.007599956148784497, + 0.007339627279943464 + ], + [ + -0.005988226235556151, + 0.0073696366334949715 + ] + ], + [ + [ + -0.00914575213696036, + -0.010191831876403908 + ], + [ + -0.007578792867442972, + -0.01024860190057965 + ], + [ + -0.007666083582516367, + -0.007024948525689918 + ], + [ + -0.009254712960252428, + -0.006989749274687799 + ] + ], + [ + [ + -0.009259381411904974, + -0.006754659846027062 + ], + [ + -0.007669511569340748, + -0.006789209074998279 + ], + [ + -0.007717342976216056, + -0.003470492680433529 + ], + [ + -0.009319106745098348, + -0.003453814042447505 + ] + ], + [ + [ + -0.009322339135248384, + -0.0032123520517209053 + ], + [ + -0.007720045005046787, + -0.003228189750098036 + ], + [ + -0.0077339507533191595, + 0.0001329404168926085 + ], + [ + -0.009339550968810144, + 0.00013225031021999863 + ] + ], + [ + [ + -0.009342245129302172, + 0.0003704182648099993 + ], + [ + -0.007736735687534814, + 0.00037127047276228677 + ], + [ + -0.0077164333679553545, + 0.003729510755027057 + ], + [ + -0.009317431505769984, + 0.0037119617361813895 + ] + ], + [ + [ + -0.009314612382975684, + 0.003952520779469714 + ], + [ + -0.0077142400625017805, + 0.00397161504872177 + ], + [ + -0.007660984252529133, + 0.007280161255236536 + ], + [ + -0.009248169524113772, + 0.007242761330705139 + ] + ], + [ + [ + -0.009241736780371218, + 0.007475522759449616 + ], + [ + -0.007655841363594843, + 0.007514689691767686 + ], + [ + -0.007564120665910254, + 0.010718862363986267 + ], + [ + -0.009126762485587211, + 0.01065758848265179 + ] + ], + [ + [ + -0.01073728491574128, + -0.010115086242065663 + ], + [ + -0.00920395843423107, + -0.01018726292667007 + ], + [ + -0.009311833326188174, + -0.006986050487161831 + ], + [ + -0.010868686861740667, + -0.006940679512075604 + ] + ], + [ + [ + -0.010875323680968555, + -0.006709748377570294 + ], + [ + -0.009317141775179751, + -0.006752570295910168 + ], + [ + -0.009378546240043294, + -0.0034524343047710984 + ], + [ + -0.010950169970150402, + -0.0034321136422940293 + ] + ], + [ + [ + -0.010951990097885297, + -0.0031926729228967093 + ], + [ + -0.00937971674821613, + -0.0032123839528961735 + ], + [ + -0.009397209623478753, + 0.00013154684441542164 + ], + [ + -0.010973186159636423, + 0.0001306675690350145 + ] + ], + [ + [ + -0.010975194738795387, + 0.00036937059437613755 + ], + [ + -0.00939932264905935, + 0.0003709519428730845 + ], + [ + -0.009374944341721866, + 0.0037118129606741436 + ], + [ + -0.010945592539400521, + 0.0036893726161954664 + ] + ], + [ + [ + -0.010940574702248585, + 0.003927970794395612 + ], + [ + -0.009370605626783253, + 0.003952533734396012 + ], + [ + -0.009304796463826408, + 0.007241999908731995 + ], + [ + -0.01085992357059408, + 0.007194427809280355 + ] + ], + [ + [ + -0.010852151786513768, + 0.00742469682055629 + ], + [ + -0.009298457218924763, + 0.007474035209960221 + ], + [ + -0.009183029625708003, + 0.010655186677144938 + ], + [ + -0.010711972638639926, + 0.01057858286087329 + ] + ], + [ + [ + -0.012450020704969943, + -0.006654621552045538 + ], + [ + -0.010932647546899302, + -0.006707755989129533 + ], + [ + -0.011006267305823613, + -0.0034310709934952505 + ], + [ + -0.012539243180349487, + -0.0034052881457345384 + ] + ], + [ + [ + -0.012543350485675715, + -0.0031678775781015804 + ], + [ + -0.01100965731440911, + -0.0031918079074193446 + ], + [ + -0.011031017363844244, + 0.0001306882057654038 + ], + [ + -0.012569156713004102, + 0.0001295687787449714 + ] + ], + [ + [ + -0.01257087777732667, + 0.00036772799930792134 + ], + [ + -0.01103285825849449, + 0.0003694001147194076 + ], + [ + -0.01100212788690124, + 0.0036885613692082277 + ], + [ + -0.012534146728946963, + 0.003661431305314648 + ] + ], + [ + [ + -0.012531582657882966, + 0.003897931768115278 + ], + [ + -0.011000439776834202, + 0.003926930611834395 + ], + [ + -0.010917092625978874, + 0.007192475046419375 + ], + [ + -0.012431724914333631, + 0.007135414840721072 + ] + ], + [ + [ + 0.005949247982341469, + -0.010520908733162287 + ], + [ + 0.0059044292195470595, + -0.012054732911007398 + ], + [ + 0.009092226135026098, + -0.011923992078615202 + ], + [ + 0.00916566966167597, + -0.010413676771254238 + ] + ], + [ + [ + 0.0058965514206712035, + 0.012348719500762963 + ], + [ + 0.005942849478604281, + 0.010823461585513514 + ], + [ + 0.009153556899366543, + 0.010709884123151861 + ], + [ + 0.009077524935262685, + 0.012212690703762496 + ] + ], + [ + [ + -0.005906415068716419, + -0.012056348269357075 + ], + [ + -0.0059518549518743176, + -0.010522286232754516 + ], + [ + -0.009168967624450505, + -0.01041604590623605 + ], + [ + -0.00909581429660622, + -0.011927818031683829 + ] + ], + [ + [ + -0.005941215222791776, + 0.010824088753200537 + ], + [ + -0.005895556552304603, + 0.012349381003224897 + ], + [ + -0.009078297908112631, + 0.0122123596217237 + ], + [ + -0.009152914782273659, + 0.010710371170072832 + ] + ], + [ + [ + 0.01407342654846195, + -0.0034393840742313934 + ], + [ + 0.012591106719022449, + -0.003471264103752152 + ], + [ + 0.012500774914880249, + -0.00671697063131359 + ], + [ + 0.013966977320548366, + -0.006649877619138724 + ] + ], + [ + [ + 0.013950167421589336, + 0.00689316355012592 + ], + [ + 0.01248979112715309, + 0.006960771974716379 + ], + [ + 0.012586001153653907, + 0.003720638550826911 + ], + [ + 0.014065573864394809, + 0.003685516018699705 + ] + ], + [ + [ + 0.012437420633935763, + -0.006941716319317259 + ], + [ + 0.0109220522599221, + -0.00699839996395688 + ], + [ + 0.010788712045660993, + -0.010168372319334868 + ], + [ + 0.012278865055636173, + -0.010077517647892007 + ] + ], + [ + [ + 0.012260543311090945, + 0.010311608253763052 + ], + [ + 0.01077445149103346, + 0.01040227591827958 + ], + [ + 0.010913281647696583, + 0.007242860816448199 + ], + [ + 0.012426140609903788, + 0.007184200593802228 + ] + ], + [ + [ + -0.01228109699335239, + -0.010082183697697585 + ], + [ + -0.010790862500901922, + -0.010169705028915932 + ], + [ + -0.010923983486486339, + -0.00699877540927274 + ], + [ + -0.012439432089060426, + -0.0069429411765770084 + ] + ], + [ + [ + -0.012430526664270527, + 0.007185116478586322 + ], + [ + -0.010916210643669934, + 0.007243861487540305 + ], + [ + -0.010778646001513133, + 0.010404133037340932 + ], + [ + -0.012268189275141892, + 0.010313490945277372 + ] + ], + [ + [ + -0.013967019480947867, + -0.006655097501352367 + ], + [ + -0.012503661899499348, + -0.006718135033395712 + ], + [ + -0.012594713862414472, + -0.0034713904696457762 + ], + [ + -0.014076698171842102, + -0.0034401784558768006 + ] + ], + [ + [ + -0.014072173458704337, + 0.0036871518079708084 + ], + [ + -0.012589781897452513, + 0.003721145314279972 + ], + [ + -0.012494963378367328, + 0.006961594006911202 + ], + [ + -0.013960432188631121, + 0.006894837229439073 + ] + ] + ], + "color": { + "comment": "Yellow", + "value": [ + 1.0, + 1.0, + 0.0, + 1.0 + ] + } + } +] \ No newline at end of file diff --git a/plugins/MosaicCamera/resources/RubinMosaic.json b/plugins/MosaicCamera/resources/RubinMosaic.json new file mode 100644 index 0000000000000..a43e5c12c14ce --- /dev/null +++ b/plugins/MosaicCamera/resources/RubinMosaic.json @@ -0,0 +1,3924 @@ +[ + { + "name": "E2V", + "corners": [ + [ + [ + 0.01834639524087756, + 0.018390984144617213 + ], + [ + 0.018348563965375937, + 0.014422337724567962 + ], + [ + 0.014468595819035656, + 0.014423996515432115 + ], + [ + 0.014466893578866316, + 0.018393109419810403 + ] + ], + [ + [ + 0.01834862360101588, + 0.014297326616356644 + ], + [ + 0.01835024418533624, + 0.010327405350145383 + ], + [ + 0.014469914605645683, + 0.010328588781031817 + ], + [ + 0.014468642626776773, + 0.014298970814159609 + ] + ], + [ + [ + 0.018350286658806923, + 0.0102023599361032 + ], + [ + 0.018351364887380126, + 0.0062315328436198065 + ], + [ + 0.014470794220642742, + 0.00623224515553648 + ], + [ + 0.014469947942337653, + 0.010203528928313284 + ] + ], + [ + [ + 0.014252727585516255, + 0.018393211840565905 + ], + [ + 0.014254404250569156, + 0.014424076454612796 + ], + [ + 0.010373195550631677, + 0.01442531596623177 + ], + [ + 0.010371979652495306, + 0.018394799957636328 + ] + ], + [ + [ + 0.014254450355028656, + 0.014299050050058677 + ], + [ + 0.014255703222047668, + 0.010328645811539366 + ], + [ + 0.010374137536520715, + 0.010329530102731228 + ], + [ + 0.010373228984782467, + 0.014300278656531301 + ] + ], + [ + [ + 0.014255736057833323, + 0.010203585262996875 + ], + [ + 0.014256569620013483, + 0.0062322794822355235 + ], + [ + 0.010374765823008924, + 0.0062328117353223364 + ], + [ + 0.01037416134816802, + 0.010204458764888024 + ] + ], + [ + [ + 0.01015775488371211, + 0.01839487290337595 + ], + [ + 0.010158945477297968, + 0.014425372899280503 + ], + [ + 0.0062768553411847935, + 0.01442619757620982 + ], + [ + 0.006276121427892352, + 0.018395929530573393 + ] + ], + [ + [ + 0.010158978215624798, + 0.014300335088673717 + ], + [ + 0.010159867858537498, + 0.010329570719589712 + ], + [ + 0.006277423915951641, + 0.010330159053409062 + ], + [ + 0.006276875521843277, + 0.014301152509832323 + ] + ], + [ + [ + 0.010159891174608984, + 0.010204498886170692 + ], + [ + 0.010160483068807747, + 0.006232836182421245 + ], + [ + 0.006277803141585748, + 0.006233190296766815 + ], + [ + 0.006277438288396498, + 0.010205080041525774 + ] + ], + [ + [ + 0.01835139522539771, + 0.006082226567808942 + ], + [ + 0.01835193177960031, + 0.0021108551531774647 + ], + [ + 0.014471239158501572, + 0.002111096136705617 + ], + [ + 0.014470818032167652, + 0.0060829217661185885 + ] + ], + [ + [ + 0.01835194022378369, + 0.0019857755364457654 + ], + [ + 0.01835194022378369, + -0.0019857755364457654 + ], + [ + 0.014471245786086306, + -0.001986002236139165 + ], + [ + 0.014471245786086306, + 0.001986002236139165 + ] + ], + [ + [ + 0.01835193177960031, + -0.0021108551531774647 + ], + [ + 0.01835139522539771, + -0.006082226567808942 + ], + [ + 0.014470818032167652, + -0.006082921766118588 + ], + [ + 0.014471239158501572, + -0.002111096136705617 + ] + ], + [ + [ + 0.014256593073741726, + 0.006082955268098344 + ], + [ + 0.014257007872092066, + 0.0021111077497989682 + ], + [ + 0.010375083628618163, + 0.002111287816367708 + ], + [ + 0.010374782830894679, + 0.006083474733427027 + ] + ], + [ + [ + 0.014257014400087666, + 0.0019860131608882836 + ], + [ + 0.014257014400087666, + -0.0019860131608882836 + ], + [ + 0.010375088362489994, + -0.0019861825543446916 + ], + [ + 0.010375088362489994, + 0.0019861825543446916 + ] + ], + [ + [ + 0.014257007872092066, + -0.0021111077497989682 + ], + [ + 0.014256593073741726, + -0.006082955268098343 + ], + [ + 0.010374782830894679, + -0.006083474733427027 + ], + [ + 0.010375083628618163, + -0.002111287816367708 + ] + ], + [ + [ + 0.010160499722713452, + 0.006083498593164215 + ], + [ + 0.010160794259994917, + 0.002111296087048672 + ], + [ + 0.006277994964096426, + 0.0021114158870443253 + ], + [ + 0.0062778134072951275, + 0.006083844199592513 + ] + ], + [ + [ + 0.010160798895341201, + 0.0019861903347961037 + ], + [ + 0.010160798895341201, + -0.0019861903347961037 + ], + [ + 0.006277997821383259, + -0.001986303033862647 + ], + [ + 0.006277997821383259, + 0.001986303033862647 + ] + ], + [ + [ + 0.010160794259994917, + -0.002111296087048672 + ], + [ + 0.010160499722713452, + -0.006083498593164215 + ], + [ + 0.0062778134072951275, + -0.006083844199592512 + ], + [ + 0.006277994964096426, + -0.0021114158870443253 + ] + ], + [ + [ + 0.018351364887380126, + -0.006231532843619808 + ], + [ + 0.01835028665880692, + -0.0102023599361032 + ], + [ + 0.014469947942337653, + -0.010203528928313286 + ], + [ + 0.014470794220642742, + -0.006232245155536482 + ] + ], + [ + [ + 0.01835024418533624, + -0.010327405350145384 + ], + [ + 0.01834862360101588, + -0.014297326616356645 + ], + [ + 0.014468642626776771, + -0.014298970814159609 + ], + [ + 0.014469914605645683, + -0.010328588781031819 + ] + ], + [ + [ + 0.018348563965375937, + -0.014422337724567967 + ], + [ + 0.01834639524087756, + -0.018390984144617217 + ], + [ + 0.014466893578866316, + -0.018393109419810403 + ], + [ + 0.014468595819035656, + -0.014423996515432119 + ] + ], + [ + [ + 0.014256569620013483, + -0.006232279482235525 + ], + [ + 0.014255736057833323, + -0.010203585262996875 + ], + [ + 0.01037416134816802, + -0.010204458764888026 + ], + [ + 0.010374765823008924, + -0.006232811735322338 + ] + ], + [ + [ + 0.014255703222047668, + -0.010328645811539368 + ], + [ + 0.014254450355028656, + -0.014299050050058678 + ], + [ + 0.01037322898478247, + -0.014300278656531305 + ], + [ + 0.010374137536520717, + -0.01032953010273123 + ] + ], + [ + [ + 0.014254404250569156, + -0.0144240764546128 + ], + [ + 0.014252727585516257, + -0.018393211840565908 + ], + [ + 0.010371979652495306, + -0.01839479995763633 + ], + [ + 0.010373195550631677, + -0.014425315966231771 + ] + ], + [ + [ + 0.010160483068807747, + -0.006232836182421247 + ], + [ + 0.010159891174608984, + -0.010204498886170692 + ], + [ + 0.006277438288396498, + -0.010205080041525776 + ], + [ + 0.006277803141585747, + -0.0062331902967668155 + ] + ], + [ + [ + 0.010159867858537498, + -0.010329570719589714 + ], + [ + 0.010158978215624798, + -0.01430033508867372 + ], + [ + 0.006276875521843276, + -0.014301152509832325 + ], + [ + 0.00627742391595164, + -0.010330159053409064 + ] + ], + [ + [ + 0.010158945477297968, + -0.014425372899280507 + ], + [ + 0.01015775488371211, + -0.018394872903375957 + ], + [ + 0.006276121427892352, + -0.018395929530573396 + ], + [ + 0.006276855341184793, + -0.01442619757620982 + ] + ], + [ + [ + 0.01834630324429571, + -0.0185401670710437 + ], + [ + 0.018343575355022016, + -0.02250715118453407 + ], + [ + 0.014464680187159708, + -0.022509768008202775 + ], + [ + 0.014466821369616143, + -0.018542310013847617 + ] + ], + [ + [ + 0.018343480591644513, + -0.022632057842028992 + ], + [ + 0.018340187157559123, + -0.026597002013033385 + ], + [ + 0.014462020637791272, + -0.0266001167637938 + ], + [ + 0.014464605804237852, + -0.02263468972328368 + ] + ], + [ + [ + 0.018340074410604857, + -0.02672183822165426 + ], + [ + 0.01833620386284607, + -0.030684344320173487 + ], + [ + 0.014458893864271287, + -0.030687967926225586 + ], + [ + 0.014461932136181225, + -0.026724968338770333 + ] + ], + [ + [ + 0.014252656461128542, + -0.018542413286083914 + ], + [ + 0.014250547446155577, + -0.022509894119308326 + ], + [ + 0.010370398612233475, + -0.022511849595428866 + ], + [ + 0.010371928073488725, + -0.01854401460661982 + ] + ], + [ + [ + 0.014250474180658505, + -0.022634816560110016 + ], + [ + 0.014247927848186109, + -0.026600266873691495 + ], + [ + 0.010368498834261481, + -0.026602594503908134 + ], + [ + 0.010370345479436448, + -0.022636783289942043 + ] + ], + [ + [ + 0.014247840675967266, + -0.02672511918930413 + ], + [ + 0.014244848039605362, + -0.030688142562809186 + ], + [ + 0.010366265246585266, + -0.030690850547307455 + ], + [ + 0.010368435614681508, + -0.026727458304923533 + ] + ], + [ + [ + 0.010157704378118132, + -0.018544088158849437 + ], + [ + 0.010156206745839209, + -0.02251193941573198 + ], + [ + 0.006275167103373632, + -0.022513240482256426 + ], + [ + 0.006276090294741015, + -0.018545153571375157 + ] + ], + [ + [ + 0.010156154718742394, + -0.022636873627190267 + ], + [ + 0.010154346501492911, + -0.026602701419583603 + ], + [ + 0.006274020368984192, + -0.026604250129442005 + ], + [ + 0.0062751350318891045, + -0.022638182182090898 + ] + ], + [ + [ + 0.010154284597452403, + -0.02672756574820511 + ], + [ + 0.010152159391313921, + -0.030690974935676803 + ], + [ + 0.006272672117393783, + -0.030692776761040205 + ], + [ + 0.00627398220836615, + -0.026729122101052574 + ] + ], + [ + [ + 0.006037619549417504, + 0.018395978113232424 + ], + [ + 0.00603832549707651, + 0.014426235493818407 + ], + [ + 0.0021557057048326275, + 0.014426645870802968 + ], + [ + 0.002155453971955117, + 0.01839650391808566 + ] + ], + [ + [ + 0.006038344908749775, + 0.01430119009382394 + ], + [ + 0.006038872406166657, + 0.010330186104141196 + ], + [ + 0.0021559007254518506, + 0.010330478869776479 + ], + [ + 0.0021557126267949113, + 0.014301596860086078 + ] + ], + [ + [ + 0.0060388862309433715, + 0.010205106762199627 + ], + [ + 0.006039237181201076, + 0.006233206578381133 + ], + [ + 0.0021560307990007425, + 0.006233382791353023 + ], + [ + 0.0021559056551756824, + 0.010205395955651689 + ] + ], + [ + [ + 0.0019411706044281688, + 0.018396518420487337 + ], + [ + 0.0019413973041215685, + 0.01442665718951877 + ], + [ + -0.0019413973041215685, + 0.01442665718951877 + ], + [ + -0.0019411706044281688, + 0.018396518420487337 + ] + ], + [ + [ + 0.0019414035377396204, + 0.014301608079212748 + ], + [ + 0.0019415729311960284, + 0.010330486944605442 + ], + [ + -0.0019415729311960284, + 0.010330486944605442 + ], + [ + -0.0019414035377396204, + 0.014301608079212748 + ] + ], + [ + [ + 0.0019415773706903084, + 0.010205403931955102 + ], + [ + 0.0019416900697568516, + 0.00623338765151213 + ], + [ + -0.0019416900697568516, + 0.00623338765151213 + ], + [ + -0.0019415773706903084, + 0.010205403931955102 + ] + ], + [ + [ + -0.002155453971955117, + 0.01839650391808566 + ], + [ + -0.0021557057048326275, + 0.014426645870802968 + ], + [ + -0.00603832549707651, + 0.014426235493818407 + ], + [ + -0.006037619549417504, + 0.018395978113232424 + ] + ], + [ + [ + -0.0021557126267949113, + 0.014301596860086078 + ], + [ + -0.0021559007254518506, + 0.010330478869776479 + ], + [ + -0.006038872406166657, + 0.010330186104141196 + ], + [ + -0.006038344908749775, + 0.01430119009382394 + ] + ], + [ + [ + -0.0021559056551756824, + 0.010205395955651689 + ], + [ + -0.0021560307990007425, + 0.006233382791353023 + ], + [ + -0.006039237181201076, + 0.006233206578381133 + ], + [ + -0.0060388862309433715, + 0.010205106762199627 + ] + ], + [ + [ + 0.006039247055728695, + 0.006083860090025068 + ], + [ + 0.0060394216941745, + 0.0021114213952493793 + ], + [ + 0.002156096593543867, + 0.00211148100951192 + ], + [ + 0.0021560343201107073, + 0.006084032069300254 + ] + ], + [ + [ + 0.006039424442582142, + 0.0019863082155786456 + ], + [ + 0.006039424442582142, + -0.0019863082155786456 + ], + [ + 0.002156097573583869, + -0.0019863642963111844 + ], + [ + 0.002156097573583869, + 0.0019863642963111844 + ] + ], + [ + [ + 0.0060394216941745, + -0.0021114213952493793 + ], + [ + 0.006039247055728695, + -0.006083860090025068 + ], + [ + 0.0021560343201107073, + -0.006084032069300254 + ], + [ + 0.002156096593543867, + -0.00211148100951192 + ] + ], + [ + [ + 0.001941693240714674, + 0.006084036812688888 + ], + [ + 0.001941749321447213, + 0.0021114826537415496 + ], + [ + -0.001941749321447213, + 0.0021114826537415496 + ], + [ + -0.001941693240714674, + 0.006084036812688888 + ] + ], + [ + [ + 0.0019417502040283943, + 0.0019863658430819935 + ], + [ + 0.0019417502040283943, + -0.0019863658430819935 + ], + [ + -0.0019417502040283943, + -0.0019863658430819935 + ], + [ + -0.0019417502040283943, + 0.0019863658430819935 + ] + ], + [ + [ + 0.001941749321447213, + -0.0021114826537415496 + ], + [ + 0.001941693240714674, + -0.006084036812688887 + ], + [ + -0.001941693240714674, + -0.006084036812688887 + ], + [ + -0.001941749321447213, + -0.0021114826537415496 + ] + ], + [ + [ + -0.0021560343201107073, + 0.006084032069300254 + ], + [ + -0.002156096593543867, + 0.00211148100951192 + ], + [ + -0.0060394216941745, + 0.0021114213952493793 + ], + [ + -0.006039247055728695, + 0.006083860090025068 + ] + ], + [ + [ + -0.002156097573583869, + 0.0019863642963111844 + ], + [ + -0.002156097573583869, + -0.0019863642963111844 + ], + [ + -0.006039424442582142, + -0.0019863082155786456 + ], + [ + -0.006039424442582142, + 0.0019863082155786456 + ] + ], + [ + [ + -0.002156096593543867, + -0.00211148100951192 + ], + [ + -0.0021560343201107073, + -0.006084032069300254 + ], + [ + -0.006039247055728695, + -0.006083860090025068 + ], + [ + -0.0060394216941745, + -0.0021114213952493793 + ] + ], + [ + [ + 0.006039237181201076, + -0.0062332065783811345 + ], + [ + 0.006038886230943371, + -0.010205106762199628 + ], + [ + 0.0021559056551756824, + -0.01020539595565169 + ], + [ + 0.0021560307990007425, + -0.006233382791353025 + ] + ], + [ + [ + 0.006038872406166657, + -0.010330186104141197 + ], + [ + 0.006038344908749775, + -0.014301190093823942 + ], + [ + 0.0021557126267949113, + -0.014301596860086082 + ], + [ + 0.0021559007254518506, + -0.01033047886977648 + ] + ], + [ + [ + 0.006038325497076511, + -0.014426235493818412 + ], + [ + 0.006037619549417504, + -0.018395978113232427 + ], + [ + 0.0021554539719551165, + -0.018396503918085665 + ], + [ + 0.0021557057048326275, + -0.014426645870802971 + ] + ], + [ + [ + 0.0019416900697568516, + -0.0062333876515121315 + ], + [ + 0.0019415773706903084, + -0.010205403931955103 + ], + [ + -0.0019415773706903084, + -0.010205403931955103 + ], + [ + -0.0019416900697568516, + -0.0062333876515121315 + ] + ], + [ + [ + 0.0019415729311960282, + -0.010330486944605442 + ], + [ + 0.0019414035377396206, + -0.014301608079212751 + ], + [ + -0.0019414035377396206, + -0.014301608079212751 + ], + [ + -0.0019415729311960282, + -0.010330486944605442 + ] + ], + [ + [ + 0.0019413973041215685, + -0.014426657189518771 + ], + [ + 0.0019411706044281688, + -0.01839651842048734 + ], + [ + -0.0019411706044281688, + -0.01839651842048734 + ], + [ + -0.0019413973041215685, + -0.014426657189518771 + ] + ], + [ + [ + -0.0021560307990007425, + -0.006233382791353025 + ], + [ + -0.0021559056551756824, + -0.01020539595565169 + ], + [ + -0.006038886230943371, + -0.010205106762199628 + ], + [ + -0.006039237181201076, + -0.0062332065783811345 + ] + ], + [ + [ + -0.0021559007254518506, + -0.01033047886977648 + ], + [ + -0.0021557126267949113, + -0.014301596860086082 + ], + [ + -0.006038344908749775, + -0.014301190093823942 + ], + [ + -0.006038872406166657, + -0.010330186104141197 + ] + ], + [ + [ + -0.0021557057048326275, + -0.014426645870802971 + ], + [ + -0.0021554539719551165, + -0.018396503918085665 + ], + [ + -0.006037619549417504, + -0.018395978113232427 + ], + [ + -0.006038325497076511, + -0.014426235493818412 + ] + ], + [ + [ + 0.006037589602581689, + -0.018545202557986182 + ], + [ + 0.006036701588751924, + -0.022513300304413994 + ], + [ + 0.0021551266356864573, + -0.02251394775553154 + ], + [ + 0.0021554432932259413, + -0.018545732734832468 + ] + ], + [ + [ + 0.006036670739318462, + -0.022638242348573107 + ], + [ + 0.006035598549106462, + -0.026604321338666158 + ], + [ + 0.0021547332990697627, + -0.02660509203457798 + ], + [ + 0.0021551156350259754, + -0.02263889352637273 + ] + ], + [ + [ + 0.006035561842532645, + -0.02672919366171876 + ], + [ + 0.006034301669772514, + -0.030692859609234752 + ], + [ + 0.0021542708365451546, + -0.030693756277955318 + ], + [ + 0.0021547202096954825, + -0.026729968161391053 + ] + ], + [ + [ + 0.0019411609876278618, + -0.01854574735782124 + ], + [ + 0.0019408758195560653, + -0.02251396561316209 + ], + [ + -0.0019408758195560653, + -0.02251396561316209 + ], + [ + -0.0019411609876278618, + -0.01854574735782124 + ] + ], + [ + [ + 0.001940865912836536, + -0.0226389114867926 + ], + [ + 0.0019405215975557696, + -0.02660511329156382 + ], + [ + -0.0019405215975557696, + -0.02660511329156382 + ], + [ + -0.001940865912836536, + -0.0226389114867926 + ] + ], + [ + [ + 0.001940509809828239, + -0.026729989523293377 + ], + [ + 0.001940105123644249, + -0.030693781009582564 + ], + [ + -0.001940105123644249, + -0.030693781009582564 + ], + [ + -0.001940509809828239, + -0.026729989523293377 + ] + ], + [ + [ + -0.0021554432932259413, + -0.018545732734832468 + ], + [ + -0.0021551266356864573, + -0.02251394775553154 + ], + [ + -0.006036701588751924, + -0.022513300304413994 + ], + [ + -0.006037589602581689, + -0.018545202557986182 + ] + ], + [ + [ + -0.0021551156350259754, + -0.02263889352637273 + ], + [ + -0.0021547332990697627, + -0.02660509203457798 + ], + [ + -0.006035598549106462, + -0.026604321338666158 + ], + [ + -0.006036670739318462, + -0.022638242348573107 + ] + ], + [ + [ + -0.0021547202096954825, + -0.026729968161391053 + ], + [ + -0.0021542708365451546, + -0.030693756277955318 + ], + [ + -0.006034301669772514, + -0.030692859609234752 + ], + [ + -0.006035561842532645, + -0.02672919366171876 + ] + ], + [ + [ + -0.006272672117393783, + 0.03069277676104021 + ], + [ + -0.006273982208366151, + 0.02672912210105258 + ], + [ + -0.010154284597452405, + 0.026727565748205118 + ], + [ + -0.010152159391313923, + 0.03069097493567681 + ] + ], + [ + [ + -0.006274020368984192, + 0.026604250129442005 + ], + [ + -0.0062751350318891045, + 0.022638182182090898 + ], + [ + -0.010156154718742394, + 0.022636873627190267 + ], + [ + -0.010154346501492911, + 0.026602701419583603 + ] + ], + [ + [ + -0.006275167103373631, + 0.022513240482256423 + ], + [ + -0.006276090294741015, + 0.018545153571375154 + ], + [ + -0.010157704378118132, + 0.018544088158849434 + ], + [ + -0.010156206745839209, + 0.022511939415731978 + ] + ], + [ + [ + -0.010366265246585269, + 0.030690850547307462 + ], + [ + -0.01036843561468151, + 0.026727458304923537 + ], + [ + -0.014247840675967268, + 0.026725119189304133 + ], + [ + -0.014244848039605365, + 0.030688142562809193 + ] + ], + [ + [ + -0.010368498834261483, + 0.026602594503908134 + ], + [ + -0.01037034547943645, + 0.022636783289942043 + ], + [ + -0.014250474180658508, + 0.022634816560110016 + ], + [ + -0.01424792784818611, + 0.026600266873691495 + ] + ], + [ + [ + -0.010370398612233475, + 0.022511849595428863 + ], + [ + -0.010371928073488726, + 0.018544014606619818 + ], + [ + -0.014252656461128548, + 0.01854241328608391 + ], + [ + -0.01425054744615558, + 0.022509894119308323 + ] + ], + [ + [ + -0.014458893864271289, + 0.030687967926225593 + ], + [ + -0.014461932136181226, + 0.026724968338770333 + ], + [ + -0.01834007441060486, + 0.026721838221654266 + ], + [ + -0.018336203862846075, + 0.030684344320173494 + ] + ], + [ + [ + -0.014462020637791274, + 0.0266001167637938 + ], + [ + -0.014464605804237855, + 0.02263468972328368 + ], + [ + -0.018343480591644517, + 0.022632057842028992 + ], + [ + -0.018340187157559126, + 0.02659700201303339 + ] + ], + [ + [ + -0.014464680187159712, + 0.02250976800820277 + ], + [ + -0.014466821369616144, + 0.018542310013847617 + ], + [ + -0.01834630324429571, + 0.0185401670710437 + ], + [ + -0.01834357535502202, + 0.022507151184534068 + ] + ], + [ + [ + -0.006276121427892352, + 0.018395929530573393 + ], + [ + -0.0062768553411847935, + 0.01442619757620982 + ], + [ + -0.010158945477297968, + 0.014425372899280503 + ], + [ + -0.01015775488371211, + 0.01839487290337595 + ] + ], + [ + [ + -0.006276875521843277, + 0.014301152509832323 + ], + [ + -0.006277423915951641, + 0.010330159053409062 + ], + [ + -0.010159867858537498, + 0.010329570719589712 + ], + [ + -0.010158978215624798, + 0.014300335088673717 + ] + ], + [ + [ + -0.006277438288396498, + 0.010205080041525774 + ], + [ + -0.006277803141585748, + 0.006233190296766815 + ], + [ + -0.010160483068807747, + 0.006232836182421245 + ], + [ + -0.010159891174608984, + 0.010204498886170692 + ] + ], + [ + [ + -0.010371979652495308, + 0.018394799957636328 + ], + [ + -0.010373195550631679, + 0.01442531596623177 + ], + [ + -0.014254404250569161, + 0.014424076454612798 + ], + [ + -0.014252727585516258, + 0.018393211840565905 + ] + ], + [ + [ + -0.01037322898478247, + 0.014300278656531303 + ], + [ + -0.010374137536520719, + 0.010329530102731228 + ], + [ + -0.014255703222047672, + 0.010328645811539368 + ], + [ + -0.014254450355028661, + 0.014299050050058677 + ] + ], + [ + [ + -0.010374161348168022, + 0.010204458764888024 + ], + [ + -0.010374765823008924, + 0.0062328117353223364 + ], + [ + -0.014256569620013487, + 0.006232279482235524 + ], + [ + -0.014255736057833325, + 0.010203585262996875 + ] + ], + [ + [ + -0.014466893578866317, + 0.018393109419810403 + ], + [ + -0.014468595819035658, + 0.014423996515432115 + ], + [ + -0.01834856396537594, + 0.014422337724567963 + ], + [ + -0.018346395240877562, + 0.018390984144617213 + ] + ], + [ + [ + -0.014468642626776773, + 0.014298970814159607 + ], + [ + -0.014469914605645685, + 0.010328588781031817 + ], + [ + -0.018350244185336245, + 0.010327405350145383 + ], + [ + -0.01834862360101588, + 0.014297326616356644 + ] + ], + [ + [ + -0.014469947942337658, + 0.010203528928313284 + ], + [ + -0.014470794220642746, + 0.006232245155536481 + ], + [ + -0.01835136488738013, + 0.006231532843619807 + ], + [ + -0.018350286658806923, + 0.010202359936103198 + ] + ], + [ + [ + -0.0062778134072951275, + 0.006083844199592513 + ], + [ + -0.006277994964096426, + 0.0021114158870443253 + ], + [ + -0.010160794259994917, + 0.002111296087048672 + ], + [ + -0.010160499722713452, + 0.006083498593164215 + ] + ], + [ + [ + -0.006277997821383259, + 0.001986303033862647 + ], + [ + -0.006277997821383259, + -0.001986303033862647 + ], + [ + -0.010160798895341201, + -0.0019861903347961037 + ], + [ + -0.010160798895341201, + 0.0019861903347961037 + ] + ], + [ + [ + -0.006277994964096426, + -0.0021114158870443253 + ], + [ + -0.0062778134072951275, + -0.006083844199592512 + ], + [ + -0.010160499722713452, + -0.006083498593164215 + ], + [ + -0.010160794259994917, + -0.002111296087048672 + ] + ], + [ + [ + -0.010374782830894682, + 0.006083474733427028 + ], + [ + -0.010375083628618165, + 0.002111287816367708 + ], + [ + -0.014257007872092067, + 0.002111107749798968 + ], + [ + -0.01425659307374173, + 0.006082955268098345 + ] + ], + [ + [ + -0.010375088362489994, + 0.001986182554344691 + ], + [ + -0.010375088362489994, + -0.001986182554344691 + ], + [ + -0.014257014400087668, + -0.0019860131608882836 + ], + [ + -0.014257014400087668, + 0.0019860131608882836 + ] + ], + [ + [ + -0.010375083628618165, + -0.002111287816367708 + ], + [ + -0.010374782830894682, + -0.006083474733427027 + ], + [ + -0.01425659307374173, + -0.006082955268098344 + ], + [ + -0.014257007872092067, + -0.002111107749798968 + ] + ], + [ + [ + -0.014470818032167656, + 0.0060829217661185885 + ], + [ + -0.014471239158501575, + 0.0021110961367056176 + ], + [ + -0.01835193177960031, + 0.0021108551531774647 + ], + [ + -0.01835139522539771, + 0.006082226567808943 + ] + ], + [ + [ + -0.01447124578608631, + 0.001986002236139165 + ], + [ + -0.01447124578608631, + -0.001986002236139165 + ], + [ + -0.01835194022378369, + -0.0019857755364457654 + ], + [ + -0.01835194022378369, + 0.0019857755364457654 + ] + ], + [ + [ + -0.014471239158501575, + -0.0021110961367056176 + ], + [ + -0.014470818032167656, + -0.006082921766118588 + ], + [ + -0.01835139522539771, + -0.006082226567808942 + ], + [ + -0.01835193177960031, + -0.0021108551531774647 + ] + ], + [ + [ + -0.006277803141585747, + -0.0062331902967668155 + ], + [ + -0.006277438288396498, + -0.010205080041525776 + ], + [ + -0.010159891174608984, + -0.010204498886170692 + ], + [ + -0.010160483068807747, + -0.006232836182421247 + ] + ], + [ + [ + -0.00627742391595164, + -0.010330159053409064 + ], + [ + -0.006276875521843276, + -0.014301152509832325 + ], + [ + -0.010158978215624798, + -0.01430033508867372 + ], + [ + -0.010159867858537498, + -0.010329570719589714 + ] + ], + [ + [ + -0.006276855341184793, + -0.01442619757620982 + ], + [ + -0.006276121427892352, + -0.018395929530573396 + ], + [ + -0.01015775488371211, + -0.018394872903375957 + ], + [ + -0.010158945477297968, + -0.014425372899280507 + ] + ], + [ + [ + -0.010374765823008924, + -0.006232811735322337 + ], + [ + -0.010374161348168024, + -0.010204458764888027 + ], + [ + -0.014255736057833326, + -0.010203585262996879 + ], + [ + -0.014256569620013487, + -0.006232279482235525 + ] + ], + [ + [ + -0.010374137536520719, + -0.01032953010273123 + ], + [ + -0.01037322898478247, + -0.014300278656531305 + ], + [ + -0.014254450355028661, + -0.014299050050058678 + ], + [ + -0.014255703222047672, + -0.010328645811539368 + ] + ], + [ + [ + -0.010373195550631679, + -0.014425315966231773 + ], + [ + -0.010371979652495308, + -0.01839479995763633 + ], + [ + -0.014252727585516258, + -0.018393211840565908 + ], + [ + -0.014254404250569157, + -0.0144240764546128 + ] + ], + [ + [ + -0.014470794220642746, + -0.006232245155536483 + ], + [ + -0.014469947942337658, + -0.010203528928313286 + ], + [ + -0.018350286658806923, + -0.0102023599361032 + ], + [ + -0.01835136488738013, + -0.006231532843619808 + ] + ], + [ + [ + -0.014469914605645685, + -0.010328588781031819 + ], + [ + -0.014468642626776773, + -0.014298970814159609 + ], + [ + -0.01834862360101588, + -0.014297326616356645 + ], + [ + -0.018350244185336245, + -0.010327405350145384 + ] + ], + [ + [ + -0.01446859581903566, + -0.014423996515432117 + ], + [ + -0.014466893578866316, + -0.018393109419810403 + ], + [ + -0.018346395240877562, + -0.018390984144617217 + ], + [ + -0.01834856396537594, + -0.014422337724567967 + ] + ], + [ + [ + -0.006276090294741015, + -0.018545153571375157 + ], + [ + -0.006275167103373632, + -0.022513240482256426 + ], + [ + -0.010156206745839209, + -0.02251193941573198 + ], + [ + -0.010157704378118132, + -0.018544088158849437 + ] + ], + [ + [ + -0.0062751350318891045, + -0.022638182182090898 + ], + [ + -0.006274020368984192, + -0.026604250129442005 + ], + [ + -0.010154346501492911, + -0.026602701419583603 + ], + [ + -0.010156154718742394, + -0.022636873627190267 + ] + ], + [ + [ + -0.00627398220836615, + -0.026729122101052574 + ], + [ + -0.006272672117393783, + -0.030692776761040205 + ], + [ + -0.010152159391313921, + -0.030690974935676803 + ], + [ + -0.010154284597452403, + -0.02672756574820511 + ] + ], + [ + [ + -0.010371928073488726, + -0.01854401460661982 + ], + [ + -0.010370398612233477, + -0.022511849595428866 + ], + [ + -0.01425054744615558, + -0.02250989411930833 + ], + [ + -0.014252656461128548, + -0.018542413286083914 + ] + ], + [ + [ + -0.01037034547943645, + -0.022636783289942043 + ], + [ + -0.010368498834261483, + -0.026602594503908134 + ], + [ + -0.01424792784818611, + -0.026600266873691495 + ], + [ + -0.014250474180658508, + -0.022634816560110016 + ] + ], + [ + [ + -0.01036843561468151, + -0.026727458304923533 + ], + [ + -0.010366265246585267, + -0.030690850547307455 + ], + [ + -0.014244848039605365, + -0.030688142562809186 + ], + [ + -0.014247840675967268, + -0.02672511918930413 + ] + ], + [ + [ + -0.014466821369616144, + -0.018542310013847617 + ], + [ + -0.014464680187159712, + -0.022509768008202775 + ], + [ + -0.01834357535502202, + -0.02250715118453407 + ], + [ + -0.01834630324429571, + -0.0185401670710437 + ] + ], + [ + [ + -0.014464605804237855, + -0.02263468972328368 + ], + [ + -0.014462020637791274, + -0.0266001167637938 + ], + [ + -0.018340187157559126, + -0.02659700201303339 + ], + [ + -0.018343480591644517, + -0.022632057842028992 + ] + ], + [ + [ + -0.014461932136181226, + -0.02672496833877033 + ], + [ + -0.014458893864271289, + -0.030687967926225586 + ], + [ + -0.018336203862846075, + -0.030684344320173487 + ], + [ + -0.01834007441060486, + -0.02672183822165426 + ] + ] + ], + "color": { + "comment": "Blue", + "value": [ + 0.0, + 0.3, + 1.0, + 1.0 + ] + } + }, + { + "name": "ITL", + "corners": [ + [ + [ + 0.03063885551542935, + 0.018370137806980696 + ], + [ + 0.03064253507495745, + 0.01442696981174086 + ], + [ + 0.026772414680591994, + 0.014429930304568697 + ], + [ + 0.026769225259651374, + 0.01837392490311697 + ] + ], + [ + [ + 0.030642655794343027, + 0.014278783862683653 + ], + [ + 0.030645405646122927, + 0.010334321482827452 + ], + [ + 0.026774902797654005, + 0.010336434458009844 + ], + [ + 0.026772519317574853, + 0.014281713501161973 + ] + ], + [ + [ + 0.03064549163316248, + 0.010186093974824638 + ], + [ + 0.030647321386790313, + 0.00624071174764212 + ], + [ + 0.026776563260757096, + 0.0062419846303944015 + ], + [ + 0.026774977327347852, + 0.010188176415879269 + ] + ], + [ + [ + 0.02655148798272046, + 0.018374121934540542 + ], + [ + 0.02655465014479912, + 0.014430084327435455 + ], + [ + 0.022682159197689677, + 0.014432603326934718 + ], + [ + 0.022679476626531546, + 0.018377344378115945 + ] + ], + [ + [ + 0.026554753887388066, + 0.014281865918705084 + ], + [ + 0.02655711699275384, + 0.010336544386253045 + ], + [ + 0.02268425185319307, + 0.010338342208209228 + ], + [ + 0.022682247204727283, + 0.014284358662282209 + ] + ], + [ + [ + 0.026557190885292296, + 0.010188284755526902 + ], + [ + 0.026558763259770232, + 0.006242050851900307 + ], + [ + 0.022685648372504686, + 0.0062431338626097255 + ], + [ + 0.022684314536310732, + 0.010190056596115485 + ] + ], + [ + [ + 0.02246161646315764, + 0.018377509983361892 + ], + [ + 0.02246427232320573, + 0.014432732779277415 + ], + [ + 0.01858979801723113, + 0.01443481917378867 + ], + [ + 0.018587612820146697, + 0.018380179093430416 + ] + ], + [ + [ + 0.02246435945386179, + 0.014284486765255492 + ], + [ + 0.022466344138638492, + 0.010338434597798565 + ], + [ + 0.01859150263319731, + 0.01033992363282485 + ], + [ + 0.018589869705924383, + 0.014286551410941156 + ] + ], + [ + [ + 0.022466406197475777, + 0.010190147650494709 + ], + [ + 0.02246772674903508, + 0.0062431895177677745 + ], + [ + 0.018592640176577992, + 0.006244086500686393 + ], + [ + 0.018591553692467122, + 0.01019161516558273 + ] + ], + [ + [ + 0.030647381248504267, + 0.00606823187814247 + ], + [ + 0.030648291923237782, + 0.00212229682261085 + ], + [ + 0.026777404458888557, + 0.002122729159667196 + ], + [ + 0.02677661514524258, + 0.0060694694866976415 + ] + ], + [ + [ + 0.030648309026149016, + 0.001974027872202161 + ], + [ + 0.030648309241516163, + -0.0019720897143643014 + ], + [ + 0.026777419469178613, + -0.001972491443559635 + ], + [ + 0.026777419282513225, + 0.0019744299963251805 + ] + ], + [ + [ + 0.03064829215479411, + -0.00212035866801649 + ], + [ + 0.030647381911551506, + -0.006066293896360982 + ], + [ + 0.026776615719931344, + -0.0060675311086212345 + ], + [ + 0.026777404659585644, + -0.0021207906101199376 + ] + ], + [ + [ + 0.026558814700644785, + 0.006069533873049804 + ], + [ + 0.026559597265486793, + 0.0021227516518162143 + ], + [ + 0.02268635584639868, + 0.0021231194950477802 + ], + [ + 0.02268569200915486, + 0.0060705868707032935 + ] + ], + [ + [ + 0.026559611962362735, + 0.0019744509166575272 + ], + [ + 0.026559612147432052, + -0.0019725123433460175 + ], + [ + 0.022686368470465408, + -0.001972854144583441 + ], + [ + 0.022686368313474696, + 0.001974793053910002 + ] + ], + [ + [ + 0.026559597464467826, + -0.0021208130817216746 + ], + [ + 0.026558815270419967, + -0.00606759547435601 + ], + [ + 0.0226856924924879, + -0.0060686481348222 + ], + [ + 0.02268635601519045, + -0.0021211805889165725 + ] + ], + [ + [ + 0.022467769951058623, + 0.006070640983497113 + ], + [ + 0.02246842717625845, + 0.002123138398170781 + ], + [ + 0.018593216447504356, + 0.0021234430548620438 + ], + [ + 0.018592675720814588, + 0.006071513108246817 + ] + ], + [ + [ + 0.022468439519155656, + 0.0019748106360252013 + ], + [ + 0.02246843967458265, + -0.0019728717094311225 + ], + [ + 0.018593226730364922, + -0.0019731547974704117 + ], + [ + 0.01859322660248905, + 0.0019750940023607736 + ] + ], + [ + [ + 0.022468427343368975, + -0.0021211994747709407 + ], + [ + 0.022467770429577594, + -0.006068702230288045 + ], + [ + 0.01859267611451346, + -0.006069574075764198 + ], + [ + 0.018593216584992734, + -0.0021215038531478985 + ] + ], + [ + [ + 0.030647322068738457, + -0.006238773777225642 + ], + [ + 0.03064549274888928, + -0.010184156352078236 + ], + [ + 0.02677497829440919, + -0.010186238394057794 + ], + [ + 0.026776563851828358, + -0.006240046263594837 + ] + ], + [ + [ + 0.03064540677821031, + -0.010332383876432571 + ], + [ + 0.03064265736400101, + -0.014276846779818974 + ], + [ + 0.026772520678120054, + -0.014279776015061862 + ], + [ + 0.02677490377889677, + -0.010334496452413532 + ] + ], + [ + [ + 0.030642536661146937, + -0.014425032751886285 + ], + [ + 0.030638857544494608, + -0.018368201449554724 + ], + [ + 0.026769227018463904, + -0.01837198813690276 + ], + [ + 0.026772416055467912, + -0.014427992841301899 + ] + ], + [ + [ + 0.026558763845787866, + -0.006240112464478751 + ], + [ + 0.026557191844086194, + -0.010186346712942808 + ], + [ + 0.0226843153496563, + -0.010188118213960417 + ], + [ + 0.02268564886961623, + -0.006241195137925272 + ] + ], + [ + [ + 0.02655711796560796, + -0.01033460635988751 + ], + [ + 0.026554755236303844, + -0.014279928411625018 + ], + [ + 0.022682248349040552, + -0.014282420812064121 + ], + [ + 0.02268425267846654, + -0.010336403842164383 + ] + ], + [ + [ + 0.026554651507923202, + -0.01442814684317947 + ], + [ + 0.026551489726502623, + -0.0183721851470563 + ], + [ + 0.022679478105864428, + -0.01837540724273277 + ], + [ + 0.022682160354057308, + -0.014430665499389136 + ] + ], + [ + [ + 0.022467727241195338, + -0.006241250775751449 + ], + [ + 0.022466407002720967, + -0.010188209250888737 + ], + [ + 0.018591554354987088, + -0.010189676484716014 + ], + [ + 0.018592640581500324, + -0.006242147479333494 + ] + ], + [ + [ + 0.02246634495569282, + -0.010336496214297226 + ], + [ + 0.022464360586779863, + -0.01428254889740254 + ], + [ + 0.018589870638057625, + -0.01428461325885373 + ], + [ + 0.018591503305433722, + -0.010337984967972454 + ] + ], + [ + [ + 0.022464273468058182, + -0.014430794934089154 + ], + [ + 0.02246161792776154, + -0.018375572830098323 + ], + [ + 0.018587614025213563, + -0.018378241651963348 + ], + [ + 0.018589798959184445, + -0.01443288104423957 + ] + ], + [ + [ + 0.018335246837711813, + 0.03067370735367386 + ], + [ + 0.01833909462960039, + 0.02673441936123189 + ], + [ + 0.0144648293852087, + 0.026737548086420215 + ], + [ + 0.01446180819662856, + 0.03067732621744965 + ] + ], + [ + [ + 0.01833922835060963, + 0.026586357828155792 + ], + [ + 0.018342502439266096, + 0.022644645962879233 + ], + [ + 0.014467505022236753, + 0.022647276888956302 + ], + [ + 0.01446493437765643, + 0.02658946834515339 + ] + ], + [ + [ + 0.018342614831965764, + 0.022496500870738106 + ], + [ + 0.01834532671831066, + 0.018552760931441727 + ], + [ + 0.014469722436555916, + 0.018554903352249786 + ], + [ + 0.01446759326576829, + 0.02249911395450982 + ] + ], + [ + [ + 0.01424388812250003, + 0.030677503961267668 + ], + [ + 0.014246863120077518, + 0.026737701753822108 + ], + [ + 0.010371336234152125, + 0.02674003987480209 + ], + [ + 0.010369177899870564, + 0.030680208453948397 + ] + ], + [ + [ + 0.014246966507201598, + 0.026589621118161367 + ], + [ + 0.014249497844927848, + 0.022647406104805062 + ], + [ + 0.010373247655671368, + 0.02264937215912172 + ], + [ + 0.010371411239566062, + 0.026591945629378014 + ] + ], + [ + [ + 0.014249584739089974, + 0.022499242293977043 + ], + [ + 0.01425168135044448, + 0.018555008574077093 + ], + [ + 0.010374831694949025, + 0.018556609535681185 + ], + [ + 0.0103733106942539, + 0.022501195013084903 + ] + ], + [ + [ + 0.010151196705096106, + 0.03068033505887294 + ], + [ + 0.010153309327765812, + 0.0267401493273252 + ], + [ + 0.00627688590403686, + 0.02674170507911937 + ], + [ + 0.0062755828396695, + 0.03068213463088569 + ] + ], + [ + [ + 0.010153382744584183, + 0.02659205444474573 + ], + [ + 0.010155180264859709, + 0.022649464193246194 + ], + [ + 0.0062780398774663695, + 0.0226507723497532 + ], + [ + 0.006276931187070007, + 0.026593601139536724 + ] + ], + [ + [ + 0.010155241968232129, + 0.022501286422928996 + ], + [ + 0.010156730752151913, + 0.01855668447844479 + ], + [ + 0.0062789961868628995, + 0.018557749693723893 + ], + [ + 0.006278077935112515, + 0.022502585705656535 + ] + ], + [ + [ + 0.0060333363116887185, + 0.03068221880833412 + ], + [ + 0.006034588941627878, + 0.026741777850869446 + ], + [ + 0.0021576267151363015, + 0.026742552143131437 + ], + [ + 0.002157179356695969, + 0.030683114461683644 + ] + ], + [ + [ + 0.006034632471986048, + 0.02659367348761343 + ], + [ + 0.006035698250239919, + 0.022650833539488553 + ], + [ + 0.00215802288512689, + 0.022651484596131987 + ], + [ + 0.0021576422612949423, + 0.026594443271855055 + ] + ], + [ + [ + 0.006035734834841532, + 0.022502646480299014 + ], + [ + 0.006036617544815552, + 0.018557799519397636 + ], + [ + 0.0021583511925329793, + 0.01855832966086309 + ], + [ + 0.0021580359506173995, + 0.022503293120274524 + ] + ], + [ + [ + 0.001939137212643717, + 0.030683139643540913 + ], + [ + 0.001939539340319162, + 0.026742573912746478 + ], + [ + -0.0019376007835310988, + 0.026742574095859437 + ], + [ + -0.0019371990578881918, + 0.03068313985535564 + ] + ], + [ + [ + 0.0019395533146611321, + 0.02659446491472138 + ], + [ + 0.0019398954549360936, + 0.022651502900840493 + ], + [ + -0.001937956542116954, + 0.022651503054808717 + ], + [ + -0.001937614743902017, + 0.026594465096768206 + ] + ], + [ + [ + 0.0019399071994188023, + 0.02250331130080422 + ], + [ + 0.0019401905682576665, + 0.0185583445659429 + ], + [ + -0.0019382513603939206, + 0.018558344691315475 + ], + [ + -0.0019379682748579237, + 0.02250331145372793 + ] + ], + [ + [ + -0.002155241206710655, + 0.030683114697334868 + ], + [ + -0.0021556881630807045, + 0.02674255234685101 + ], + [ + -0.0060326505579988265, + 0.02674177842146331 + ], + [ + -0.006031398331471972, + 0.030682219468358862 + ] + ], + [ + [ + -0.0021557036952669774, + 0.026594443474388513 + ], + [ + -0.0021560839770065387, + 0.022651484767427055 + ], + [ + -0.006033759509348653, + 0.02265083401926916 + ], + [ + -0.006032694074337801, + 0.02659367405488532 + ] + ], + [ + [ + -0.002156097030754195, + 0.02250329329040754 + ], + [ + -0.002156411989339928, + 0.018558329800344525 + ], + [ + -0.0060346785078527, + 0.018557799910074016 + ], + [ + -0.006033796082167774, + 0.022502646956824926 + ] + ], + [ + [ + -0.018585675405727257, + 0.018380180298497976 + ], + [ + -0.01858786036934203, + 0.014434820115755859 + ], + [ + -0.02246233552440618, + 0.01443273392415673 + ], + [ + -0.02245967990167046, + 0.018377511447979427 + ] + ], + [ + [ + -0.018587932050375528, + 0.014286552343088775 + ], + [ + -0.018589564803166786, + 0.010339924305088859 + ], + [ + -0.02246440715468765, + 0.010338435414893578 + ], + [ + -0.022462422647276128, + 0.014284487898200927 + ] + ], + [ + [ + -0.018589615856980574, + 0.01019161582813079 + ], + [ + -0.01859070222499006, + 0.006244086905650151 + ], + [ + -0.022465789641512204, + 0.006243190009982679 + ], + [ + -0.022464469207978587, + 0.010190148455781088 + ] + ], + [ + [ + -0.022677540118066726, + 0.018377345857463194 + ], + [ + -0.022680222451674774, + 0.014432604483329947 + ], + [ + -0.026552714428257587, + 0.014430085690600222 + ], + [ + -0.02654955250833844, + 0.01837412367835007 + ] + ], + [ + [ + -0.02268031045091844, + 0.014284359806623573 + ], + [ + -0.022682314921840672, + 0.010338343033524116 + ], + [ + -0.02655518108726439, + 0.010336545359161821 + ], + [ + -0.02655281816290102, + 0.014281867267662044 + ] + ], + [ + [ + -0.022682377599406403, + 0.010190057409502976 + ], + [ + -0.022683711317455627, + 0.006243134359776667 + ], + [ + -0.026556827228167525, + 0.006242051437986746 + ], + [ + -0.02655525497414257, + 0.01018828571437595 + ] + ], + [ + [ + -0.026767289848640255, + 0.01837392666195759 + ], + [ + -0.026770479027140515, + 0.014429931679486035 + ], + [ + -0.030640600637332264, + 0.014426971397984992 + ], + [ + -0.03063692132562069, + 0.018370139836087134 + ] + ], + [ + [ + -0.026770583656168627, + 0.014281714861749095 + ], + [ + -0.02677296695503463, + 0.010336435439308006 + ], + [ + -0.030643471015118866, + 0.010334322614983644 + ], + [ + -0.030640721348586298, + 0.014278785432396796 + ] + ], + [ + [ + -0.026773041479061604, + 0.01018817738299651 + ], + [ + -0.026774627291877223, + 0.006241985221535234 + ], + [ + -0.030645386626707172, + 0.006240712429673482 + ], + [ + -0.030643556996365187, + 0.010186095090620758 + ] + ], + [ + [ + -0.018590737765428304, + 0.006071513501987693 + ], + [ + -0.01859127843433367, + 0.0021234431924059003 + ], + [ + -0.02246649000613036, + 0.0021231385653501978 + ], + [ + -0.022465832839674363, + 0.006070641462071325 + ] + ], + [ + [ + -0.018591288588233147, + 0.0019750941302926314 + ], + [ + -0.01859128871609535, + -0.001973154925276626 + ], + [ + -0.022466502503337416, + -0.001972871864774818 + ], + [ + -0.02246650234792431, + 0.0019748107915216113 + ] + ], + [ + [ + -0.018591278571807354, + -0.0021215039905661042 + ], + [ + -0.018590738159085102, + -0.006069574469378988 + ], + [ + -0.022465833318150562, + -0.006068702708709006 + ], + [ + -0.022466490173225946, + -0.0021211996417976335 + ] + ], + [ + [ + -0.022683754950240522, + 0.0060705873540923185 + ], + [ + -0.022684418728681148, + 0.002123119663909215 + ], + [ + -0.026557661169989148, + 0.0021227518508805518 + ], + [ + -0.02655687866510118, + 0.006069534442894399 + ] + ], + [ + [ + -0.022684431194652802, + 0.001974793210970886 + ], + [ + -0.02268443135162961, + -0.0019728543014900742 + ], + [ + -0.02655767605079424, + -0.0019725125283173205 + ], + [ + -0.026557675865739105, + 0.0019744511018106705 + ] + ], + [ + [ + -0.022684418897457977, + -0.002121180757623747 + ], + [ + -0.022683755433530742, + -0.006068648618056432 + ], + [ + -0.026556879234832718, + -0.0060675960440181335 + ], + [ + -0.026557661368954936, + -0.00212081328060416 + ] + ], + [ + [ + -0.026774679172417208, + 0.006069470061456581 + ], + [ + -0.026775468426039024, + 0.002122729360448359 + ], + [ + -0.030646357097754515, + 0.002122297054265191 + ], + [ + -0.03064544648438746, + 0.006068232541273535 + ] + ], + [ + [ + -0.026775483248536378, + 0.001974430183075174 + ], + [ + -0.02677548343518757, + -0.0019724916301262197 + ], + [ + -0.03064637441486585, + -0.001972089929618391 + ], + [ + -0.030646374199513212, + 0.0019740280876678605 + ] + ], + [ + [ + -0.026775468626720852, + -0.002120790810717681 + ], + [ + -0.026774679747062272, + -0.0060675316831961265 + ], + [ + -0.03064544714739002, + -0.006066294559279709 + ], + [ + -0.030646357329295243, + -0.0021203588994592078 + ] + ], + [ + [ + -0.018590702629869126, + -0.00624214788417114 + ], + [ + -0.018589616519429746, + -0.010189677147137094 + ], + [ + -0.022464470013151813, + -0.01018821005602078 + ], + [ + -0.022465790133628472, + -0.006241251267813071 + ] + ], + [ + [ + -0.018589565475331367, + -0.010337985640109437 + ], + [ + -0.01858793298240918, + -0.014284614190873018 + ], + [ + -0.022462423780092954, + -0.014282550030192012 + ], + [ + -0.02246440797166896, + -0.010336497031237856 + ] + ], + [ + [ + -0.018587861311194703, + -0.01443288198607837 + ], + [ + -0.018585676610665382, + -0.018378242856900782 + ], + [ + -0.022459681366143496, + -0.018375574294557724 + ], + [ + -0.02246233666915633, + -0.014430796078812437 + ] + ], + [ + [ + -0.02268371181452314, + -0.006241195634937388 + ], + [ + -0.022682378412679928, + -0.010188119027192018 + ], + [ + -0.026555255932863016, + -0.010186347671608099 + ], + [ + -0.026556827814140257, + -0.006240113050382677 + ] + ], + [ + [ + -0.02268231574704105, + -0.010336404667323334 + ], + [ + -0.022680311595130367, + -0.014282421956247956 + ], + [ + -0.026552819511713486, + -0.014279929760396298 + ], + [ + -0.026555182060043994, + -0.010334607332612471 + ] + ], + [ + [ + -0.022680223607939993, + -0.014430666655626763 + ], + [ + -0.022677541597268615, + -0.018375408721920294 + ], + [ + -0.02654955425198708, + -0.01837218689067758 + ], + [ + -0.026552715791277274, + -0.014428148206158474 + ] + ], + [ + [ + -0.02677462788290354, + -0.006240046854551585 + ], + [ + -0.02677304244604941, + -0.010186239360989693 + ], + [ + -0.030643558112016807, + -0.010184157467660531 + ], + [ + -0.030645387308609374, + -0.006238774459044622 + ] + ], + [ + [ + -0.02677296793620279, + -0.010334497433526295 + ], + [ + -0.02677058501661039, + -0.014279777375461702 + ], + [ + -0.030640722918138553, + -0.014276848349316074 + ], + [ + -0.030643472147129983, + -0.010332385008374873 + ] + ], + [ + [ + -0.026770480401911913, + -0.014427994216031874 + ], + [ + -0.0267672916073191, + -0.018371989895553505 + ], + [ + -0.030636923354549307, + -0.018368203478442157 + ], + [ + -0.030640602223414908, + -0.014425034337914278 + ] + ] + ], + "color": { + "comment": "Cyan", + "value": [ + 0.0, + 0.7, + 1.0, + 1.0 + ] + } + }, + { + "name": "ITL_G", + "corners": [ + [ + [ + 0.027044781862091364, + 0.018626414020815534 + ], + [ + 0.023103362294895458, + 0.018629805503367392 + ], + [ + 0.02309997585202849, + 0.02250307224345223 + ], + [ + 0.027040789583676325, + 0.02249895225902746 + ] + ], + [ + [ + 0.018629807032689596, + 0.023101425908454556 + ], + [ + 0.01862641582377898, + 0.027042846549750164 + ], + [ + 0.022498954449231872, + 0.0270388545719163 + ], + [ + 0.0225030741013136, + 0.023098039760281283 + ] + ], + [ + [ + 0.018626414020815534, + -0.027044781862091364 + ], + [ + 0.018629805503367396, + -0.023103362294895458 + ], + [ + 0.02250307224345223, + -0.023099975852028495 + ], + [ + 0.02249895225902746, + -0.027040789583676325 + ] + ], + [ + [ + 0.023101425908454553, + -0.018629807032689596 + ], + [ + 0.027042846549750168, + -0.01862641582377898 + ], + [ + 0.027038854571916307, + -0.022498954449231875 + ], + [ + 0.023098039760281283, + -0.0225030741013136 + ] + ], + [ + [ + -0.018626414020815534, + 0.027044781862091364 + ], + [ + -0.018629805503367396, + 0.023103362294895458 + ], + [ + -0.02250307224345223, + 0.023099975852028495 + ], + [ + -0.02249895225902746, + 0.027040789583676325 + ] + ], + [ + [ + -0.023101425908454553, + 0.018629807032689596 + ], + [ + -0.027042846549750168, + 0.01862641582377898 + ], + [ + -0.027038854571916307, + 0.022498954449231875 + ], + [ + -0.023098039760281283, + 0.0225030741013136 + ] + ], + [ + [ + -0.027044781862091364, + -0.018626414020815534 + ], + [ + -0.023103362294895454, + -0.018629805503367396 + ], + [ + -0.023099975852028495, + -0.02250307224345223 + ], + [ + -0.027040789583676325, + -0.02249895225902746 + ] + ], + [ + [ + -0.018629807032689596, + -0.023101425908454556 + ], + [ + -0.01862641582377898, + -0.027042846549750164 + ], + [ + -0.022498954449231872, + -0.0270388545719163 + ], + [ + -0.0225030741013136, + -0.023098039760281283 + ] + ] + ], + "color": { + "comment": "Green", + "value": [ + 0.0, + 1.0, + 0.0, + 1.0 + ] + } + }, + { + "name": "ITL_WF", + "corners": [ + [ + [ + 0.018670176093765572, + 0.018792792570979773 + ], + [ + 0.01866738165634269, + 0.02273637949577133 + ], + [ + 0.020604253071233102, + 0.022734791856225036 + ], + [ + 0.020607345912494586, + 0.01879148802066858 + ] + ], + [ + [ + 0.02285725581737714, + 0.0227346773210379 + ], + [ + 0.022860699271749618, + 0.018791739995303862 + ], + [ + 0.020924032152459315, + 0.018793199316126 + ], + [ + 0.02092088999384325, + 0.02273645325221995 + ] + ], + [ + [ + 0.018792792570979773, + -0.018670176093765572 + ], + [ + 0.02273637949577133, + -0.01866738165634269 + ], + [ + 0.022734791856225036, + -0.020604253071233102 + ], + [ + 0.01879148802066858, + -0.020607345912494586 + ] + ], + [ + [ + 0.0227346773210379, + -0.02285725581737714 + ], + [ + 0.01879173999530386, + -0.02286069927174962 + ], + [ + 0.018793199316126, + -0.020924032152459318 + ], + [ + 0.02273645325221995, + -0.02092088999384325 + ] + ], + [ + [ + -0.018792792570979773, + 0.018670176093765572 + ], + [ + -0.02273637949577133, + 0.01866738165634269 + ], + [ + -0.022734791856225036, + 0.020604253071233102 + ], + [ + -0.01879148802066858, + 0.020607345912494586 + ] + ], + [ + [ + -0.0227346773210379, + 0.02285725581737714 + ], + [ + -0.018791739995303862, + 0.022860699271749618 + ], + [ + -0.018793199316126, + 0.020924032152459315 + ], + [ + -0.02273645325221995, + 0.02092088999384325 + ] + ], + [ + [ + -0.018670176093765572, + -0.018792792570979773 + ], + [ + -0.01866738165634269, + -0.02273637949577133 + ], + [ + -0.020604253071233102, + -0.022734791856225036 + ], + [ + -0.020607345912494586, + -0.01879148802066858 + ] + ], + [ + [ + -0.02285725581737714, + -0.0227346773210379 + ], + [ + -0.022860699271749618, + -0.018791739995303862 + ], + [ + -0.020924032152459315, + -0.018793199316126 + ], + [ + -0.02092088999384325, + -0.02273645325221995 + ] + ] + ], + "color": { + "comment": "Red", + "value": [ + 1.0, + 0.0, + 0.0, + 1.0 + ] + } + }, + { + "name": "ComCam", + "corners": [ + [ + [ + 0.006039247055728695, + 0.006083860090025068 + ], + [ + 0.0060394216941745, + 0.0021114213952493793 + ], + [ + 0.002156096593543867, + 0.00211148100951192 + ], + [ + 0.0021560343201107073, + 0.006084032069300254 + ] + ], + [ + [ + 0.006039424442582142, + 0.0019863082155786456 + ], + [ + 0.006039424442582142, + -0.0019863082155786456 + ], + [ + 0.002156097573583869, + -0.0019863642963111844 + ], + [ + 0.002156097573583869, + 0.0019863642963111844 + ] + ], + [ + [ + 0.0060394216941745, + -0.0021114213952493793 + ], + [ + 0.006039247055728695, + -0.006083860090025068 + ], + [ + 0.0021560343201107073, + -0.006084032069300254 + ], + [ + 0.002156096593543867, + -0.00211148100951192 + ] + ], + [ + [ + 0.001941693240714674, + 0.006084036812688888 + ], + [ + 0.001941749321447213, + 0.0021114826537415496 + ], + [ + -0.001941749321447213, + 0.0021114826537415496 + ], + [ + -0.001941693240714674, + 0.006084036812688888 + ] + ], + [ + [ + 0.0019417502040283943, + 0.0019863658430819935 + ], + [ + 0.0019417502040283943, + -0.0019863658430819935 + ], + [ + -0.0019417502040283943, + -0.0019863658430819935 + ], + [ + -0.0019417502040283943, + 0.0019863658430819935 + ] + ], + [ + [ + 0.001941749321447213, + -0.0021114826537415496 + ], + [ + 0.001941693240714674, + -0.006084036812688887 + ], + [ + -0.001941693240714674, + -0.006084036812688887 + ], + [ + -0.001941749321447213, + -0.0021114826537415496 + ] + ], + [ + [ + -0.0021560343201107073, + 0.006084032069300254 + ], + [ + -0.002156096593543867, + 0.00211148100951192 + ], + [ + -0.0060394216941745, + 0.0021114213952493793 + ], + [ + -0.006039247055728695, + 0.006083860090025068 + ] + ], + [ + [ + -0.002156097573583869, + 0.0019863642963111844 + ], + [ + -0.002156097573583869, + -0.0019863642963111844 + ], + [ + -0.006039424442582142, + -0.0019863082155786456 + ], + [ + -0.006039424442582142, + 0.0019863082155786456 + ] + ], + [ + [ + -0.002156096593543867, + -0.00211148100951192 + ], + [ + -0.0021560343201107073, + -0.006084032069300254 + ], + [ + -0.006039247055728695, + -0.006083860090025068 + ], + [ + -0.0060394216941745, + -0.0021114213952493793 + ] + ] + ], + "color": { + "comment": "White", + "value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + } + } +] \ No newline at end of file From e62d37a51edbba2460a9bea4fa466ab164dbbdc9 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 18:37:06 -0300 Subject: [PATCH 14/32] New Cameras --- plugins/MosaicCamera/src/MosaicCamera.cpp | 7 +- plugins/MosaicCamera/src/MosaicCamera.hpp | 3 +- .../src/gui/MosaicCameraDialog.cpp | 18 ++ .../src/gui/MosaicCameraDialog.hpp | 1 + .../src/gui/mosaicCameraDialog.ui | 194 ++++++++++-------- 5 files changed, 130 insertions(+), 93 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 463b5d3db6525..ab070bf43b3e9 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -99,18 +99,17 @@ void MosaicCamera::init() connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); qDebug() << "Loading Rubin json"; - polygon_sets = MosaicCamera::readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); + readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); } -QVector MosaicCamera::readPolygonSetsFromJson(const QString& filename) +void MosaicCamera::readPolygonSetsFromJson(const QString& filename) { QVector polygonSets; QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { qWarning() << "Couldn't open file:" << file.errorString(); - return polygonSets; } QByteArray saveData = file.readAll(); @@ -155,7 +154,7 @@ QVector MosaicCamera::readPolygonSetsFromJson(const QString& filenam polygonSets.append(set); } - return polygonSets; + polygon_sets = polygonSets; } void MosaicCamera::setRA(double ra) diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index c7c2601c399c2..f12c416cfdd89 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -55,6 +55,7 @@ class MosaicCamera : public StelModule void setRA(double ra); void setDec(double dec); void setRSP(double rsp); + void readPolygonSetsFromJson(const QString& filename); public slots: void updateMosaic(double ra, double dec, double rsp); // Slot to update mosaic with received values @@ -65,8 +66,6 @@ public slots: double rsp; QVector polygon_sets; - static QVector readPolygonSetsFromJson(const QString& filename); - // GUI MosaicCameraDialog* configDialog; MosaicTcpServer* tcpServer; diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index a32e24e83a6f8..2214fabef31ae 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -61,6 +61,19 @@ void MosaicCameraDialog::updateRSP() mc->setRSP(ui->RSPSpinBox->valueDegrees()); } +void MosaicCameraDialog::onCameraSelectionChanged() +{ + if (ui->lsstCamRadioButton->isChecked()) { + mc->readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); + } else if (ui->decamRadioButton->isChecked()) { + mc->readPolygonSetsFromJson(":/MosaicCamera/DECam.json"); + } else if (ui->hscRadioButton->isChecked()) { + mc->readPolygonSetsFromJson(":/MosaicCamera/HSC.json"); + } else if (ui->megaPrimeRadioButton->isChecked()) { + mc->readPolygonSetsFromJson(":/MosaicCamera/MegaPrime.json"); + } +} + void MosaicCameraDialog::setRA(double ra) { ui->RASpinBox->setDegrees(ra); @@ -91,6 +104,7 @@ void MosaicCameraDialog::createDialogContent() mc = GETSTELMODULE(MosaicCamera); ui->setupUi(dialog); ui->tabs->setCurrentIndex(0); + ui->lsstCamRadioButton->setChecked(true); connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SLOT(retranslate())); @@ -115,6 +129,10 @@ void MosaicCameraDialog::createDialogContent() connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); connect(ui->RSPSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRSP())); + connect(ui->lsstCamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); + connect(ui->decamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); + connect(ui->hscRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); + connect(ui->megaPrimeRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 752f096117e6e..da7b1096d008d 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -50,6 +50,7 @@ public slots: void updateRA(); void updateDec(); void updateRSP(); + void onCameraSelectionChanged(); private: MosaicCamera* mc; diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 02477c28c2aff..4a6d8c593aa24 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -68,93 +68,113 @@ Location - - - - 20 - 10 - 100 - 20 - - - - Right Ascension: - - - - - - 130 - 10 - 211 - 22 - - - - -360.000000000000000 - - - 360.000000000000000 - - - - - - 20 - 40 - 100 - 20 - - - - Declination: - - - - - - 130 - 40 - 211 - 22 - - - - -90.000000000000000 - - - 90.000000000000000 - - - - - - 20 - 70 - 100 - 20 - - - - RotSkyPos: - - - - - - 130 - 70 - 211 - 21 - - - - -90.000000000000000 - - - 90.000000000000000 - - + + + + + + + Right Ascension: + + + + + + + -360.000000000000000 + + + 360.000000000000000 + + + + + + + Declination: + + + + + + + -90.000000000000000 + + + 90.000000000000000 + + + + + + + RotSkyPos: + + + + + + + -90.000000000000000 + + + 90.000000000000000 + + + + + + + + + Camera Selection + + + + + + LSSTCam + + + + + + + DECam + + + + + + + HSC + + + + + + + MegaPrime + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + From 7af05033cf7371faba8e6557e3a517cfd61850be Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 20:23:28 -0300 Subject: [PATCH 15/32] Add Latiss --- plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp | 3 +++ plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 2214fabef31ae..d3cf46bfd8f35 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -71,6 +71,8 @@ void MosaicCameraDialog::onCameraSelectionChanged() mc->readPolygonSetsFromJson(":/MosaicCamera/HSC.json"); } else if (ui->megaPrimeRadioButton->isChecked()) { mc->readPolygonSetsFromJson(":/MosaicCamera/MegaPrime.json"); + } else if (ui->latissPrimeRadioButton->isChecked()) { + mc->readPolygonSetsFromJson(":/MosaicCamera/Latiss.json"); } } @@ -133,6 +135,7 @@ void MosaicCameraDialog::createDialogContent() connect(ui->decamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); connect(ui->hscRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); connect(ui->megaPrimeRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); + connect(ui->latissPrimeRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 4a6d8c593aa24..c4e1222b06fe3 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -158,6 +158,13 @@
+ + + + Latiss + + +
From cb4d1b8ff0a87a81c01bc8748053ded27e95e960 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 2 Dec 2024 20:26:31 -0300 Subject: [PATCH 16/32] Use HMS for RA --- plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index d3cf46bfd8f35..0d4ee42bf49a7 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -128,6 +128,7 @@ void MosaicCameraDialog::createDialogContent() ui->aboutTextBrowser->document()->setDefaultStyleSheet(QString(gui->getStelStyle().htmlStyleSheet)); // Location tab + ui->RASpinBox->setDisplayFormat(AngleSpinBox::HMSSymbols); connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); connect(ui->RSPSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRSP())); From 5710a138dcd59e36a08b69feee6038334d9f3b3e Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 3 Dec 2024 02:14:15 -0300 Subject: [PATCH 17/32] Add qrc --- plugins/MosaicCamera/resources/Latiss.json | 34 + plugins/MosaicCamera/resources/MegaPrime.json | 664 ++++++++++++++++++ .../MosaicCamera/resources/MosaicCamera.qrc | 10 + 3 files changed, 708 insertions(+) create mode 100644 plugins/MosaicCamera/resources/Latiss.json create mode 100644 plugins/MosaicCamera/resources/MegaPrime.json create mode 100644 plugins/MosaicCamera/resources/MosaicCamera.qrc diff --git a/plugins/MosaicCamera/resources/Latiss.json b/plugins/MosaicCamera/resources/Latiss.json new file mode 100644 index 0000000000000..9a2db10e08918 --- /dev/null +++ b/plugins/MosaicCamera/resources/Latiss.json @@ -0,0 +1,34 @@ +[ + { + "name": "Latiss", + "corners": [ + [ + [ + -0.0009689438112897336, + -0.0009309005302144362 + ], + [ + 0.0009202298538152675, + -0.0009309005302144362 + ], + [ + 0.0009202298538152676, + 0.0009248692783366454 + ], + [ + -0.0009689438112897336, + 0.0009248692783366454 + ] + ] + ], + "color": { + "comment": "Yellow", + "value": [ + 1.0, + 1.0, + 0.0, + 1.0 + ] + } + } +] \ No newline at end of file diff --git a/plugins/MosaicCamera/resources/MegaPrime.json b/plugins/MosaicCamera/resources/MegaPrime.json new file mode 100644 index 0000000000000..a7739ce01a5a4 --- /dev/null +++ b/plugins/MosaicCamera/resources/MegaPrime.json @@ -0,0 +1,664 @@ +[ + { + "name": "CFHTMegaPrime", + "corners": [ + [ + [ + -0.006702109510617485, + 0.008702396825631979 + ], + [ + -0.008528633239722892, + 0.008686221693457508 + ], + [ + -0.008560947746284618, + 0.004562143295201051 + ], + [ + -0.006729922430884452, + 0.004572282199184113 + ] + ], + [ + [ + -0.004804175199606488, + 0.008716802882331766 + ], + [ + -0.006639512543017374, + 0.008703789173092356 + ], + [ + -0.006667156945378082, + 0.00457350705094533 + ], + [ + -0.0048261703462903335, + 0.0045822369426284345 + ] + ], + [ + [ + -0.002900832337995271, + 0.008727302016876009 + ], + [ + -0.004743104101095291, + 0.008718066818037135 + ], + [ + -0.004764889211543414, + 0.00458339979533626 + ], + [ + -0.0029153763936452526, + 0.004590176731723485 + ] + ], + [ + [ + -0.0009936777152699874, + 0.008733262862679416 + ], + [ + -0.0028404707868420844, + 0.008728426665251646 + ], + [ + -0.0028547490113083047, + 0.004591259564233379 + ], + [ + -0.000998966389743253, + 0.004595154660176845 + ] + ], + [ + [ + 0.000920583583364452, + 0.008733359847476587 + ], + [ + -0.0009278028638894535, + 0.008733350595745428 + ], + [ + -0.0009327465316182453, + 0.004595228413794363 + ], + [ + 0.0009254893716667852, + 0.004595236198829835 + ] + ], + [ + [ + 0.002823356898611983, + 0.008727600534351515 + ], + [ + 0.0009765336190424815, + 0.0087323946682491 + ], + [ + 0.00098173241569492, + 0.0045942717993264545 + ], + [ + 0.002837558398093205, + 0.004590407970845029 + ] + ], + [ + [ + 0.004732337937645259, + 0.008716350159903163 + ], + [ + 0.002890029285242123, + 0.00872556126429141 + ], + [ + 0.002904524144013322, + 0.004588404792423042 + ], + [ + 0.004754082270593846, + 0.004581642690900751 + ] + ], + [ + [ + 0.006629697515626324, + 0.008701196841142627 + ], + [ + 0.004794313950309042, + 0.008714190447362134 + ], + [ + 0.004816270021108615, + 0.004579574924224589 + ], + [ + 0.006657307370187501, + 0.004570857190862216 + ] + ], + [ + [ + 0.008518856752315347, + 0.00868542657708129 + ], + [ + 0.006692281819205873, + 0.008701585683058045 + ], + [ + 0.006720065402281498, + 0.0045714331184629 + ], + [ + 0.008551146036051139, + 0.004561302257345502 + ] + ], + [ + [ + -0.006730918741536797, + 0.004193157258706068 + ], + [ + -0.008562179860423808, + 0.0041837207162574155 + ], + [ + -0.008573859918822457, + 2.572970492644423e-05 + ], + [ + -0.00674158015550677, + 2.5793399708946648e-05 + ] + ], + [ + [ + -0.004826855996580619, + 0.004200750027412451 + ], + [ + -0.006668153153239846, + 0.004192559500536151 + ], + [ + -0.006678771985935464, + 2.4890395665161354e-05 + ], + [ + -0.004836188059246901, + 2.4947509215773785e-05 + ] + ], + [ + [ + -0.002916508831910996, + 0.0042065380027422735 + ], + [ + -0.004766471518939119, + 0.00420009083218068 + ], + [ + -0.00477575057430398, + 2.4042057412434562e-05 + ], + [ + -0.002923858890046696, + 2.4092742719601213e-05 + ] + ], + [ + [ + -0.0009975884656163428, + 0.004213200057468841 + ], + [ + -0.0028540479853076143, + 0.0042094260323499505 + ], + [ + -0.0028613206303829187, + 2.6822039592086586e-05 + ], + [ + -0.001001149313172032, + 2.6873434702980055e-05 + ] + ], + [ + [ + 0.0009240793799006225, + 0.0042141832231715505 + ], + [ + -0.0009349697213270857, + 0.004214171777923298 + ], + [ + -0.00093835020536306, + 2.7786098314149026e-05 + ], + [ + 0.000927427819893963, + 2.778639342511397e-05 + ] + ], + [ + [ + 0.002843193531587522, + 0.004206747431026705 + ], + [ + 0.000986701663087137, + 0.00421050199101167 + ], + [ + 0.000990228369309548, + 2.4140802011686324e-05 + ], + [ + 0.0028504435715307813, + 2.4094658579127834e-05 + ] + ], + [ + [ + 0.004756556188848404, + 0.004200130569574209 + ], + [ + 0.0029065530242834334, + 0.004206566678046397 + ], + [ + 0.002913889644275049, + 2.4093003298998073e-05 + ], + [ + 0.004765827076236628, + 2.4042341047072288e-05 + ] + ], + [ + [ + 0.00665827531932748, + 0.004195309876489933 + ], + [ + 0.004816931240054471, + 0.00420349685750994 + ], + [ + 0.00482626606033293, + 2.7669382488750967e-05 + ], + [ + 0.006668900976532196, + 2.7606064031519154e-05 + ] + ], + [ + [ + 0.008553307077392214, + 0.004175676370711714 + ], + [ + 0.006721991322448108, + 0.004185092459997097 + ], + [ + 0.006732608496573516, + 1.764832177486025e-05 + ], + [ + 0.008564939148047148, + 1.7604755284802545e-05 + ] + ], + [ + [ + -0.008562194422863151, + -0.004181023126885107 + ], + [ + -0.006730931761698082, + -0.004190454563683025 + ], + [ + -0.006741580240919525, + -2.3078305295133278e-05 + ], + [ + -0.008573860010152574, + -2.302131517941355e-05 + ] + ], + [ + [ + -0.006669067224226424, + -0.004188951370989375 + ], + [ + -0.004827771806461206, + -0.0041971373234904194 + ], + [ + -0.004837090138047117, + -2.131875811029807e-05 + ], + [ + -0.0066796694351748, + -2.126995009845673e-05 + ] + ], + [ + [ + -0.004766478747232603, + -0.004198286229396651 + ], + [ + -0.002916514051732392, + -0.004204731778873518 + ], + [ + -0.002923858935648032, + -2.2274422861746457e-05 + ], + [ + -0.004775750623938557, + -2.2227562744394824e-05 + ] + ], + [ + [ + -0.0028531582206601535, + -0.004204009832126555 + ], + [ + -0.0009966871009361898, + -0.004207780561374962 + ], + [ + -0.0010002393667018798, + -2.1407673148902186e-05 + ], + [ + -0.0028604143547899, + -2.136673151225807e-05 + ] + ], + [ + [ + -0.0009349754753653356, + -0.00420875125391396 + ], + [ + 0.0009240850694074941, + -0.004208762695783739 + ], + [ + 0.0009274279529050101, + -2.232022087050363e-05 + ], + [ + -0.000938350338455504, + -2.2319983778795915e-05 + ] + ], + [ + [ + 0.0009912441887173116, + -0.004205979806246945 + ], + [ + 0.002847732273848043, + -0.004202218946138506 + ], + [ + 0.0028549758508777433, + -1.9548401526710986e-05 + ], + [ + 0.0009947789171282269, + -1.9585848643092702e-05 + ] + ], + [ + [ + 0.002905658351132597, + -0.004202956812835212 + ], + [ + 0.004755669218638017, + -0.004196524941694191 + ], + [ + 0.004764925022508466, + -2.0413330732376208e-05 + ], + [ + 0.002912983425302669, + -2.0456344278810754e-05 + ] + ], + [ + [ + 0.004818777410125473, + -0.0041926623069496426 + ], + [ + 0.0066601207429896675, + -0.004184489701548663 + ], + [ + 0.006670696019395748, + -1.6744623657913084e-05 + ], + [ + 0.004828070350851356, + -1.6783032974586378e-05 + ] + ], + [ + [ + 0.006718378677174745, + -0.004190515281156405 + ], + [ + 0.008549711346113912, + -0.0041810910437206856 + ], + [ + 0.008561370517763636, + -2.3021717621319473e-05 + ], + [ + 0.006729019532983938, + -2.3078681653139243e-05 + ] + ], + [ + [ + -0.008521491210226917, + -0.00868895781830988 + ], + [ + -0.006694935317252956, + -0.008705125181053243 + ], + [ + -0.006722736391245107, + -0.004575019948059775 + ], + [ + -0.008553799766992444, + -0.004564880813480846 + ] + ], + [ + [ + -0.006640471066485146, + -0.008695769285071424 + ], + [ + -0.0048051227877877085, + -0.008708778230894824 + ], + [ + -0.004827106124436961, + -0.004574119782456811 + ], + [ + -0.006668095223992446, + -0.004565400245826557 + ] + ], + [ + [ + -0.0047413570072010625, + -0.008710058439777475 + ], + [ + -0.0028990622831021134, + -0.008719286110642994 + ], + [ + -0.002913591230612941, + -0.00458206187776388 + ], + [ + -0.0047631212315817125, + -0.0045752938550037555 + ] + ], + [ + [ + -0.0028350825610609334, + -0.008723990133407834 + ], + [ + -0.0009882695986295695, + -0.008728812258580715 + ], + [ + -0.0009935289724497655, + -0.004590648252154876 + ], + [ + -0.002849332956693382, + -0.004586764268021053 + ] + ], + [ + [ + -0.0009278109896314876, + -0.008727109303737032 + ], + [ + 0.0009205916463615034, + -0.008727118553424076 + ], + [ + 0.0009254961566984564, + -0.0045889184436298455 + ], + [ + -0.0009327533681902978, + -0.004588910661111313 + ] + ], + [ + [ + 0.0009828564843896634, + -0.008727928036997465 + ], + [ + 0.002829680499238894, + -0.00872311930758359 + ], + [ + 0.002843906150175978, + -0.004585877991923871 + ], + [ + 0.0009880873476008462, + -0.004589751926390155 + ] + ], + [ + [ + 0.002892756355567136, + -0.008719310667630096 + ], + [ + 0.004735070344515502, + -0.008710096571885654 + ], + [ + 0.004756812701420816, + -0.004575320608816653 + ], + [ + 0.0029072575548883084, + -0.004582080857868086 + ] + ], + [ + [ + 0.004796131944391878, + -0.008710615362090644 + ], + [ + 0.0066315145362562, + -0.008697621324007166 + ], + [ + 0.006659119227516023, + -0.004567246948135566 + ], + [ + 0.004818087610268901, + -0.004575961283808835 + ] + ], + [ + [ + 0.006686881300598558, + -0.008706080154250308 + ], + [ + 0.008513476585283663, + -0.008689924022158279 + ], + [ + 0.008545770525209837, + -0.004565826452425949 + ], + [ + 0.006714662967201557, + -0.004575961961571302 + ] + ] + ], + "color": { + "comment": "Yellow", + "value": [ + 1.0, + 1.0, + 0.0, + 1.0 + ] + } + } +] \ No newline at end of file diff --git a/plugins/MosaicCamera/resources/MosaicCamera.qrc b/plugins/MosaicCamera/resources/MosaicCamera.qrc new file mode 100644 index 0000000000000..5de079baaae7b --- /dev/null +++ b/plugins/MosaicCamera/resources/MosaicCamera.qrc @@ -0,0 +1,10 @@ + + + + RubinMosaic.json + HSC.json + DECam.json + MegaPrime.json + Latiss.json + + From 4bc36a404cc0ba73458c01912bbd6f8f5c98fab3 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 3 Dec 2024 15:09:05 -0300 Subject: [PATCH 18/32] clean up --- plugins/MosaicCamera/src/MosaicCamera.cpp | 6 +++--- plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index ab070bf43b3e9..4ab3fe3fe0074 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -48,10 +48,10 @@ StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const { StelPluginInfo info; info.id = "MosaicCamera"; - info.displayedName = "Mosaic Camera plugin"; + info.displayedName = "Mosaic Camera"; info.authors = "Josh Meyers"; info.contact = "jmeyers314@gmail.com"; - info.description = "Mosaic Camera Overlay plugin."; + info.description = "Mosaic Camera Overlay"; info.version = MOSAICCAMERA_PLUGIN_VERSION; info.license = MOSAICCAMERA_PLUGIN_LICENSE; return info; @@ -98,7 +98,7 @@ void MosaicCamera::init() tcpServer->startServer(5772); connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); - qDebug() << "Loading Rubin json"; + qDebug() << "Loading camera mosaic"; readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); } diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 0d4ee42bf49a7..48f5103fea551 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ -// #include // #include #include "StelApp.hpp" @@ -45,19 +44,16 @@ MosaicCameraDialog::~MosaicCameraDialog() void MosaicCameraDialog::updateRA() { - qDebug() << "Updating RA"; mc->setRA(ui->RASpinBox->valueDegrees()); } void MosaicCameraDialog::updateDec() { - qDebug() << "Updating Dec"; mc->setDec(ui->DecSpinBox->valueDegrees()); } void MosaicCameraDialog::updateRSP() { - qDebug() << "Updating RSP"; mc->setRSP(ui->RSPSpinBox->valueDegrees()); } @@ -129,6 +125,11 @@ void MosaicCameraDialog::createDialogContent() // Location tab ui->RASpinBox->setDisplayFormat(AngleSpinBox::HMSSymbols); + ui->RSPSpinBox->setDisplayFormat(AngleSpinBox::DecimalDeg); + ui->DecSpinBox->setDisplayFormat(AngleSpinBox::DMSSymbols); + ui->DecSpinBox->setPrefixType(AngleSpinBox::NormalPlus); + ui->DecSpinBox->setMinimum(-90.0, true); + ui->DecSpinBox->setMaximum(90.0, true); connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); connect(ui->RSPSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRSP())); From 3761feb52b17842ddadab93d433ab39ece11ec65 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 3 Dec 2024 15:11:53 -0300 Subject: [PATCH 19/32] reorder tabs --- .../src/gui/mosaicCameraDialog.ui | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index c4e1222b06fe3..b3fe2ae86b531 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -44,26 +44,6 @@ false - - - About - - - - 9 - - - - - true - - - true - - - - - Location @@ -183,6 +163,26 @@ + + + About + + + + 9 + + + + + true + + + true + + + + +
From 41d550959bdacf82902a4d5bc7adf459fed9a55d Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Fri, 6 Dec 2024 15:23:32 -0800 Subject: [PATCH 20/32] Don't need colorComment --- plugins/MosaicCamera/src/MosaicCamera.cpp | 1 - plugins/MosaicCamera/src/MosaicCamera.hpp | 1 - 2 files changed, 2 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 4ab3fe3fe0074..0b7f78f600729 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -140,7 +140,6 @@ void MosaicCamera::readPolygonSetsFromJson(const QString& filename) // Read color QJsonObject colorObject = setObject["color"].toObject(); - set.colorComment = colorObject["comment"].toString(); QJsonArray colorArray = colorObject["value"].toArray(); if (colorArray.size() == 4) { set.color = QColor::fromRgbF( diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index f12c416cfdd89..bddb4fd4bea82 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -32,7 +32,6 @@ struct PolygonSet { QString name; QVector> corners; QColor color; - QString colorComment; }; //! This is an example of a plug-in which can be dynamically loaded into stellarium From 8b5413b5e69656a7b53148a15a832c9412be6104 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Fri, 6 Dec 2024 16:27:25 -0800 Subject: [PATCH 21/32] Multiple Cameras --- plugins/MosaicCamera/src/MosaicCamera.cpp | 271 ++++++++++++------ plugins/MosaicCamera/src/MosaicCamera.hpp | 34 ++- plugins/MosaicCamera/src/MosaicServer.cpp | 49 ---- plugins/MosaicCamera/src/MosaicTcpServer.cpp | 15 +- plugins/MosaicCamera/src/MosaicTcpServer.hpp | 2 +- .../src/gui/MosaicCameraDialog.cpp | 72 +++-- .../src/gui/MosaicCameraDialog.hpp | 10 +- .../src/gui/mosaicCameraDialog.ui | 16 +- 8 files changed, 286 insertions(+), 183 deletions(-) delete mode 100644 plugins/MosaicCamera/src/MosaicServer.cpp diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 0b7f78f600729..7b8304f69a586 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -60,10 +60,10 @@ StelPluginInfo MosaicCameraStelPluginInterface::getPluginInfo() const /************************************************************************* Constructor *************************************************************************/ -MosaicCamera::MosaicCamera() : ra(0), dec(0), rsp(0) +MosaicCamera::MosaicCamera() { - setObjectName("MosaicCamera"); - configDialog = new MosaicCameraDialog(); + setObjectName("MosaicCamera"); + configDialog = new MosaicCameraDialog(); tcpServer = new MosaicTcpServer(); } @@ -94,16 +94,41 @@ void MosaicCamera::init() { Q_INIT_RESOURCE(MosaicCamera); - qDebug() << "Starting TCP server"; + qDebug() << "[MosaicCamera] Starting TCP server"; tcpServer->startServer(5772); connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); - qDebug() << "Loading camera mosaic"; - readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); + qDebug() << "[MosaicCamera] Loading built-in cameras"; + loadBuiltInCameras(); } +void MosaicCamera::loadBuiltInCameras() +{ + QStringList cameraNames = {"LSSTCam", "DECam", "HSC", "MegaPrime", "Latiss"}; + QStringList jsonFiles = { + ":/MosaicCamera/RubinMosaic.json", + ":/MosaicCamera/DECam.json", + ":/MosaicCamera/HSC.json", + ":/MosaicCamera/MegaPrime.json", + ":/MosaicCamera/Latiss.json" + }; + + for (int i = 0; i < cameraNames.size(); ++i) + { + Camera camera; + camera.name = cameraNames[i]; + camera.ra = 0.0; + camera.dec = 0.0; + camera.rotation = 0.0; + camera.visible = false; + cameras.insert(camera.name, camera); + readPolygonSetsFromJson(camera.name, jsonFiles[i]); + } + qDebug() << "[MosaicCamera] Loaded" << cameras.size() << "cameras"; + qDebug() << "[MosaicCamera] Camera names:" << cameras.keys(); +} -void MosaicCamera::readPolygonSetsFromJson(const QString& filename) +void MosaicCamera::readPolygonSetsFromJson(const QString& cameraName, const QString& filename) { QVector polygonSets; @@ -153,118 +178,174 @@ void MosaicCamera::readPolygonSetsFromJson(const QString& filename) polygonSets.append(set); } - polygon_sets = polygonSets; + if (cameras.contains(cameraName)) + { + cameras[cameraName].polygon_sets = polygonSets; + } } -void MosaicCamera::setRA(double ra) +void MosaicCamera::setRA(const QString& cameraName, double ra) { - this->ra = ra; - if(configDialog->visible()) { - configDialog->setRA(ra); + if (cameras.contains(cameraName)) + { + cameras[cameraName].ra = ra; + if(configDialog->visible()) { + if (configDialog->getCurrentCameraName() == cameraName) { + configDialog->setRA(ra); + } + } } } -void MosaicCamera::setDec(double dec) +void MosaicCamera::setDec(const QString& cameraName, double dec) { - this->dec = dec; - if(configDialog->visible()) { - configDialog->setDec(dec); + if (cameras.contains(cameraName)) + { + cameras[cameraName].dec = dec; + if(configDialog->visible()) { + if (configDialog->getCurrentCameraName() == cameraName) { + configDialog->setDec(dec); + } + } } } -void MosaicCamera::setRSP(double rsp) +void MosaicCamera::setRotation(const QString& cameraName, double rotation) { - this->rsp = rsp; - if(configDialog->visible()) { - configDialog->setRSP(rsp); + if (cameras.contains(cameraName)) + { + cameras[cameraName].rotation = rotation; + if(configDialog->visible()) { + if (configDialog->getCurrentCameraName() == cameraName) { + configDialog->setRotation(rotation); + } + } } } -void MosaicCamera::updateMosaic(double ra, double dec, double rsp) +void MosaicCamera::setVisibility(const QString& cameraName, bool visible) { - qDebug() << "Received new values: RA=" << ra << ", Dec=" << dec << ", RSP=" << rsp; - setRA(ra); - setDec(dec); - setRSP(rsp); + if (cameras.contains(cameraName)) + { + cameras[cameraName].visible = visible; + if(configDialog->visible()) { + if (configDialog->getCurrentCameraName() == cameraName) { + configDialog->setVisibility(visible); + } + } + } +} + +double MosaicCamera::getRA(const QString& cameraName) const +{ + return cameras.value(cameraName).ra; +} + +double MosaicCamera::getDec(const QString& cameraName) const +{ + return cameras.value(cameraName).dec; +} + +double MosaicCamera::getRotation(const QString& cameraName) const +{ + return cameras.value(cameraName).rotation; +} + +bool MosaicCamera::getVisibility(const QString& cameraName) const +{ + return cameras.value(cameraName).visible; +} + +void MosaicCamera::updateMosaic(const QString& cameraName, double ra, double dec, double rotation) +{ + qDebug() << "Received new values for" << cameraName << ": RA=" << ra << ", Dec=" << dec << ", Rotation=" << rotation; + setRA(cameraName, ra); + setDec(cameraName, dec); + setRotation(cameraName, rotation); } void MosaicCamera::draw(StelCore* core) { - // Input parameters for drawing LSSTCam FoV are: - // ra - // dec - // rotskypos - - const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); - StelPainter painter(prj); - - - double alpha = ra / 57.29577951308232 + 1.5707963267948966; // ra=0 isn't along x=0? - double beta = 1.5707963267948966 - dec / 57.29577951308232; // polar angle - double rot = rsp / 57.29577951308232; // rotation angle - - double cosBeta = cos(beta); - double sinBeta = sin(beta); - - double cosAlpha = cos(alpha); - double sinAlpha = sin(alpha); - - Vec3d startPoint, endPoint; - - - for (const auto& polygonSet : polygon_sets) { - // Set color for this polygon set - painter.setColor( - polygonSet.color.redF(), - polygonSet.color.greenF(), - polygonSet.color.blueF(), - polygonSet.color.alphaF() - ); - - for (const auto& polygon : polygonSet.corners) { - // Loop through points in the polygon - for (int i = 0; i < polygon.size(); ++i) { - const QPointF& p1 = polygon[i]; - const QPointF& p2 = polygon[(i + 1) % polygon.size()]; - - // Apply camera rotator - double r1x = cos(rot) * p1.x() + sin(rot) * p1.y(); - double r1y = -sin(rot) * p1.x() + cos(rot) * p1.y(); - double r2x = cos(rot) * p2.x() + sin(rot) * p2.y(); - double r2y = -sin(rot) * p2.x() + cos(rot) * p2.y(); - - double r1z = 1.0; - double r2z = 1.0; - - double den1 = sqrt(r1x*r1x + r1y*r1y + r1z*r1z); - double den2 = sqrt(r2x*r2x + r2y*r2y + r2z*r2z); - - // Apply declination - double s1x = r1x; - double s1y = r1y * cosBeta - r1z * sinBeta; - double s1z = r1y * sinBeta + r1z * cosBeta; - double s2x = r2x; - double s2y = r2y * cosBeta - r2z * sinBeta; - double s2z = r2y * sinBeta + r2z * cosBeta; - - // Apply right ascension - startPoint.set( - (s1x*cosAlpha - s1y*sinAlpha)/den1, - (s1x*sinAlpha + s1y*cosAlpha)/den1, - s1z/den1 - ); - endPoint.set( - (s2x*cosAlpha - s2y*sinAlpha)/den2, - (s2x*sinAlpha + s2y*cosAlpha)/den2, - s2z/den2 - ); - - painter.drawGreatCircleArc(startPoint, endPoint); + const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); + StelPainter painter(prj); + + Vec3d startPoint, endPoint; + + for (const auto& camera : cameras) + { + if (!camera.visible) + continue; + + double alpha = camera.ra / 57.29577951308232 + 1.5707963267948966; + double beta = 1.5707963267948966 - camera.dec / 57.29577951308232; + double rot = camera.rotation / 57.29577951308232; + + double cosBeta = cos(beta); + double sinBeta = sin(beta); + + double cosAlpha = cos(alpha); + double sinAlpha = sin(alpha); + + for (const auto& polygonSet : camera.polygon_sets) { + + // Set color for this polygon set + painter.setColor( + polygonSet.color.redF(), + polygonSet.color.greenF(), + polygonSet.color.blueF(), + polygonSet.color.alphaF() + ); + + for (const auto& polygon : polygonSet.corners) { + // Loop through points in the polygon + for (int i = 0; i < polygon.size(); ++i) { + const QPointF& p1 = polygon[i]; + const QPointF& p2 = polygon[(i + 1) % polygon.size()]; + + // Apply camera rotator + double r1x = cos(rot) * p1.x() + sin(rot) * p1.y(); + double r1y = -sin(rot) * p1.x() + cos(rot) * p1.y(); + double r2x = cos(rot) * p2.x() + sin(rot) * p2.y(); + double r2y = -sin(rot) * p2.x() + cos(rot) * p2.y(); + + double r1z = 1.0; + double r2z = 1.0; + + double den1 = sqrt(r1x*r1x + r1y*r1y + r1z*r1z); + double den2 = sqrt(r2x*r2x + r2y*r2y + r2z*r2z); + + // Apply declination + double s1x = r1x; + double s1y = r1y * cosBeta - r1z * sinBeta; + double s1z = r1y * sinBeta + r1z * cosBeta; + double s2x = r2x; + double s2y = r2y * cosBeta - r2z * sinBeta; + double s2z = r2y * sinBeta + r2z * cosBeta; + + // Apply right ascension + startPoint.set( + (s1x*cosAlpha - s1y*sinAlpha)/den1, + (s1x*sinAlpha + s1y*cosAlpha)/den1, + s1z/den1 + ); + endPoint.set( + (s2x*cosAlpha - s2y*sinAlpha)/den2, + (s2x*sinAlpha + s2y*cosAlpha)/den2, + s2z/den2 + ); + + painter.drawGreatCircleArc(startPoint, endPoint); + } } } } } +QStringList MosaicCamera::getCameraNames() const +{ + return cameras.keys(); +} + bool MosaicCamera::configureGui(bool show) { if (show) diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index bddb4fd4bea82..c2a9524b9ac93 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -34,6 +34,15 @@ struct PolygonSet { QColor color; }; +struct Camera { + QString name; + double ra; + double dec; + double rotation; + bool visible; + QVector polygon_sets; +}; + //! This is an example of a plug-in which can be dynamically loaded into stellarium class MosaicCamera : public StelModule { @@ -51,19 +60,26 @@ class MosaicCamera : public StelModule bool configureGui(bool show=true) override; - void setRA(double ra); - void setDec(double dec); - void setRSP(double rsp); - void readPolygonSetsFromJson(const QString& filename); + void setRA(const QString& cameraName, double ra); + void setDec(const QString& cameraName, double dec); + void setRotation(const QString& cameraName, double rotation); + void setVisibility(const QString& cameraName, bool visible); + + double getRA(const QString& cameraName) const; + double getDec(const QString& cameraName) const; + double getRotation(const QString& cameraName) const; + bool getVisibility(const QString& cameraName) const; + + void loadBuiltInCameras(); + QStringList getCameraNames() const; + void readPolygonSetsFromJson(const QString& cameraName, const QString& filename); public slots: - void updateMosaic(double ra, double dec, double rsp); // Slot to update mosaic with received values + void updateMosaic(const QString& cameraName, double ra, double dec, double rotation); private: - double ra; - double dec; - double rsp; - QVector polygon_sets; + QHash cameras; + QString currentCamera; // GUI MosaicCameraDialog* configDialog; diff --git a/plugins/MosaicCamera/src/MosaicServer.cpp b/plugins/MosaicCamera/src/MosaicServer.cpp deleted file mode 100644 index 1eb4977b7b504..0000000000000 --- a/plugins/MosaicCamera/src/MosaicServer.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include -#include -#include - -class MosaicTcpServer : public QTcpServer { - Q_OBJECT - -public: - MosaicTcpServer(QObject *parent = nullptr) : QTcpServer(parent) { - connect(this, &QTcpServer::newConnection, this, &MosaicTcpServer::onNewConnection); - } - - void startServer(quint16 port) { - if (!this->listen(QHostAddress::Any, port)) { - qDebug() << "Server failed to start: " << this->errorString(); - } else { - qDebug() << "Server started on port" << port; - } - } - -private slots: - void onNewConnection() { - QTcpSocket *client = this->nextPendingConnection(); - connect(client, &QTcpSocket::readyRead, this, [client, this]() { - QByteArray data = client->readAll(); - QString message(data); - - // Parse RA, Dec, and rotation - QStringList params = message.split(','); - if (params.size() == 3) { - bool ok1, ok2, ok3; - double ra = params[0].toDouble(&ok1); - double dec = params[1].toDouble(&ok2); - double rot = params[2].toDouble(&ok3); - - if (ok1 && ok2 && ok3) { - // Update plugin settings - emit newValuesReceived(ra, dec, rot); - } - } - }); - - connect(client, &QTcpSocket::disconnected, client, &QTcpSocket::deleteLater); - } - -signals: - void newValuesReceived(double ra, double dec, double rot); -}; diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.cpp b/plugins/MosaicCamera/src/MosaicTcpServer.cpp index 028cde656b373..e9bcf09616f06 100644 --- a/plugins/MosaicCamera/src/MosaicTcpServer.cpp +++ b/plugins/MosaicCamera/src/MosaicTcpServer.cpp @@ -10,9 +10,9 @@ MosaicTcpServer::MosaicTcpServer(QObject *parent) : QTcpServer(parent) void MosaicTcpServer::startServer(quint16 port) { if (!this->listen(QHostAddress::Any, port)) { - qDebug() << "Server failed to start: " << this->errorString(); + qDebug() << "[MosaicCamera] Server failed to start: " << this->errorString(); } else { - qDebug() << "Server started on port" << port; + qDebug() << "[MosaicCamera] Server started on port" << port; } } @@ -33,15 +33,16 @@ void MosaicTcpServer::processClientData(QTcpSocket *client) // Parse RA, Dec, and rotation QStringList params = message.split(','); - if (params.size() == 3) { + if (params.size() == 4) { bool ok1, ok2, ok3; - double ra = params[0].toDouble(&ok1); - double dec = params[1].toDouble(&ok2); - double rot = params[2].toDouble(&ok3); + QString name = params[0]; + double ra = params[1].toDouble(&ok1); + double dec = params[2].toDouble(&ok2); + double rot = params[3].toDouble(&ok3); if (ok1 && ok2 && ok3) { // Emit the parsed values to be processed elsewhere - emit newValuesReceived(ra, dec, rot); + emit newValuesReceived(name, ra, dec, rot); } } } diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.hpp b/plugins/MosaicCamera/src/MosaicTcpServer.hpp index 266e45678c93b..3bf7fc39db861 100644 --- a/plugins/MosaicCamera/src/MosaicTcpServer.hpp +++ b/plugins/MosaicCamera/src/MosaicTcpServer.hpp @@ -13,7 +13,7 @@ class MosaicTcpServer : public QTcpServer void startServer(quint16 port); signals: - void newValuesReceived(double ra, double dec, double rot); + void newValuesReceived(QString name, double ra, double dec, double rot); private slots: void onNewConnection(); diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 48f5103fea551..b4b98cd67c453 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -42,34 +42,65 @@ MosaicCameraDialog::~MosaicCameraDialog() delete ui; } +QString MosaicCameraDialog::getCurrentCameraName() const +{ + return currentCameraName; +} + void MosaicCameraDialog::updateRA() { - mc->setRA(ui->RASpinBox->valueDegrees()); + mc->setRA(currentCameraName, ui->RASpinBox->valueDegrees()); } void MosaicCameraDialog::updateDec() { - mc->setDec(ui->DecSpinBox->valueDegrees()); + mc->setDec(currentCameraName, ui->DecSpinBox->valueDegrees()); } -void MosaicCameraDialog::updateRSP() +void MosaicCameraDialog::updateRotation() { - mc->setRSP(ui->RSPSpinBox->valueDegrees()); + mc->setRotation(currentCameraName, ui->RotationSpinBox->valueDegrees()); +} + +void MosaicCameraDialog::updateVisibility(bool visible) +{ + mc->setVisibility(currentCameraName, visible); } void MosaicCameraDialog::onCameraSelectionChanged() { if (ui->lsstCamRadioButton->isChecked()) { - mc->readPolygonSetsFromJson(":/MosaicCamera/RubinMosaic.json"); + currentCameraName = "LSSTCam"; } else if (ui->decamRadioButton->isChecked()) { - mc->readPolygonSetsFromJson(":/MosaicCamera/DECam.json"); - } else if (ui->hscRadioButton->isChecked()) { - mc->readPolygonSetsFromJson(":/MosaicCamera/HSC.json"); - } else if (ui->megaPrimeRadioButton->isChecked()) { - mc->readPolygonSetsFromJson(":/MosaicCamera/MegaPrime.json"); - } else if (ui->latissPrimeRadioButton->isChecked()) { - mc->readPolygonSetsFromJson(":/MosaicCamera/Latiss.json"); - } + currentCameraName = "DECam"; + } else if (ui->hscRadioButton->isChecked()) { + currentCameraName = "HSC"; + } else if (ui->megaPrimeRadioButton->isChecked()) { + currentCameraName = "MegaPrime"; + } else if (ui->latissPrimeRadioButton->isChecked()) { + currentCameraName = "LATISS"; + } + updateDialogFields(); +} + +void MosaicCameraDialog::updateDialogFields() +{ + // Temporarily disconnect the signals to avoid triggering updates while setting values + ui->RASpinBox->blockSignals(true); + ui->DecSpinBox->blockSignals(true); + ui->RotationSpinBox->blockSignals(true); + ui->visibleCheckBox->blockSignals(true); + + ui->RASpinBox->setDegrees(mc->getRA(currentCameraName)); + ui->DecSpinBox->setDegrees(mc->getDec(currentCameraName)); + ui->RotationSpinBox->setDegrees(mc->getRotation(currentCameraName)); + ui->visibleCheckBox->setChecked(mc->getVisibility(currentCameraName)); + + // Reconnect the signals + ui->RASpinBox->blockSignals(false); + ui->DecSpinBox->blockSignals(false); + ui->RotationSpinBox->blockSignals(false); + ui->visibleCheckBox->blockSignals(false); } void MosaicCameraDialog::setRA(double ra) @@ -82,9 +113,14 @@ void MosaicCameraDialog::setDec(double dec) ui->DecSpinBox->setDegrees(dec); } -void MosaicCameraDialog::setRSP(double rsp) +void MosaicCameraDialog::setRotation(double rot) +{ + ui->RotationSpinBox->setDegrees(rot); +} + +void MosaicCameraDialog::setVisibility(bool visible) { - ui->RSPSpinBox->setDegrees(rsp); + ui->visibleCheckBox->setChecked(visible); } void MosaicCameraDialog::retranslate() @@ -103,6 +139,7 @@ void MosaicCameraDialog::createDialogContent() ui->setupUi(dialog); ui->tabs->setCurrentIndex(0); ui->lsstCamRadioButton->setChecked(true); + currentCameraName = "LSSTCam"; connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SLOT(retranslate())); @@ -125,14 +162,15 @@ void MosaicCameraDialog::createDialogContent() // Location tab ui->RASpinBox->setDisplayFormat(AngleSpinBox::HMSSymbols); - ui->RSPSpinBox->setDisplayFormat(AngleSpinBox::DecimalDeg); + ui->RotationSpinBox->setDisplayFormat(AngleSpinBox::DecimalDeg); ui->DecSpinBox->setDisplayFormat(AngleSpinBox::DMSSymbols); ui->DecSpinBox->setPrefixType(AngleSpinBox::NormalPlus); ui->DecSpinBox->setMinimum(-90.0, true); ui->DecSpinBox->setMaximum(90.0, true); connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); - connect(ui->RSPSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRSP())); + connect(ui->RotationSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRotation())); + connect(ui->visibleCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateVisibility(bool))); connect(ui->lsstCamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); connect(ui->decamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); connect(ui->hscRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index da7b1096d008d..784a87e3375a9 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -39,7 +39,9 @@ class MosaicCameraDialog : public StelDialog ~MosaicCameraDialog() override; void setRA(double ra); void setDec(double dec); - void setRSP(double rsp); + void setRotation(double rot); + void setVisibility(bool visible); + QString getCurrentCameraName() const; protected: //! Initialize the dialog widgets and connect the signals/slots @@ -49,13 +51,17 @@ public slots: void retranslate() override; void updateRA(); void updateDec(); - void updateRSP(); + void updateRotation(); + void updateVisibility(bool visible); void onCameraSelectionChanged(); private: + QString currentCameraName; + MosaicCamera* mc; Ui_mosaicCameraDialog* ui; void setAboutHtml(void); + void updateDialogFields(); }; #endif // MOSAICCAMERADIALOG_HPP diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index b3fe2ae86b531..9ffe236c71e16 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -86,14 +86,14 @@
- + - RotSkyPos: + Rotation: - + -90.000000000000000 @@ -102,6 +102,16 @@
+ + + + Visible: + + + + + + From 5330f521d60460218cbcd401483bf5bcb700225e Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sun, 8 Dec 2024 08:41:35 -0800 Subject: [PATCH 22/32] Use QListWidget --- plugins/MosaicCamera/src/MosaicCamera.cpp | 3 +- plugins/MosaicCamera/src/MosaicCamera.hpp | 1 + .../src/gui/MosaicCameraDialog.cpp | 41 ++-- .../src/gui/MosaicCameraDialog.hpp | 2 +- .../src/gui/mosaicCameraDialog.ui | 206 ++++++++---------- 5 files changed, 110 insertions(+), 143 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 7b8304f69a586..8ec79e6a9df6d 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -123,6 +123,7 @@ void MosaicCamera::loadBuiltInCameras() camera.visible = false; cameras.insert(camera.name, camera); readPolygonSetsFromJson(camera.name, jsonFiles[i]); + cameraOrder.append(camera.name); } qDebug() << "[MosaicCamera] Loaded" << cameras.size() << "cameras"; qDebug() << "[MosaicCamera] Camera names:" << cameras.keys(); @@ -343,7 +344,7 @@ void MosaicCamera::draw(StelCore* core) QStringList MosaicCamera::getCameraNames() const { - return cameras.keys(); + return cameraOrder; } bool MosaicCamera::configureGui(bool show) diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index c2a9524b9ac93..de1f65f14014e 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -79,6 +79,7 @@ public slots: private: QHash cameras; + QStringList cameraOrder; QString currentCamera; // GUI diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index b4b98cd67c453..4c63ecfaf285d 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -67,22 +67,6 @@ void MosaicCameraDialog::updateVisibility(bool visible) mc->setVisibility(currentCameraName, visible); } -void MosaicCameraDialog::onCameraSelectionChanged() -{ - if (ui->lsstCamRadioButton->isChecked()) { - currentCameraName = "LSSTCam"; - } else if (ui->decamRadioButton->isChecked()) { - currentCameraName = "DECam"; - } else if (ui->hscRadioButton->isChecked()) { - currentCameraName = "HSC"; - } else if (ui->megaPrimeRadioButton->isChecked()) { - currentCameraName = "MegaPrime"; - } else if (ui->latissPrimeRadioButton->isChecked()) { - currentCameraName = "LATISS"; - } - updateDialogFields(); -} - void MosaicCameraDialog::updateDialogFields() { // Temporarily disconnect the signals to avoid triggering updates while setting values @@ -132,14 +116,28 @@ void MosaicCameraDialog::retranslate() } } +void MosaicCameraDialog::onCameraSelectionChanged(const QString& cameraName) +{ + currentCameraName = cameraName; + updateDialogFields(); +} + // Initialize the dialog widgets and connect the signals/slots void MosaicCameraDialog::createDialogContent() { mc = GETSTELMODULE(MosaicCamera); ui->setupUi(dialog); ui->tabs->setCurrentIndex(0); - ui->lsstCamRadioButton->setChecked(true); - currentCameraName = "LSSTCam"; + + QStringList cameraNames = mc->getCameraNames(); + ui->cameraListWidget->addItems(cameraNames); + if (!cameraNames.isEmpty()) + { + ui->cameraListWidget->setCurrentRow(0); + currentCameraName = cameraNames[0]; + updateDialogFields(); + } + connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SLOT(retranslate())); @@ -167,15 +165,12 @@ void MosaicCameraDialog::createDialogContent() ui->DecSpinBox->setPrefixType(AngleSpinBox::NormalPlus); ui->DecSpinBox->setMinimum(-90.0, true); ui->DecSpinBox->setMaximum(90.0, true); + connect(ui->cameraListWidget, SIGNAL(currentTextChanged(const QString&)), + this, SLOT(onCameraSelectionChanged(const QString&))); connect(ui->RASpinBox, SIGNAL(valueChanged()), this, SLOT(updateRA())); connect(ui->DecSpinBox, SIGNAL(valueChanged()), this, SLOT(updateDec())); connect(ui->RotationSpinBox, SIGNAL(valueChanged()), this, SLOT(updateRotation())); connect(ui->visibleCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateVisibility(bool))); - connect(ui->lsstCamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); - connect(ui->decamRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); - connect(ui->hscRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); - connect(ui->megaPrimeRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); - connect(ui->latissPrimeRadioButton, SIGNAL(clicked()), this, SLOT(onCameraSelectionChanged())); } void MosaicCameraDialog::setAboutHtml(void) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 784a87e3375a9..1decd53c39073 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -53,7 +53,7 @@ public slots: void updateDec(); void updateRotation(); void updateVisibility(bool visible); - void onCameraSelectionChanged(); + void onCameraSelectionChanged(const QString& cameraName); private: QString currentCameraName; diff --git a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui index 9ffe236c71e16..1ce043d52a054 100644 --- a/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui +++ b/plugins/MosaicCamera/src/gui/mosaicCameraDialog.ui @@ -7,7 +7,7 @@ 0 0 530 - 334 + 400 @@ -39,7 +39,7 @@ - 1 + 0 false @@ -48,129 +48,99 @@ Location - + - - - - - Right Ascension: - - - - - - - -360.000000000000000 - - - 360.000000000000000 - - - - - - - Declination: - - - - - - - -90.000000000000000 - - - 90.000000000000000 - - - - - - - Rotation: - - + + + + 1 + 0 + + + + + + + + + + + + Right Ascension: + + + + + + + -360.000000000000000 + + + 360.000000000000000 + + + + + + + Declination: + + + + + + + -90.000000000000000 + + + 90.000000000000000 + + + + + + + Rotation: + + + + + + + -90.000000000000000 + + + 90.000000000000000 + + + + + + + Visible: + + + + + + + - - - - -90.000000000000000 + + + + Qt::Vertical - - 90.000000000000000 - - - - - - - Visible: + + + 20 + 40 + - - - - + - - - - Camera Selection - - - - - - LSSTCam - - - - - - - DECam - - - - - - - HSC - - - - - - - MegaPrime - - - - - - - Latiss - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - From 22aea40515ca1374873e3dd3c520d6bc0ca3236f Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Mon, 9 Dec 2024 15:06:39 -0800 Subject: [PATCH 23/32] Use userDirectory for cameras --- .../{RubinMosaic.json => LSSTCam.json} | 0 .../MosaicCamera/resources/MosaicCamera.qrc | 3 +- .../MosaicCamera/resources/camera_order.json | 9 +++ plugins/MosaicCamera/src/MosaicCamera.cpp | 74 +++++++++++++++---- plugins/MosaicCamera/src/MosaicCamera.hpp | 20 +++-- 5 files changed, 81 insertions(+), 25 deletions(-) rename plugins/MosaicCamera/resources/{RubinMosaic.json => LSSTCam.json} (100%) create mode 100644 plugins/MosaicCamera/resources/camera_order.json diff --git a/plugins/MosaicCamera/resources/RubinMosaic.json b/plugins/MosaicCamera/resources/LSSTCam.json similarity index 100% rename from plugins/MosaicCamera/resources/RubinMosaic.json rename to plugins/MosaicCamera/resources/LSSTCam.json diff --git a/plugins/MosaicCamera/resources/MosaicCamera.qrc b/plugins/MosaicCamera/resources/MosaicCamera.qrc index 5de079baaae7b..f6276adddd4ab 100644 --- a/plugins/MosaicCamera/resources/MosaicCamera.qrc +++ b/plugins/MosaicCamera/resources/MosaicCamera.qrc @@ -1,7 +1,8 @@ - RubinMosaic.json + camera_order.json + LSSTCam.json HSC.json DECam.json MegaPrime.json diff --git a/plugins/MosaicCamera/resources/camera_order.json b/plugins/MosaicCamera/resources/camera_order.json new file mode 100644 index 0000000000000..a7fc97aea8e75 --- /dev/null +++ b/plugins/MosaicCamera/resources/camera_order.json @@ -0,0 +1,9 @@ +{ + "order": [ + "LSSTCam", + "DECam", + "HSC", + "MegaPrime", + "Latiss" + ] +} \ No newline at end of file diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 8ec79e6a9df6d..17fff0b43555d 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -19,6 +19,7 @@ #include "StelProjector.hpp" #include "StelApp.hpp" #include "StelCore.hpp" +#include "StelFileMgr.hpp" #include "StelLocaleMgr.hpp" #include "StelModuleMgr.hpp" #include "MosaicCamera.hpp" @@ -29,6 +30,7 @@ #include "CustomObject.hpp" #include +#include #include #include #include @@ -94,6 +96,8 @@ void MosaicCamera::init() { Q_INIT_RESOURCE(MosaicCamera); + initializeUserData(); + qDebug() << "[MosaicCamera] Starting TCP server"; tcpServer->startServer(5772); connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); @@ -102,28 +106,72 @@ void MosaicCamera::init() loadBuiltInCameras(); } +void MosaicCamera::initializeUserData() +{ + userDirectory = StelFileMgr::getUserDir()+"/modules/MosaicCamera/"; + QDir dir(userDirectory); + if (!dir.exists()) + { + StelFileMgr::makeSureDirExistsAndIsWritable(userDirectory); + copyResourcesToUserDirectory(); + } +} + +void MosaicCamera::copyResourcesToUserDirectory() +{ + // Get list of files in the resource directory + QDir resourceDir(":/MosaicCamera"); + QStringList resourceFiles = resourceDir.entryList(QDir::Files); + + for (const QString& fileName : resourceFiles) + { + QString resourcePath = ":/MosaicCamera/" + fileName; + QString destPath = userDirectory + fileName; + + if (QFile::copy(resourcePath, destPath)) + { + qDebug() << "Copied" << resourcePath << "to" << destPath; + + // Ensure the copied file is writable + QFile destFile(destPath); + destFile.setPermissions(destFile.permissions() | QFile::WriteOwner); + } + else + { + qWarning() << "Failed to copy" << resourcePath << "to" << destPath; + } + } +} + +void MosaicCamera::loadCameraOrder() +{ + cameraOrder.clear(); + QFile file(userDirectory + "camera_order.json"); + if (file.open(QIODevice::ReadOnly)) { + QByteArray data = file.readAll(); + QJsonDocument doc(QJsonDocument::fromJson(data)); + QJsonObject json = doc.object(); + QJsonArray orderArray = json["order"].toArray(); + for (const auto& value : orderArray) { + cameraOrder << value.toString(); + } + } +} + void MosaicCamera::loadBuiltInCameras() { - QStringList cameraNames = {"LSSTCam", "DECam", "HSC", "MegaPrime", "Latiss"}; - QStringList jsonFiles = { - ":/MosaicCamera/RubinMosaic.json", - ":/MosaicCamera/DECam.json", - ":/MosaicCamera/HSC.json", - ":/MosaicCamera/MegaPrime.json", - ":/MosaicCamera/Latiss.json" - }; - - for (int i = 0; i < cameraNames.size(); ++i) + loadCameraOrder(); + cameras.clear(); + for (int i = 0; i < cameraOrder.size(); ++i) { Camera camera; - camera.name = cameraNames[i]; + camera.name = cameraOrder[i]; camera.ra = 0.0; camera.dec = 0.0; camera.rotation = 0.0; camera.visible = false; cameras.insert(camera.name, camera); - readPolygonSetsFromJson(camera.name, jsonFiles[i]); - cameraOrder.append(camera.name); + readPolygonSetsFromJson(camera.name, userDirectory + camera.name + ".json"); } qDebug() << "[MosaicCamera] Loaded" << cameras.size() << "cameras"; qDebug() << "[MosaicCamera] Camera names:" << cameras.keys(); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index de1f65f14014e..a1fa6f19d0b32 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -19,10 +19,12 @@ #ifndef MOSAICCAMERA_HPP #define MOSAICCAMERA_HPP -#include "StelModule.hpp" #include "MosaicTcpServer.hpp" +#include "StelModule.hpp" +#include "StelPluginInterface.hpp" #include #include +#include #include #include @@ -43,7 +45,6 @@ struct Camera { QVector polygon_sets; }; -//! This is an example of a plug-in which can be dynamically loaded into stellarium class MosaicCamera : public StelModule { Q_OBJECT @@ -52,8 +53,6 @@ class MosaicCamera : public StelModule MosaicCamera(); ~MosaicCamera() override; - /////////////////////////////////////////////////////////////////////////// - // Methods defined in the StelModule class void init() override; void draw(StelCore* core) override; double getCallOrder(StelModuleActionName actionName) const override; @@ -70,7 +69,6 @@ class MosaicCamera : public StelModule double getRotation(const QString& cameraName) const; bool getVisibility(const QString& cameraName) const; - void loadBuiltInCameras(); QStringList getCameraNames() const; void readPolygonSetsFromJson(const QString& cameraName, const QString& filename); @@ -81,17 +79,17 @@ public slots: QHash cameras; QStringList cameraOrder; QString currentCamera; + QString userDirectory; + + void loadBuiltInCameras(); + void loadCameraOrder(); + void initializeUserData(); + void copyResourcesToUserDirectory(); - // GUI MosaicCameraDialog* configDialog; MosaicTcpServer* tcpServer; }; - -#include -#include "StelPluginInterface.hpp" - -//! This class is used by Qt to manage a plug-in interface class MosaicCameraStelPluginInterface : public QObject, public StelPluginInterface { Q_OBJECT From 79b3c2d760609f23fe20288db41e2502d7907c3f Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 10 Dec 2024 20:26:53 -0800 Subject: [PATCH 24/32] Add MosaicCamera README --- plugins/MosaicCamera/ChangeLog | 2 + plugins/MosaicCamera/README | 68 +++++++++++++++++++ plugins/MosaicCamera/src/MosaicTcpServer.cpp | 2 - .../src/gui/MosaicCameraDialog.hpp | 2 - 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 plugins/MosaicCamera/ChangeLog create mode 100644 plugins/MosaicCamera/README diff --git a/plugins/MosaicCamera/ChangeLog b/plugins/MosaicCamera/ChangeLog new file mode 100644 index 0000000000000..d340171e83176 --- /dev/null +++ b/plugins/MosaicCamera/ChangeLog @@ -0,0 +1,2 @@ +0.0.0 [2024-12-10] +Created basic plugin diff --git a/plugins/MosaicCamera/README b/plugins/MosaicCamera/README new file mode 100644 index 0000000000000..a8e0ef4cebf68 --- /dev/null +++ b/plugins/MosaicCamera/README @@ -0,0 +1,68 @@ +Mosaic Camera Overlay Stellarium plugin +======================================= + +Overlays mosaic camera sensor outlines on the Stellarium celestial sphere. + +Available Cameras +================= + +Built-in cameras include: + LSSTCam : https://www.lsst.org/about/camera + HSC : https://www.naoj.org/Projects/HSC/ + DECam : https://www.darkenergysurvey.org/the-des-project/instrument/the-camera/ + MegaPrime : https://www.cfht.hawaii.edu/Instruments/Imaging/Megacam/ + Latiss : https://noirlab.edu/public/programs/vera-c-rubin-observatory/rubin-auxtel/ + +Camera sensors are specified via their corners, which are assumed to form spherical +polygons. The corners should be specified as gnomonic projections from the sphere to a +tangent plane in radians. Multiple groups of sensors can compose the same camera. For +example, LSSTCam has separate sensor groups for wavefront sensors, guider sensors, and +each of two types of science sensors. + +Each camera is defined via a JSON file with the structure: + +[ + { + "name": "name-of-group-1", + "corners": [ + [ + [corner1_x, corner1_y], + [corner2_x, corner2_y], + ... + ], # sensor 1 + [ + ... + ], # sensor 2 + ... + ] + "color": { + "value": [R, G, B, alpha] + } + }, + { + "name": "name-of-group-2", + ... + }, + ... +] + +Cameras are loaded according to the order in + +camera_order.json + +which has the structure: +{ + "order": [ + "LSSTCam", + "DECam", + ... + ] +} + + +TCP Server +========== +The mosaic camera plugin starts a TCP server listening on port 5772. Messages can be +sent to the port in the format: "[name],[ra],[dec],[rot]" where [name] is the name of +one of the cameras, [ra] and [dec] indicate the camera boresight and [rot] the camera +rotation, all in degrees. diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.cpp b/plugins/MosaicCamera/src/MosaicTcpServer.cpp index e9bcf09616f06..8e33bdf8e4d6e 100644 --- a/plugins/MosaicCamera/src/MosaicTcpServer.cpp +++ b/plugins/MosaicCamera/src/MosaicTcpServer.cpp @@ -31,7 +31,6 @@ void MosaicTcpServer::processClientData(QTcpSocket *client) QByteArray data = client->readAll(); QString message(data); - // Parse RA, Dec, and rotation QStringList params = message.split(','); if (params.size() == 4) { bool ok1, ok2, ok3; @@ -41,7 +40,6 @@ void MosaicTcpServer::processClientData(QTcpSocket *client) double rot = params[3].toDouble(&ok3); if (ok1 && ok2 && ok3) { - // Emit the parsed values to be processed elsewhere emit newValuesReceived(name, ra, dec, rot); } } diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp index 1decd53c39073..ffb430b9ace66 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.hpp @@ -29,7 +29,6 @@ class Ui_mosaicCameraDialog; class QTimer; class MosaicCamera; -//! @ingroup mosaicCamera class MosaicCameraDialog : public StelDialog { Q_OBJECT @@ -44,7 +43,6 @@ class MosaicCameraDialog : public StelDialog QString getCurrentCameraName() const; protected: - //! Initialize the dialog widgets and connect the signals/slots void createDialogContent() override; public slots: From f335c215841538477f5a1287b74ede7799de54f3 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Thu, 12 Dec 2024 15:46:20 -0800 Subject: [PATCH 25/32] Remember camera visibility --- plugins/MosaicCamera/src/MosaicCamera.cpp | 34 +++++++++++++++++++++++ plugins/MosaicCamera/src/MosaicCamera.hpp | 5 ++++ 2 files changed, 39 insertions(+) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 17fff0b43555d..bd67ae1b4380b 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -67,6 +67,7 @@ MosaicCamera::MosaicCamera() setObjectName("MosaicCamera"); configDialog = new MosaicCameraDialog(); tcpServer = new MosaicTcpServer(); + conf = StelApp::getInstance().getSettings(); } /************************************************************************* @@ -78,6 +79,36 @@ MosaicCamera::~MosaicCamera() delete tcpServer; } +void MosaicCamera::loadSettings() +{ + conf->beginGroup("MosaicCamera"); + int size = conf->beginReadArray("cameraVisibility"); + for (int i = 0; i < size; ++i) { + conf->setArrayIndex(i); + QString name = conf->value("name").toString(); + bool visible = conf->value("visible").toBool(); + if (cameras.contains(name)) { + cameras[name].visible = visible; + } + } + conf->endArray(); + conf->endGroup(); +} + +void MosaicCamera::saveSettings() const +{ + conf->beginGroup("MosaicCamera"); + conf->beginWriteArray("cameraVisibility"); + int i = 0; + for (auto it = cameras.constBegin(); it != cameras.constEnd(); ++it) { + conf->setArrayIndex(i++); + conf->setValue("name", it.key()); + conf->setValue("visible", it.value().visible); + } + conf->endArray(); + conf->endGroup(); +} + /************************************************************************* Reimplementation of the getCallOrder method *************************************************************************/ @@ -104,6 +135,8 @@ void MosaicCamera::init() qDebug() << "[MosaicCamera] Loading built-in cameras"; loadBuiltInCameras(); + + loadSettings(); } void MosaicCamera::initializeUserData() @@ -277,6 +310,7 @@ void MosaicCamera::setVisibility(const QString& cameraName, bool visible) if (cameras.contains(cameraName)) { cameras[cameraName].visible = visible; + saveSettings(); if(configDialog->visible()) { if (configDialog->getCurrentCameraName() == cameraName) { configDialog->setVisibility(visible); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index a1fa6f19d0b32..da7eab226440e 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -26,6 +26,7 @@ #include #include #include +#include #include class MosaicCameraDialog; @@ -69,6 +70,9 @@ class MosaicCamera : public StelModule double getRotation(const QString& cameraName) const; bool getVisibility(const QString& cameraName) const; + void loadSettings(); + void saveSettings() const; + QStringList getCameraNames() const; void readPolygonSetsFromJson(const QString& cameraName, const QString& filename); @@ -80,6 +84,7 @@ public slots: QStringList cameraOrder; QString currentCamera; QString userDirectory; + QSettings* conf; void loadBuiltInCameras(); void loadCameraOrder(); From 86f343f3984dd06dadd6825d3a1621f695945b3d Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Thu, 12 Dec 2024 20:24:45 -0800 Subject: [PATCH 26/32] ui_MosaicCameraDialog -> ui_mosaicCameraDialog --- plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp index 4c63ecfaf285d..942aa16ee91c3 100644 --- a/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp +++ b/plugins/MosaicCamera/src/gui/MosaicCameraDialog.cpp @@ -21,7 +21,7 @@ // #include #include "StelApp.hpp" -#include "ui_MosaicCameraDialog.h" +#include "ui_mosaicCameraDialog.h" #include "MosaicCameraDialog.hpp" #include "MosaicCamera.hpp" #include "StelModuleMgr.hpp" From c4b3d7184905e12063ab8aaa4f8f34bf9a4bdd8e Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Thu, 12 Dec 2024 20:50:26 -0800 Subject: [PATCH 27/32] Update CMakeLists.txt for Qt5/6 --- plugins/MosaicCamera/src/CMakeLists.txt | 30 +++++++++++-------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index eac630783e796..29f1bd78f896e 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -1,11 +1,5 @@ -INCLUDE_DIRECTORIES( - . - gui - ${CMAKE_BINARY_DIR}/plugins/MosaicCamera/src - ${CMAKE_BINARY_DIR}/plugins/MosaicCamera/src/gui -) - -LINK_DIRECTORIES(${BUILD_DIR}/src) +INCLUDE_DIRECTORIES(. gui) +LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/src) SET(MosaicCamera_SRCS MosaicCamera.hpp @@ -20,8 +14,15 @@ SET(MosaicCameraDialog_UIS gui/mosaicCameraDialog.ui ) +################# compiles resources files ############ SET(MosaicCamera_RES ../resources/MosaicCamera.qrc) -QT5_ADD_RESOURCES(MosaicCamera_RES_RCC ${MosaicCamera_RES}) +IF (${QT_VERSION_MAJOR} EQUAL "5") + QT5_WRAP_UI(MosaicCamera_UIS_H ${MosaicCamera_UIS}) + QT5_ADD_RESOURCES(MosaicCamera_RES_CXX ${MosaicCamera_RES}) +ELSE() + QT_WRAP_UI(MosaicCamera_UIS_H ${MosaicCamera_UIS}) + QT_ADD_RESOURCES(MosaicCamera_RES_CXX ${MosaicCamera_RES}) +ENDIF() SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core @@ -30,15 +31,10 @@ SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Network ) -ADD_LIBRARY(MosaicCamera-static STATIC - ${MosaicCamera_SRCS} - ${MosaicCameraDialog_UIS_H} - ${MosaicCamera_RES_RCC} - gui/mosaicCameraDialog.ui -) - +ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCamera_RES_CXX} ${MosaicCamera_UIS_H}) +TARGET_LINK_LIBRARIES(MosaicCamera-static ${MosaicCamera_Qt_Libraries}) +# The library target "MosaicCamera-static" has a default OUTPUT_NAME of "MosaicCamera-static", so change it. SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES OUTPUT_NAME "MosaicCamera") -TARGET_LINK_LIBRARIES(MosaicCamera-static ${StelMain} ${MosaicCamera_Qt_Libraries}) SET_TARGET_PROPERTIES(MosaicCamera-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN") ADD_DEPENDENCIES(AllStaticPlugins MosaicCamera-static) From 2f8637e2dd38ca4bcc08465498fda5157dd56e5b Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sat, 14 Dec 2024 16:00:39 -0800 Subject: [PATCH 28/32] Remove redundant blank line --- plugins/MosaicCamera/src/MosaicCamera.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index bd67ae1b4380b..7a56d46d8040d 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -370,7 +370,6 @@ void MosaicCamera::draw(StelCore* core) double sinAlpha = sin(alpha); for (const auto& polygonSet : camera.polygon_sets) { - // Set color for this polygon set painter.setColor( polygonSet.color.redF(), From e617c3bb60518e2970afbed5054603e085044140 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Sat, 14 Dec 2024 16:05:35 -0800 Subject: [PATCH 29/32] Use space delimiter in mosaic TCP --- plugins/MosaicCamera/src/MosaicTcpServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.cpp b/plugins/MosaicCamera/src/MosaicTcpServer.cpp index 8e33bdf8e4d6e..1ee947ad0a6c0 100644 --- a/plugins/MosaicCamera/src/MosaicTcpServer.cpp +++ b/plugins/MosaicCamera/src/MosaicTcpServer.cpp @@ -31,7 +31,7 @@ void MosaicTcpServer::processClientData(QTcpSocket *client) QByteArray data = client->readAll(); QString message(data); - QStringList params = message.split(','); + QStringList params = message.split(' '); if (params.size() == 4) { bool ok1, ok2, ok3; QString name = params[0]; From 04461ab07e929688e044769b6818bd6530619474 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 17 Dec 2024 14:59:29 -0800 Subject: [PATCH 30/32] Add PROPERTYs to MosaicCamera --- plugins/MosaicCamera/src/MosaicCamera.cpp | 28 +++++++++++++++++++++++ plugins/MosaicCamera/src/MosaicCamera.hpp | 19 ++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 7a56d46d8040d..b8f91a0096fd9 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -347,6 +347,34 @@ void MosaicCamera::updateMosaic(const QString& cameraName, double ra, double dec setRotation(cameraName, rotation); } +void MosaicCamera::setCurrentCamera(const QString& cameraName) +{ + if (cameras.contains(cameraName)) + { + currentCamera = cameraName; + } +} + +void MosaicCamera::setRA(double ra) +{ + setRA(currentCamera, ra); +} + +void MosaicCamera::setDec(double dec) +{ + setDec(currentCamera, dec); +} + +void MosaicCamera::setRotation(double rotation) +{ + setRotation(currentCamera, rotation); +} + +void MosaicCamera::setVisibility(bool visible) +{ + setVisibility(currentCamera, visible); +} + void MosaicCamera::draw(StelCore* core) { const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index da7eab226440e..1498fbc850a71 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -49,6 +49,11 @@ struct Camera { class MosaicCamera : public StelModule { Q_OBJECT + Q_PROPERTY(QString currentCamera READ getCurrentCamera WRITE setCurrentCamera ) + Q_PROPERTY(double ra READ getRA WRITE setRA ) + Q_PROPERTY(double dec READ getDec WRITE setDec ) + Q_PROPERTY(double rotation READ getRotation WRITE setRotation ) + Q_PROPERTY(bool visible READ getVisibility WRITE setVisibility ) public: MosaicCamera(); @@ -70,6 +75,12 @@ class MosaicCamera : public StelModule double getRotation(const QString& cameraName) const; bool getVisibility(const QString& cameraName) const; + QString getCurrentCamera() const { return currentCamera; } + double getRA() const { return getRA(currentCamera); } + double getDec() const { return getDec(currentCamera); } + double getRotation() const { return getRotation(currentCamera); } + double getVisibility() const { return getVisibility(currentCamera); } + void loadSettings(); void saveSettings() const; @@ -78,14 +89,20 @@ class MosaicCamera : public StelModule public slots: void updateMosaic(const QString& cameraName, double ra, double dec, double rotation); + void setCurrentCamera(const QString& cameraName); + void setRA(double ra); + void setDec(double dec); + void setRotation(double rotation); + void setVisibility(bool visible); private: QHash cameras; QStringList cameraOrder; - QString currentCamera; QString userDirectory; QSettings* conf; + QString currentCamera; + void loadBuiltInCameras(); void loadCameraOrder(); void initializeUserData(); From 0eb4066259c2f5fb37324e575cc390a0706b6421 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 17 Dec 2024 15:06:11 -0800 Subject: [PATCH 31/32] Remove MosaicCamera TCP server --- plugins/MosaicCamera/src/CMakeLists.txt | 3 -- plugins/MosaicCamera/src/MosaicCamera.cpp | 7 --- plugins/MosaicCamera/src/MosaicCamera.hpp | 2 - plugins/MosaicCamera/src/MosaicTcpServer.cpp | 46 -------------------- plugins/MosaicCamera/src/MosaicTcpServer.hpp | 25 ----------- 5 files changed, 83 deletions(-) delete mode 100644 plugins/MosaicCamera/src/MosaicTcpServer.cpp delete mode 100644 plugins/MosaicCamera/src/MosaicTcpServer.hpp diff --git a/plugins/MosaicCamera/src/CMakeLists.txt b/plugins/MosaicCamera/src/CMakeLists.txt index 29f1bd78f896e..4b6479042bde5 100644 --- a/plugins/MosaicCamera/src/CMakeLists.txt +++ b/plugins/MosaicCamera/src/CMakeLists.txt @@ -4,8 +4,6 @@ LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/src) SET(MosaicCamera_SRCS MosaicCamera.hpp MosaicCamera.cpp - MosaicTcpServer.hpp - MosaicTcpServer.cpp gui/MosaicCameraDialog.hpp gui/MosaicCameraDialog.cpp ) @@ -28,7 +26,6 @@ SET(MosaicCamera_Qt_Libraries Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets - Qt${QT_VERSION_MAJOR}::Network ) ADD_LIBRARY(MosaicCamera-static STATIC ${MosaicCamera_SRCS} ${MosaicCamera_RES_CXX} ${MosaicCamera_UIS_H}) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index b8f91a0096fd9..2f08ffd487e79 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -24,7 +24,6 @@ #include "StelModuleMgr.hpp" #include "MosaicCamera.hpp" #include "MosaicCameraDialog.hpp" -#include "MosaicTcpServer.hpp" #include "StelUtils.hpp" #include "StelPainter.hpp" #include "CustomObject.hpp" @@ -66,7 +65,6 @@ MosaicCamera::MosaicCamera() { setObjectName("MosaicCamera"); configDialog = new MosaicCameraDialog(); - tcpServer = new MosaicTcpServer(); conf = StelApp::getInstance().getSettings(); } @@ -76,7 +74,6 @@ MosaicCamera::MosaicCamera() MosaicCamera::~MosaicCamera() { delete configDialog; - delete tcpServer; } void MosaicCamera::loadSettings() @@ -129,10 +126,6 @@ void MosaicCamera::init() initializeUserData(); - qDebug() << "[MosaicCamera] Starting TCP server"; - tcpServer->startServer(5772); - connect(tcpServer, &MosaicTcpServer::newValuesReceived, this, &MosaicCamera::updateMosaic); - qDebug() << "[MosaicCamera] Loading built-in cameras"; loadBuiltInCameras(); diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index 1498fbc850a71..cbe61aa4b94d9 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -19,7 +19,6 @@ #ifndef MOSAICCAMERA_HPP #define MOSAICCAMERA_HPP -#include "MosaicTcpServer.hpp" #include "StelModule.hpp" #include "StelPluginInterface.hpp" #include @@ -109,7 +108,6 @@ public slots: void copyResourcesToUserDirectory(); MosaicCameraDialog* configDialog; - MosaicTcpServer* tcpServer; }; class MosaicCameraStelPluginInterface : public QObject, public StelPluginInterface diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.cpp b/plugins/MosaicCamera/src/MosaicTcpServer.cpp deleted file mode 100644 index 1ee947ad0a6c0..0000000000000 --- a/plugins/MosaicCamera/src/MosaicTcpServer.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "MosaicTcpServer.hpp" -#include -#include - -MosaicTcpServer::MosaicTcpServer(QObject *parent) : QTcpServer(parent) -{ - connect(this, &MosaicTcpServer::newConnection, this, &MosaicTcpServer::onNewConnection); -} - -void MosaicTcpServer::startServer(quint16 port) -{ - if (!this->listen(QHostAddress::Any, port)) { - qDebug() << "[MosaicCamera] Server failed to start: " << this->errorString(); - } else { - qDebug() << "[MosaicCamera] Server started on port" << port; - } -} - -void MosaicTcpServer::onNewConnection() -{ - QTcpSocket *client = this->nextPendingConnection(); - connect(client, &QTcpSocket::readyRead, this, [this, client]() { - processClientData(client); - }); - - connect(client, &QTcpSocket::disconnected, client, &QTcpSocket::deleteLater); -} - -void MosaicTcpServer::processClientData(QTcpSocket *client) -{ - QByteArray data = client->readAll(); - QString message(data); - - QStringList params = message.split(' '); - if (params.size() == 4) { - bool ok1, ok2, ok3; - QString name = params[0]; - double ra = params[1].toDouble(&ok1); - double dec = params[2].toDouble(&ok2); - double rot = params[3].toDouble(&ok3); - - if (ok1 && ok2 && ok3) { - emit newValuesReceived(name, ra, dec, rot); - } - } -} diff --git a/plugins/MosaicCamera/src/MosaicTcpServer.hpp b/plugins/MosaicCamera/src/MosaicTcpServer.hpp deleted file mode 100644 index 3bf7fc39db861..0000000000000 --- a/plugins/MosaicCamera/src/MosaicTcpServer.hpp +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef MOSAICTCPSERVER_HPP -#define MOSAICTCPSERVER_HPP - -#include -#include - -class MosaicTcpServer : public QTcpServer -{ - Q_OBJECT - -public: - explicit MosaicTcpServer(QObject *parent = nullptr); - void startServer(quint16 port); - -signals: - void newValuesReceived(QString name, double ra, double dec, double rot); - -private slots: - void onNewConnection(); - -private: - void processClientData(QTcpSocket *client); -}; - -#endif // MOSAICTCPSERVER_HPP From aa589cb334cbe9a7daa12ba029021e9ee99b9739 Mon Sep 17 00:00:00 2001 From: Josh Meyers Date: Tue, 17 Dec 2024 15:11:52 -0800 Subject: [PATCH 32/32] Remove MosaicCamera::updateMosaic --- plugins/MosaicCamera/src/MosaicCamera.cpp | 8 -------- plugins/MosaicCamera/src/MosaicCamera.hpp | 1 - 2 files changed, 9 deletions(-) diff --git a/plugins/MosaicCamera/src/MosaicCamera.cpp b/plugins/MosaicCamera/src/MosaicCamera.cpp index 2f08ffd487e79..fb0b8145f511f 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.cpp +++ b/plugins/MosaicCamera/src/MosaicCamera.cpp @@ -332,14 +332,6 @@ bool MosaicCamera::getVisibility(const QString& cameraName) const return cameras.value(cameraName).visible; } -void MosaicCamera::updateMosaic(const QString& cameraName, double ra, double dec, double rotation) -{ - qDebug() << "Received new values for" << cameraName << ": RA=" << ra << ", Dec=" << dec << ", Rotation=" << rotation; - setRA(cameraName, ra); - setDec(cameraName, dec); - setRotation(cameraName, rotation); -} - void MosaicCamera::setCurrentCamera(const QString& cameraName) { if (cameras.contains(cameraName)) diff --git a/plugins/MosaicCamera/src/MosaicCamera.hpp b/plugins/MosaicCamera/src/MosaicCamera.hpp index cbe61aa4b94d9..09d1b344b03b8 100644 --- a/plugins/MosaicCamera/src/MosaicCamera.hpp +++ b/plugins/MosaicCamera/src/MosaicCamera.hpp @@ -87,7 +87,6 @@ class MosaicCamera : public StelModule void readPolygonSetsFromJson(const QString& cameraName, const QString& filename); public slots: - void updateMosaic(const QString& cameraName, double ra, double dec, double rotation); void setCurrentCamera(const QString& cameraName); void setRA(double ra); void setDec(double dec);