Sunteți pe pagina 1din 3

Probleme de geometrie plană

https://www.topcoder.com/community/data-science/data-science-
tutorials/geometry-concepts-basic-concepts/ (engleză)

Produsul scalar a doi vectori:


Vectorii (asemanător cu fizica), dar aici un vector este echivalent cu un punct în plan:
A = (x1, y1)
B = (x2, y2)
A ∙ B = |A| * |B| * cos(Θ) = x1 * x2 + y1 * y2
|A| = sqrt(x12 + y12) sqrt este functia pentru radical
→ dacă cos(Θ) = (x1 * x2 + y1 * y2) / (|A| * |B|)
= 0 → Θ = 90 => vectori perpendiculari (sau segmente perpendiculare)
= 1 → Θ = 0 => segmente paralele (sau confundate)
Dacă avem două segmente în plan, putem să le aducem cu unul din capete în (0,0),
printr-o ‘translaţie’.
Produsul vectorial (modulul produsului vectorial)
A × B = |A| * |B| * sin(Θ) = x1 * y2 - y1 * x2
A × B = Aria * 2 , unde Aria este cea a triunghiului ABO, iar O are coordinate (0,0)
Distanţa de la un punct la o linie
dist = (AB × AC) / |AB| (folosind aria în două moduri)
Distanţa de la un punct la un segment (?)
→ trebuie să vedem dacă perpendiculara cade pe AB
→ teorema lui Pitagora generalizată pentru unghiuri
Intersecţia a două linii
Ecuaţia unei drepte : A x + B y + C = 0. De ce în această formă?
Dacă cunoaştem doar două puncte de pe dreapta: (x1, y1), (x2, y2), cum aflăm A, B, C ?
A = y 2 – y1
B = x1 – x2
C = A * x1 + B * y1
Dacă avem două drepte cu ecuaţiile A1 x + B1 y = C1 şi A2 x + B2 y = C2 , intersecţia
este punctul de coordonate:
x = (B2 * C1 – B1 * C2) / (A1 * B2 – A2 * B1)
y = (A1 * C2 – A2 * C1) / (A1 * B2 – A2 * B1)
Dacă (A1 * B2 – A2 * B1) = 0, liniile sunt paralele, deoarece nu pot împărţi la 0.
Determinarea cercului care conţine 3 puncte
Putem folosi intersecţia dreptelor pentru a determina centrul:
Calculăm coeficienţii ecuaţiilor dreptelor XY şi YZ
Apoi calculăm ecuaţiile mediatoarelor dreptelor XY şi YZ
Iar la final intersecţia lor.

Pentru o dreaptă cu ecuaţia Ax + By + C = 0, o perpendiculara


are ecuaţie de forma -Bx + Ay + D = 0, iar D se poate determina adăugand punctul din
mijloc.

Reflecţie
Pentru a determina X’, calculăm perpendiculara pe dreapta:
-Bx + Ay + D = 0, pentru a determina D folosim punctul X, apoi
calculăm punctul de intersecţie a celor două drepte
perpendiculare, iar la final: X’ = Y - (X - Y)

Rotaţia
Folosind funcţiile trigonometrice:
x' = x cos(θ) - y sin(θ)
y' = x sin(θ) + y cos(θ)
Pentru a obţine punctul (x’,y’) care este (x,y) rotit în sens invers trigonometric faţă de (0,0)

Revenind la arii, aria triunghiului ABC oarecare, în functie de coordonatele vârfurilor:


6
A = (A.x, A.y), B = (B.x, B.y), C = (C.x, C.y)
double area(point a, point b, point c) { 7 5
a.x -= c.x; b.x -= c.x;
a.y -= c.y; b.y -= c.y;
return fabs((double)(a.x * b.y - b.x * a.y) / 2);
} 4
Atenţie la modul, dar şi la semnificaţia semnului (!)
Aria unui poligon, convex: 1
Avem N puncte de coordonate: 3
(P[1].x, P[1].y), (P[2].x, P[2].y), (P[3].x, P[3].y) … (P[N].x, P[N].y) 2
6
point p[100];
int area(int n, point p[]) {
double area_tot = 0;
7 5
for (int i = 2; i < n; i++) {
area_tot += area(p[1], p[i], p[i+1]);
}
return area_tot; 4
}
1
3
2
Aria unui poligon, concav:
Mai simplu (cum, de ce?)
Punct în poligon. Cum determinăm apartenenţa?

Temă:
uşoor mediu greu
aria triunghi si (aria sau aria) piscinaCF piscina
carte dreptungi2 vtriang
amr reuniune mere
soya rabbit hunt tdrept
triangle fence geometry

S-ar putea să vă placă și