mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-12-29 19:40:35 +00:00
fixed calc_relative_matrix for syntetic sphere
This commit is contained in:
parent
d5175882f6
commit
7ea60c60d8
@ -55,7 +55,7 @@ namespace gp { extern gp::local_info draw_li; }
|
|||||||
|
|
||||||
transmatrix calc_relative_matrix(cell *c2, cell *c1, const hyperpoint& point_hint) {
|
transmatrix calc_relative_matrix(cell *c2, cell *c1, const hyperpoint& point_hint) {
|
||||||
|
|
||||||
if(sphere) {
|
if(stdsphere) {
|
||||||
if(!gmatrix0.count(c2) || !gmatrix0.count(c1)) {
|
if(!gmatrix0.count(c2) || !gmatrix0.count(c1)) {
|
||||||
printf("building gmatrix0 (size=%d)\n", isize(gmatrix0));
|
printf("building gmatrix0 (size=%d)\n", isize(gmatrix0));
|
||||||
auto bak = gp::draw_li;
|
auto bak = gp::draw_li;
|
||||||
|
53
polygons.cpp
53
polygons.cpp
@ -1429,7 +1429,7 @@ void bshape(hpcshape& sh, int p, double shzoom, int shapeid, double bonus = 0, f
|
|||||||
while(polydata[whereis + 2*qty] != NEWSHAPE) qty++;
|
while(polydata[whereis + 2*qty] != NEWSHAPE) qty++;
|
||||||
double shzoomx = shzoom;
|
double shzoomx = shzoom;
|
||||||
double shzoomy = shzoom;
|
double shzoomy = shzoom;
|
||||||
if(shzoom == WOLF) shzoomx = 1.5 * (nonbitrunc ? crossf / hcrossf : 1), shzoomy = 1.6 * (nonbitrunc ? crossf / hcrossf : 1);
|
if(shzoom == WOLF) shzoomx = 1.5 * (nonbitrunc && !syntetic ? crossf / hcrossf : 1), shzoomy = 1.6 * (nonbitrunc && !syntetic ? crossf / hcrossf : 1);
|
||||||
int rots2 = rots;
|
int rots2 = rots;
|
||||||
// shapes 368..370 are specially designed
|
// shapes 368..370 are specially designed
|
||||||
if(!(shapeid >= 368 && shapeid <= 370)) {
|
if(!(shapeid >= 368 && shapeid <= 370)) {
|
||||||
@ -1561,6 +1561,8 @@ void buildpolys() {
|
|||||||
// scales
|
// scales
|
||||||
scalef = nonbitrunc ? crossf / hcrossf7 : hcrossf / hcrossf7;
|
scalef = nonbitrunc ? crossf / hcrossf7 : hcrossf / hcrossf7;
|
||||||
|
|
||||||
|
ld xcrossf = crossf;
|
||||||
|
|
||||||
if(euclid) scalef *= .52/crossf;
|
if(euclid) scalef *= .52/crossf;
|
||||||
|
|
||||||
double spzoom6 = sphere ? 1.2375 : 1;
|
double spzoom6 = sphere ? 1.2375 : 1;
|
||||||
@ -1626,6 +1628,14 @@ void buildpolys() {
|
|||||||
floorrad1 = rhexf * .8;
|
floorrad1 = rhexf * .8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(syntetic) {
|
||||||
|
triangleside = synt::edgelength;
|
||||||
|
goldbf = 1;
|
||||||
|
scalef = synt::edgelength / hcrossf7;
|
||||||
|
floorrad0 = floorrad1 = triangleside * .45;
|
||||||
|
xcrossf = synt::edgelength * .4;
|
||||||
|
}
|
||||||
|
|
||||||
// sidewall parameters for the 3D mode
|
// sidewall parameters for the 3D mode
|
||||||
for(int k=0; k<SIDEPARS; k++) {
|
for(int k=0; k<SIDEPARS; k++) {
|
||||||
double dlow=1, dhi=1;
|
double dlow=1, dhi=1;
|
||||||
@ -1773,7 +1783,7 @@ void buildpolys() {
|
|||||||
hpcpush(ddi(t*S28, zhexf*.5) * C0);
|
hpcpush(ddi(t*S28, zhexf*.5) * C0);
|
||||||
}
|
}
|
||||||
|
|
||||||
double disksize = crossf;
|
double disksize = xcrossf;
|
||||||
if(nonbitrunc && a38) disksize *= 2;
|
if(nonbitrunc && a38) disksize *= 2;
|
||||||
else if(a38) disksize *= 1.5;
|
else if(a38) disksize *= 1.5;
|
||||||
else if(nonbitrunc && S6 == 8) disksize *= 1.5;
|
else if(nonbitrunc && S6 == 8) disksize *= 1.5;
|
||||||
@ -1907,23 +1917,23 @@ void buildpolys() {
|
|||||||
|
|
||||||
bshape(shCompass1, PPR_ITEM);
|
bshape(shCompass1, PPR_ITEM);
|
||||||
RING(i)
|
RING(i)
|
||||||
hpcpush(ddi(i, crossf * .35) * C0);
|
hpcpush(ddi(i, xcrossf * .35) * C0);
|
||||||
|
|
||||||
bshape(shCompass2, PPR_ITEMa);
|
bshape(shCompass2, PPR_ITEMa);
|
||||||
RING(i)
|
RING(i)
|
||||||
hpcpush(ddi(i, crossf * .3) * C0);
|
hpcpush(ddi(i, xcrossf * .3) * C0);
|
||||||
|
|
||||||
bshape(shCompass3, PPR_ITEMb);
|
bshape(shCompass3, PPR_ITEMb);
|
||||||
hpcpush(ddi(0, crossf * .29) * C0);
|
hpcpush(ddi(0, xcrossf * .29) * C0);
|
||||||
hpcpush(ddi(S21, crossf * .04) * C0);
|
hpcpush(ddi(S21, xcrossf * .04) * C0);
|
||||||
hpcpush(ddi(-S21, crossf * .04) * C0);
|
hpcpush(ddi(-S21, xcrossf * .04) * C0);
|
||||||
hpcpush(ddi(0, crossf * .29) * C0);
|
hpcpush(ddi(0, xcrossf * .29) * C0);
|
||||||
|
|
||||||
/* bshape(shBranch, 32);
|
/* bshape(shBranch, 32);
|
||||||
hpcpush(ddi(21, crossf/5) * C0);
|
hpcpush(ddi(21, xcrossf/5) * C0);
|
||||||
hpcpush(ddi(21, -crossf/5) * C0);
|
hpcpush(ddi(21, -xcrossf/5) * C0);
|
||||||
hpcpush(ddi(21, -crossf/5) * ddi(0, crossf) * C0);
|
hpcpush(ddi(21, -xcrossf/5) * ddi(0, xcrossf) * C0);
|
||||||
hpcpush(ddi(21, crossf/5) * ddi(0, crossf) * C0); */
|
hpcpush(ddi(21, xcrossf/5) * ddi(0, xcrossf) * C0); */
|
||||||
|
|
||||||
bshape(shILeaf[0], PPR_ONTENTACLE);
|
bshape(shILeaf[0], PPR_ONTENTACLE);
|
||||||
for(int t=0; t<=S6; t++) {
|
for(int t=0; t<=S6; t++) {
|
||||||
@ -1945,11 +1955,11 @@ void buildpolys() {
|
|||||||
|
|
||||||
bshape(shSlime, 33);
|
bshape(shSlime, 33);
|
||||||
PRING(i)
|
PRING(i)
|
||||||
hpcpush(ddi(i, crossf * (0.7 + .2 * sin(i * M_PI * 2 / S84 * 9))) * C0);
|
hpcpush(ddi(i, xcrossf * (0.7 + .2 * sin(i * M_PI * 2 / S84 * 9))) * C0);
|
||||||
|
|
||||||
bshape(shJelly, 33);
|
bshape(shJelly, 33);
|
||||||
PRING(i)
|
PRING(i)
|
||||||
hpcpush(ddi(i, crossf * (0.4 + .03 * sin(i * M_PI * 2 / S84 * 7))) * C0);
|
hpcpush(ddi(i, xcrossf * (0.4 + .03 * sin(i * M_PI * 2 / S84 * 7))) * C0);
|
||||||
|
|
||||||
bshape(shHeptaMarker, PPR_HEPTAMARK);
|
bshape(shHeptaMarker, PPR_HEPTAMARK);
|
||||||
for(int t=0; t<=S7; t++) hpcpush(ddi(t*S12, zhexf*.2) * C0);
|
for(int t=0; t<=S7; t++) hpcpush(ddi(t*S12, zhexf*.2) * C0);
|
||||||
@ -1959,11 +1969,11 @@ void buildpolys() {
|
|||||||
|
|
||||||
bshape(shRose, PPR_ITEM);
|
bshape(shRose, PPR_ITEM);
|
||||||
PRING(t)
|
PRING(t)
|
||||||
hpcpush(spin(M_PI * t / (S42+.0)) * xpush(crossf * (0.2 + .15 * sin(M_PI * t / (S42+.0) * 3))) * C0);
|
hpcpush(spin(M_PI * t / (S42+.0)) * xpush(xcrossf * (0.2 + .15 * sin(M_PI * t / (S42+.0) * 3))) * C0);
|
||||||
|
|
||||||
bshape(shThorns, PPR_THORNS);
|
bshape(shThorns, PPR_THORNS);
|
||||||
for(int t=0; t<=60; t++)
|
for(int t=0; t<=60; t++)
|
||||||
hpcpush(spin(M_PI * t / 30.0) * xpush(crossf * ((t&1) ? 0.3 : 0.6)) * C0);
|
hpcpush(spin(M_PI * t / 30.0) * xpush(xcrossf * ((t&1) ? 0.3 : 0.6)) * C0);
|
||||||
|
|
||||||
for(int i=0; i<16; i++) {
|
for(int i=0; i<16; i++) {
|
||||||
bshape(shParticle[i], PPR_PARTICLE);
|
bshape(shParticle[i], PPR_PARTICLE);
|
||||||
@ -1980,6 +1990,9 @@ void buildpolys() {
|
|||||||
if(a46 && !nonbitrunc) spzoom6 *= .9;
|
if(a46 && !nonbitrunc) spzoom6 *= .9;
|
||||||
if(a47 && !nonbitrunc) spzoom6 *= .85;
|
if(a47 && !nonbitrunc) spzoom6 *= .85;
|
||||||
|
|
||||||
|
if(syntetic)
|
||||||
|
shFullFloor.configure(synt::edgelength/2, synt::edgelength/2);
|
||||||
|
else
|
||||||
shFullFloor.configure(hexvdist, rhexf);
|
shFullFloor.configure(hexvdist, rhexf);
|
||||||
shFloor.configure(floorrad0, floorrad1);
|
shFloor.configure(floorrad0, floorrad1);
|
||||||
shMFloor.configure(floorrad0*7/8, floorrad1*7/8);
|
shMFloor.configure(floorrad0*7/8, floorrad1*7/8);
|
||||||
@ -1987,7 +2000,7 @@ void buildpolys() {
|
|||||||
shMFloor3.configure(floorrad0*5/8, floorrad1*5/8);
|
shMFloor3.configure(floorrad0*5/8, floorrad1*5/8);
|
||||||
shMFloor4.configure(floorrad0*4/8, floorrad1*4/8);
|
shMFloor4.configure(floorrad0*4/8, floorrad1*4/8);
|
||||||
shBigTriangle.configure(triangleside, 0); shBigTriangle.prio = PPR_FLOOR_TOWER;
|
shBigTriangle.configure(triangleside, 0); shBigTriangle.prio = PPR_FLOOR_TOWER;
|
||||||
shBigHepta.configure(0, (nonbitrunc ? tessf : crossf) * .97);
|
shBigHepta.configure(0, (nonbitrunc ? tessf : xcrossf) * .97);
|
||||||
shTriheptaFloor.configure(trihepta0, trihepta1);
|
shTriheptaFloor.configure(trihepta0, trihepta1);
|
||||||
shDragonFloor.prio = PPR_FLOOR_DRAGON;
|
shDragonFloor.prio = PPR_FLOOR_DRAGON;
|
||||||
shPowerFloor.prio = PPR_FLOOR_DRAGON;
|
shPowerFloor.prio = PPR_FLOOR_DRAGON;
|
||||||
@ -2070,11 +2083,11 @@ void buildpolys() {
|
|||||||
|
|
||||||
// first layer monsters
|
// first layer monsters
|
||||||
bshape(shTentacleX, PPR_TENTACLE0);
|
bshape(shTentacleX, PPR_TENTACLE0);
|
||||||
drawTentacle(shTentacleX, crossf * .25, crossf * .1, 10);
|
drawTentacle(shTentacleX, xcrossf * .25, xcrossf * .1, 10);
|
||||||
bshape(shIBranch, PPR_TENTACLE1);
|
bshape(shIBranch, PPR_TENTACLE1);
|
||||||
drawTentacle(shIBranch, crossf * .1, crossf * .2, 5);
|
drawTentacle(shIBranch, xcrossf * .1, xcrossf * .2, 5);
|
||||||
bshape(shTentacle, PPR_TENTACLE1);
|
bshape(shTentacle, PPR_TENTACLE1);
|
||||||
drawTentacle(shTentacle, crossf * .2, crossf * .1, 10);
|
drawTentacle(shTentacle, xcrossf * .2, xcrossf * .1, 10);
|
||||||
copyshape(shJoint, shDisk, PPR_ONTENTACLE);
|
copyshape(shJoint, shDisk, PPR_ONTENTACLE);
|
||||||
bshape(shTentHead, PPR_ONTENTACLE, scalef, 79);
|
bshape(shTentHead, PPR_ONTENTACLE, scalef, 79);
|
||||||
bshape(shWormHead, PPR_ONTENTACLE, scalef, 80);
|
bshape(shWormHead, PPR_ONTENTACLE, scalef, 80);
|
||||||
|
Loading…
Reference in New Issue
Block a user