C++ program kör és érintő rajzolása?
Feladat a következő: Bekérni a felhasználótól a kör középpontjának koordinátáit, a sugarát, valamint egy külső pont koordinátáit, Aztán megrajzolja a külső pontból húzható érintőket.
Eddig erre jutottam (elnézést ha zavaros/áttekinthetetlen a forráskód, rengeteg feladatom van és ez a program egy kevésbé fontos tárgyamhoz kell, nem igazán tudtam nagyon koncentrálni rá)
#include <iostream>
#include <graphics.h>
#include <math.h>
using namespace std;
int main()
{
int xmid,ymid,x,y,u,v,r,D,E;
cout << "Kozeppont x koordinataja: ";
cin >> u;
cout << "Kozeppont y koordinataja: ";
cin >> v;
cout << "Kor sugara: ";
cin >> r;
cout << "Kulso pont elso koordinataja: ";
cin >> x;
cout << "Kulso pont masodik koordinataja: ";
cin >> y;
D=sqrt((u-x)^2+(v-y)^2);
if (D^2 < r^2) {
cout << "A pont a koron belul van";
exit(0);
}
else {
E = sqrt(D^2-r^2);
int gd=DETECT,gm;
initgraph(&gd,&gm,NULL);
xmid=getmaxx()/2;
ymid=getmaxy()/2;
moveto(xmid,ymid);
circle(u,v,r);
line(
getch();
closegraph();
}
}
Két kérdésem lenne. Az egyik hogy ez így jó e (a számításokra lennék kíváncsi, szintaktikailag elvileg rendben van mert lefut)?
A másik pedig az, hogy hogyan rajzoltassam be az érintőt?(a line parancshoz ugye koordináták kellenének, de egyszerűen nem tudom meghatározni a fenti számításokból őket)
Érintőhöz a pontok:
Van egy külső pontod, abból kell húzni az érintőket, így az érintő egyik pontja a külső P pontod.
A másik pont ami az érintőn van, az pedig a körön van.
Fel kell írnod a kör egyenletét (x-u)^2+(y-v)^2=r^2, ahol u és v a kör középpontjának koordinátái.
Ebből aztán számolhatod az érintő egyenes egyenletét is, mivel van két pontod: az érintőre persze csak paraméteres egyenletet tudsz, mert a másik pontja nincs meg.
Egyenlővé teszed a kör egyenletét az érintő egyenletével (azaz így számolod a metszéspontot, ergo az érintés pontját), és kapsz egy másodfokú egyenletet.
A másodfokú egyenlet két megoldása lesz a két pont a körön. És akkor az egyik érintő az a P pont és az első megoldás segítségével megvan, a másik érintő pedig a P pont és a második megoldás.
Ha nem tudsz egyenes egyenleteket, középiskolai tananyagok vannak róla fent az interneten, csak be kell hellyettesítened a számokat.
Ezt mind papíron kell végigvezetned, és ha az megvan, utána könnyű (át)implementálni programba.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!