Kezdőoldal » Számítástechnika » Programozás » C++ program kör és érintő...

C++ program kör és érintő rajzolása?

Figyelt kérdés

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)



2020. ápr. 30. 16:41
 1/4 A kérdező kommentje:
A line az véletlenül került oda, anélkül akartam bemásolni kódot. Szóval így nyilván nem fut le a program de anélkül igen :D
2020. ápr. 30. 16:43
 2/4 anonim ***** válasza:

É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.

2020. ápr. 30. 18:06
Hasznos számodra ez a válasz?
 3/4 anonim válasza:
Egy kérdés, tudom, hogy mellékes, de melyik ez a suli, ahol Turbo C++-t kell használni?
2020. máj. 1. 10:51
Hasznos számodra ez a válasz?
 4/4 anonim válasza:
100%
És remélem azt is tudod, kérdező, hogy a ^ operátor nem a hatványozás, hanem a XOR művelet...
2020. máj. 1. 10:52
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!