mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-06-22 16:24:07 +00:00
atscreenpos(x,y) now returns the pixel-based matrix
This commit is contained in:
parent
5575608b76
commit
cd21ec8900
22
hypgraph.cpp
22
hypgraph.cpp
@ -2563,27 +2563,27 @@ struct flat_model_enabler {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EX transmatrix atscreenpos(ld x, ld y, ld size) {
|
EX transmatrix atscreenpos(ld x, ld y) {
|
||||||
transmatrix V = Id;
|
transmatrix V = Id;
|
||||||
|
|
||||||
if(pmodel == mdPixel) {
|
if(pmodel == mdPixel) {
|
||||||
V[0][3] += (x - current_display->xcenter);
|
V[0][3] += (x - current_display->xcenter);
|
||||||
V[1][3] += (y - current_display->ycenter);
|
V[1][3] += (y - current_display->ycenter);
|
||||||
V[0][0] = size * 2 * cgi.hcrossf / cgi.crossf;
|
V[0][0] = 1;
|
||||||
V[1][1] = size * 2 * cgi.hcrossf / cgi.crossf;
|
V[1][1] = 1;
|
||||||
if(WDIM == 3) V[2][2] = -1;
|
if(WDIM == 3) V[2][2] = -1;
|
||||||
}
|
}
|
||||||
else if(pmodel == mdHorocyclic) {
|
else if(pmodel == mdHorocyclic) {
|
||||||
V[0][3] += (x - current_display->xcenter) * 2 / current_display->radius;
|
V[0][3] += (x - current_display->xcenter) * 2 / current_display->radius;
|
||||||
V[1][3] += (y - current_display->ycenter) * 2/ current_display->radius;
|
V[1][3] += (y - current_display->ycenter) * 2/ current_display->radius;
|
||||||
V[0][0] = size * 2 / current_display->radius;
|
V[0][0] = 1;
|
||||||
V[1][1] = size * 2 / current_display->radius;
|
V[1][1] = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
V[0][2] += (x - current_display->xcenter);
|
V[0][2] += (x - current_display->xcenter);
|
||||||
V[1][2] += (y - current_display->ycenter);
|
V[1][2] += (y - current_display->ycenter);
|
||||||
V[0][0] = size * 2 * cgi.hcrossf / cgi.crossf;
|
V[0][0] = 1;
|
||||||
V[1][1] = size * 2 * cgi.hcrossf / cgi.crossf;
|
V[1][1] = 1;
|
||||||
V[2][2] = current_display->radius;
|
V[2][2] = current_display->radius;
|
||||||
if(S3 >= OINF) V[0][0] /= 5, V[1][1] /= 5;
|
if(S3 >= OINF) V[0][0] /= 5, V[1][1] /= 5;
|
||||||
}
|
}
|
||||||
@ -2591,6 +2591,14 @@ EX transmatrix atscreenpos(ld x, ld y, ld size) {
|
|||||||
return V;
|
return V;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX transmatrix atscreenpos(ld x, ld y, ld size) {
|
||||||
|
transmatrix V = atscreenpos(x, y);
|
||||||
|
ld s = size * 2 * cgi.hcrossf / cgi.crossf;
|
||||||
|
V[0][0] *= s;
|
||||||
|
V[1][1] *= s;
|
||||||
|
return V;
|
||||||
|
}
|
||||||
|
|
||||||
void circle_around_center(ld radius, color_t linecol, color_t fillcol, PPR prio) {
|
void circle_around_center(ld radius, color_t linecol, color_t fillcol, PPR prio) {
|
||||||
#if CAP_QUEUE
|
#if CAP_QUEUE
|
||||||
if(among(pmodel, mdDisk, mdEquiarea, mdEquidistant, mdFisheye, mdFisheye2) && !(pmodel == mdDisk && hyperbolic && pconf.alpha <= -1) && models::camera_straight) {
|
if(among(pmodel, mdDisk, mdEquiarea, mdEquidistant, mdFisheye, mdFisheye2) && !(pmodel == mdDisk && hyperbolic && pconf.alpha <= -1) && models::camera_straight) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user