mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-05-15 21:54:07 +00:00
finish_apeirogon now works with ultra-ideal center
This commit is contained in:
parent
575fd136d7
commit
8e3c5d367c
@ -355,7 +355,19 @@ void geometry_information::finish_apeirogon(hyperpoint center) {
|
|||||||
last->she = isize(hpc);
|
last->she = isize(hpc);
|
||||||
hyperpoint b = hpc.back();
|
hyperpoint b = hpc.back();
|
||||||
for(int i=1; i<15; i++) hpcpush(towards_inf(b, center, i));
|
for(int i=1; i<15; i++) hpcpush(towards_inf(b, center, i));
|
||||||
hpcpush(normalize(1e-9 * C0 + center));
|
hyperpoint h = 1e-9 * C0 + center;
|
||||||
|
if(material(h) > 0)
|
||||||
|
hpcpush(normalize(h));
|
||||||
|
else {
|
||||||
|
ld left = -atan2(towards_inf(b, center, 15));
|
||||||
|
ld right = -atan2(towards_inf(hpc[last->s], center, 15));
|
||||||
|
if(right > left + 180*degree) right -= 360*degree;
|
||||||
|
if(right < left - 180*degree) right += 360*degree;
|
||||||
|
hyperpoint l1 = towards_inf(b, center, 15); l1 /= l1[2];
|
||||||
|
hyperpoint l2 = xspinpush0(left, 15); l2 /= l2[2];
|
||||||
|
/* call hpc.push_back directly to avoid adding points */
|
||||||
|
for(int i=0; i<=10; i++) hpc.push_back(xspinpush0(lerp(left, right, i/10.), 15));
|
||||||
|
}
|
||||||
for(int i=15; i>=1; i--) hpcpush(towards_inf(hpc[last->s], center, i));
|
for(int i=15; i>=1; i--) hpcpush(towards_inf(hpc[last->s], center, i));
|
||||||
hpcpush(hpc[last->s]);
|
hpcpush(hpc[last->s]);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user