Build Packages / Unit tests (push) Skipped
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m47s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8) (push) Successful in 11m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m59s
Build Packages / Generate python client (push) Successful in 35s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m48s
Build Packages / build:rpm (rocky9) (push) Successful in 12m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m24s
Build Packages / XDS test (durin plugin) (push) Successful in 7m35s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m40s
Build Packages / DIALS test (push) Successful in 11m19s
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144. * jfjoch_broker: Improve azimuthal integration (add <I^2> calculation) * jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated) * jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin Reviewed-on: #58
64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#pragma once
|
|
|
|
#include <ostream>
|
|
#include <vector>
|
|
|
|
class Coord {
|
|
public:
|
|
float x,y,z;
|
|
Coord();
|
|
Coord(const float in[3]);
|
|
Coord(float x, float y, float z);
|
|
void swap(Coord& other) noexcept;
|
|
|
|
Coord operator+(const Coord &in) const;
|
|
Coord operator-(const Coord &in) const;
|
|
Coord operator*(float in) const;
|
|
Coord operator/(float in) const;
|
|
Coord operator-() const;
|
|
|
|
Coord& operator+=(const Coord &in);
|
|
Coord& operator-=(const Coord &in);
|
|
Coord& operator*=(float in);
|
|
Coord& operator/=(float in);
|
|
|
|
bool operator==(const Coord &other) const;
|
|
|
|
Coord operator%(const Coord &in) const; // Cross product
|
|
float operator*(const Coord &in) const; // Dot product
|
|
|
|
const float& operator[](int64_t val) const;
|
|
float& operator[](int64_t val);
|
|
|
|
float Length() const;
|
|
Coord Normalize() const;
|
|
|
|
friend std::ostream &operator<<( std::ostream &output, const Coord &in );
|
|
};
|
|
|
|
Coord operator*(float in1, const Coord& in2);
|
|
inline void swap(Coord& a, Coord& b) noexcept;
|
|
|
|
float angle_deg(const Coord &in1, const Coord &in2);
|
|
|
|
class RotMatrix {
|
|
float v[3][3];
|
|
public:
|
|
RotMatrix();
|
|
RotMatrix(float alpha, const Coord &dir);
|
|
Coord operator*(const Coord &in) const;
|
|
RotMatrix operator*(const RotMatrix &other) const;
|
|
|
|
RotMatrix invert() const;
|
|
RotMatrix transpose() const;
|
|
RotMatrix operator!() const;
|
|
std::vector<float> arr() const;
|
|
};
|
|
|
|
inline void swap(Coord& a, Coord& b) noexcept {
|
|
a.swap(b);
|
|
}
|