mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	finish_apeirogon now works with ultra-ideal center
This commit is contained in:
		| @@ -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]); | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue