mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-09 15:39:55 +00:00
fixup to last
This commit is contained in:
parent
0d85a6943f
commit
228bc345ed
@ -174,6 +174,8 @@ inline shiftpoint shiftless(const hyperpoint& h, ld shift = 0) {
|
|||||||
struct shiftmatrix {
|
struct shiftmatrix {
|
||||||
transmatrix T;
|
transmatrix T;
|
||||||
ld shift;
|
ld shift;
|
||||||
|
shiftmatrix() {}
|
||||||
|
shiftmatrix(const transmatrix& _h, ld _shift) : T(_h), shift(_shift) {}
|
||||||
hyperpoint& operator [] (int i) { return T[i]; }
|
hyperpoint& operator [] (int i) { return T[i]; }
|
||||||
const hyperpoint& operator [] (int i) const { return T[i]; }
|
const hyperpoint& operator [] (int i) const { return T[i]; }
|
||||||
inline friend shiftpoint operator * (const shiftmatrix& T, const hyperpoint& h) {
|
inline friend shiftpoint operator * (const shiftmatrix& T, const hyperpoint& h) {
|
||||||
|
@ -2622,6 +2622,34 @@ EX namespace twist {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void queueline_correct(shiftpoint h1, shiftpoint h2, color_t col, int prec, PPR prio) {
|
||||||
|
|
||||||
|
optimize_shift(h1);
|
||||||
|
optimize_shift(h2);
|
||||||
|
|
||||||
|
shiftmatrix T(rgpushxto0(h1.h), h1.shift);
|
||||||
|
|
||||||
|
shiftpoint h = nmul(rots::ninverse(T), h2);
|
||||||
|
|
||||||
|
hyperpoint z = inverse_exp(h);
|
||||||
|
|
||||||
|
ld bonus = 0;
|
||||||
|
|
||||||
|
int steps = ceil(hypot_d(3, z) * pow(2, prec));
|
||||||
|
|
||||||
|
for(int i=0; i<=steps; i++) {
|
||||||
|
shiftpoint next = formula_exp(z * i / steps);
|
||||||
|
curvepoint(unshift(next, bonus));
|
||||||
|
if(abs(next.shift - bonus) > 1) {
|
||||||
|
queuecurve(T, col, 0, prio);
|
||||||
|
bonus = next.shift; T.shift = h1.shift + bonus;
|
||||||
|
curvepoint(unshift(next, bonus));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
queuecurve(T, col, 0, prio);
|
||||||
|
}
|
||||||
|
|
||||||
/** @brief exponential function for both slr and Berger sphere */
|
/** @brief exponential function for both slr and Berger sphere */
|
||||||
|
|
||||||
EX shiftpoint formula_exp(hyperpoint vel) {
|
EX shiftpoint formula_exp(hyperpoint vel) {
|
||||||
|
Loading…
Reference in New Issue
Block a user