Zielony Smok

JavaFX canvas: Metody arcTo

Metoda void arcTo(double x1, double y1, double x2, double y2, double radius)

x1 – współrzędna pozioma pierwszego punktu łuku

y1 – współrzędna pionowa pierwszego punktu łuku

x2 – współrzędna pozioma drugiego punktu łuku

y2 – współrzędna pionowa drugiego punktu łuku

radiuspromień łuku w przedziale (0.0, ∞)

Dodaje segmenty do bieżącej ścieżki tworząc łuk.

Na metodę arcTo maja wpływ jedynie atrybuty ogólne, z tym że transformacja ma wpływ jedynie przy tworzeniu ścieżki.

Jeśli p0 jest bieżącym punktem ścieżki, a p1 jest punktem określonym przez (x1, y1), a p2 jest punktem określonym przez (x2, y2), to dołączone segmenty łuku będą segmentami na obwodzie koła o promieniu radius stykającego się i wpisanego w wypukłą (wewnętrzną) stronę p0-> p1-> p2.

Ścieżka będzie zawierała odcinek linii (jeśli to konieczne) do punktu stycznego między tym okręgiem a p0-> p1, po którym nastąpią okrągłe segmenty łuku, aż do osiągnięcia punkt stycznego między okręgiem a p1-> p2 i zakończy w bieżącym punkcie w punkcie stycznym (nie w p2). Zwróć uwagę, że promień i kolistość segmentów łuku są mierzone czy rozważane w odniesieniu do bieżącej transformacji, ale segmenty wynikowe, które są obliczane na podstawie tych nietransformowanych punktów, są przekształcane, gdy są dodawane do ścieżki. Ponieważ wszystkie obliczenia są wykonywane w przestrzeni nietransformowanej, ale wszystkie istniejące wcześniej segmenty ścieżki są przekształcane, zdolność do prawidłowego wykonania obliczeń może pośrednio zależeć od możliwości zwrotnego przekształcenia bieżącego końca bieżącej ścieżki z powrotem w nieprzekształcone współrzędne.

Jeśli z jakiegoś powodu nie ma możliwości obliczenia i wpisania wskazanego okręgu, cała operacja po prostu doda segmenty, aby wymusić prostą do punktu p1. Możliwe przyczyny niepowodzenia obliczeń to:

  • Bieżąca ścieżka jest pusta
  • Segmenty p0-> p1-> p2 są współliniowe
  • bieżąca transformacja jest nieodwracalna, tak że bieżący punkt końcowy bieżącej ścieżki nie może zostać zwrotnie przekształcony do celów obliczeniowych.
Klasa Listing 25_33

Ściągnij klasę Listing25_33

            GraphicsContext gc = cv.getGraphicsContext2D();
            //-
            gc.beginPath();
            gc.moveTo(20,20);
            gc.lineTo(200,20);
            gc.arcTo(200,60, 130, 100, 20);
            gc.lineTo(20,40);
            gc.stroke();
Metoda arcTo
Rys. 25_31