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
radius
promień ł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();