2013-03-14 11 views
6

Jest to bardzo ważne pytanie iOS, ponieważ jest to moja aktualna niezdolność do geometrii współrzędnych. Biorąc pod uwagę punkt CG, który działa jako punkt, przez który przechodzi linia i kąt w radianach. Jak narysować linię, która rozciąga się do granic ekranu (nieskończona linia)?Jak narysować linię, biorąc pod uwagę punkt środkowy i kąt w iOS?

Do tego celu używam Quartz2d, ​​a interfejs API do tworzenia linii jest ograniczony do dwóch punktów jako danych wejściowych. Jak więc przekonwertować punkt i kąt na dwa punkty na granicach urządzenia iOS?

+0

http://stackoverflow.com/a/1571429/1311910 – 7usam

Odpowiedz

8

Zaczyna się to od prostej trygonometrii. Musisz obliczyć współrzędne x i y drugiego punktu. Z pochodzenia 0,0 i leczenia linię, która idzie prosto na prawo jako 0 stopni, a idąc w kierunku przeciwnym do ruchu wskazówek zegara (anty-dla niektórych z was), zrobić:

double angle = ... // angle in radians 
double newX = cos(angle); 
double newY = sin(angle); 

Zakłada promień 1 Pomnóż za każdym razem pożądany promień. Wybierz liczbę, która będzie większa niż ekran, na przykład 480 dla iPhone'a lub 1024 dla iPada (zakładając, że chcesz punktów, a nie pikseli).

Następnie dodaj oryginalny punkt, aby uzyskać końcowy punkt.

Zakładając masz CGPoint start, double angle i długość, jako ostatni punkt jest:

double endX = cos(angle) * length + start.x; 
double endY = sin(angle) * length + start.y; 
CGPoint end = CGPointMake(endX, endY); 

Jest OK, jeśli punkt końcowy jest na ekranie.

+0

Prawdopodobnie użyteczne: jeśli chcesz konwertować między radiany i stopnie - http://iosdevelopertips.com/graphics/radians-to-degrees-and-degrees- to-radians.html –

Powiązane problemy