W rzeczywistości normalne podejście do śledzenia i nawijania promieni działa dobrze na powierzchni kuli, z niewielką regulacją.
Na powierzchni kuli "linia prosta" to wielkie koło, a odległości są mierzone w jednostkach kątowych, a nie w metrach lub calach. Aby narysować promień z dowolnego punktu na powierzchni kuli, po prostu uformuj wielki okrąg przez ten arbitralny punkt i dowolny inny punkt na powierzchni kuli. Aby zachować czystość matematyczną, wybierz drugi punkt o wartości pi/2 od miejsca, którego testujesz. Zastosuj zwykłą regułę parzystą-nieparzystą do wielkiego koła i wielokąta testowego.
Zasada zwijania przekłada się również bezpośrednio z linii prostych w płaszczyźnie na (segmenty) wielkich okręgów na kuli.
Wszystko, czego potrzebujesz teraz, to implementacje Java podstawowych operacji geometrii sferycznej. Nie mam żadnych zaleceń na ten temat, ale myślę, że Internet pomoże. Na matematykę zacznij od Mathworld.
Innym podejściem byłoby rzutowanie punktów i wielokątów z powierzchni kuli na płaszczyznę - jak to przewidują mapy - na topologiczny związek niewinności nie będzie miała wpływu taka transformacja.
Aha, i musisz zdecydować, co zrobić, jeśli wielokąt opisuje wielki krąg
Twoje pytanie nie jest bardzo jasne: wielokąty nie może być zakrzywiona (z definicji), więc jesteś zamiast pytać, jak ustalić czy punkt znajduje się na powierzchni kuli? To naprawdę proste: jest na powierzchni, jeśli odległość do środka kuli == promień kuli. –
Wierzę, że ma na myśli, że jeśli wykonasz serię punktów na kuli i skonstruujesz zamknięty kształt między nimi. Lepsze punkty dotyczące łączenia punktów wielokątów w krawędzie wydają się niejednoznaczne (można je połączyć bezpośrednio, a następnie rzutować na kulę, może?) – Akusete
prawda, wielokąt w moim świecie to seria punktów na kuli i konstruuję zamknięty kształt między nimi – richard