Когда делаешь тень/видимость нужно думать от обратного, надо строить не многоугольник видимости, а четырехугольники невидимости, сложность твоих расчетов уменьшится до О(n), никаких рейкастов, никаких сортировок, просто по информации о сегментах составляешь большую мешку из экстраполированных отрезков в бесконечность и красишь, не закрашенная область и будет областью видимости
Когда делаешь тень/видимость нужно думать от обратного, надо строить не многоугольник видимости, а четырехугольники невидимости, сложность твоих расчетов уменьшится до О(n), никаких рейкастов, никаких сортировок, просто по информации о сегментах составляешь большую мешку из экстраполированных отрезков в бесконечность и красишь, не закрашенная область и будет областью видимости