OBJ- C Raycasting удалить Fi sh глаз - PullRequest
0 голосов
/ 30 апреля 2020

Я какое-то время пытался убрать 'глазной эффект' 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;
}
...