Я какое-то время пытался убрать 'глазной эффект' fi sh из моего raycaster, но у меня ничего не получалось, функция, которую я первоначально написал в javascript, использует функцию, которая не работает в объекте. c. Если кто-то может помочь, было бы неплохо, я думаю, что это как-то связано со строкой
hypotf((pp1.x-cross.x)*cosf(Angle),(pp1.y-cross.y)*sinf(Angle));
-(NSArray*)PBDrawmap{
float res = 100;
float fov = 70;
float renderDistance = 100;
float step = fov / res;
NSMutableArray *data = [NSMutableArray array];
for (int i =0;i< res;i++) {
float Angle = ((step * i)+rot)*( pi / 180);
float x = px + (renderDistance * cosf(Angle));
float y = py + (renderDistance * sinf(Angle));
float low = 100;
NSColor *plainColor = [NSColor whiteColor];
NSPoint pp1 = NSPointFromCGPoint(CGPointMake(px, py));
NSPoint pp2 = NSPointFromCGPoint(CGPointMake(x , y ));
for (int y = 0; y<map.count; y+=3) {
NSPoint p1 = NSPointFromString([map objectAtIndex:y ]);
NSPoint p2 = NSPointFromString([map objectAtIndex:y+1]);
NSPoint cross = [self line:p1 end:p2 with:pp1 end:pp2];
float dist = hypotf((pp1.x-cross.x)*cosf(Angle),
(pp1.y-cross.y)*sinf(Angle));
if(cross.x==0&&cross.y==0){
dist = 101;
}
if(dist < low && dist > 5){
low = dist;
plainColor = [self ColorFromHex:[map objectAtIndex:y+2] distance:dist*2];
//NSLog(@"->%@",[map objectAtIndex:y+2]);
}
}
[data addObject:[NSNumber numberWithFloat:low]];
[data addObject:plainColor];
}
return data;
}