-
Data: 2010-06-04 12:20:42
Temat: Re: Punkty przecięcia okręgu i odcinka
Od: Dariusz Zolna <a...@u...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]
ślamazar pisze:
> acha - zapomniałem o inpucie - trzeba dodac jakis imput albo
> dane wejsciowe podac w kodzie - druga uwaga ten kod z tej stronki zakłada
> ze srodek okregu jest w (0, 0 ) jak nie to trzeba konce odcinka (i centrum
> okregu niejako niejawnie) przed przeliczeniem przesunac o roznice np
Dzięki, niestety nie działa. Przykładowe dane dla funkcji:
x = 87, y = -33, r = 20
x1 = 51, y1 = -77
x2 = 115, y2 = -4
Dla tych danych odcinek przecina okrąg w 2 miejscach. Jest to
(teoretycznie) wykrywane przez algorytm, ale współrzędne punktów
przecięcia wychodzą nieprawidłowe (x_1 = 137492, y_1 = 9015003).
Czegoś w tych wzorach brakuje...
Pozdrawiam,
Dariusz Żołna
int CircleLineIntersectPts(
double x, double y, double r, double x1, double y1, double x2, double
y2) //, int *xo1, int *yo1, int *xo2, int *yo2)
{
x1 -= x;
y1 -= y;
x2 -= x;
y2 -= y;
double dx = x2-x1;
double dy = y2-y1;
double dr = sqrt(dx*dx+dy*dy);
double D = x1*y2-x2*y1;
double delta = r*r*dr*dr-D*D;
if(delta<0) return 0;
if(delta==0) return 1;
if(delta>0)
{
double x_1 =((D*dy+sgn(dy)*dx*sqrt(r*r*dr*dr-D*D))/dr*dr) + x;
double x_2 =((D*dy-sgn(dy)*dx*sqrt(r*r*dr*dr-D*D))/dr*dr) + x;
double y_1 =((-D*dy+abs(dy)*dx*sqrt(r*r*dr*dr-D*D))/dr*dr) + y;
double y_2 =((-D*dy-abs(dy)*dx*sqrt(r*r*dr*dr-D*D))/dr*dr) + y;
}
return 2;
}
Następne wpisy z tego wątku
- 04.06.10 12:38 Dariusz Zolna
- 04.06.10 14:59 Tomasz Sowa
- 04.06.10 19:22 Dariusz Zolna
Najnowsze wątki z tej grupy
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
Najnowsze wątki
- 2026-01-08 Ślad węglowy
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Dlaczego wrzucenie szkolnego krzyża do śmieci to zbrodnia mniejsza od zgaszenia sejmowej menory?
- 2026-01-08 NR 5G -- mity, hity, kity, bez satelity...
- 2026-01-07 Oszustwa w go go
- 2026-01-07 Jaka myjka ultradźwiękowa?
- 2026-01-07 POCO
- 2026-01-07 Kraków => Konsultant Microsoft Dynamics AX/365 SCM Consultant - Servi
- 2026-01-07 Kraków => Microsoft Dynamics AX/365 SCM Consultant - Service & Suppor
- 2026-01-06 I kolejny
- 2026-01-06 Retro organizer ale współcześnie
- 2026-01-06 Bowling




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]