[ Janinka @ 23.04.2009. 17:48 ] @
Treba mi resenje za ovaj zadatak:
Kako proveriti dali je tacka A(x,y) unutrasnja za trougao BCD[B(xb,yb),C(xc,yc),D(xd,yd)?
Ja sam pokusala na ovaj nacin:Ako povezemo tacku A sa tackama B,C i D,dobijemo tri trougla ABC,ABD,ACD,pa trebalo bi da je zbir njihovih povrsina jednak povrsini trougla.Dali sam u pravu?
[ igorpet @ 23.04.2009. 19:09 ] @
Pogledaj ovaj dokument http://alas.matf.bg.ac.yu/~vsrdjan/files/geometrija3.pdf i poglavlje - 5.2.3 Odredjivanje da li tacka pripada trouglu
Citat:

...tacka P pripada trouglu ako i samo ako je svaki od trouglova ABP, BCP, CAP pozitivne orjentacije, tj. ako i samo ako je DABP > 0, DBCP > 0, DCAP > 0. (17)
U slucaju kada je trougao ABC negativne orjentacije, tacka P je unutar trougla ako su svi trouglovi ABP, BCP, CAP negativne orjentacije, tj. u nejednakostima (17) vazi znak < .
Ako je neka od tih vrednosti jednaka nuli, tada tacka P pripada odgovarajucoj pravoj. Recimo, ako je DABP = 0, tacka P pripada pravoj AB...

Da ne citiram dalje, imas solidno objasnjeno.
Nadam se da ce pomoci.
[ Janinka @ 23.04.2009. 20:12 ] @
Hvala,pomoglo je.A dali je moje resenje moguce?Meni izgleda sasvim logicno.Problem je sto mi ovo treba za takmicenje iz informatike,a ovako kako je objasnjeno ne uci se na redovnim casovima,bar ja nisam to srela.Inace,takmiocenje je za srednjoskolce.

[Ovu poruku je menjao Janinka dana 23.04.2009. u 22:35 GMT+1]

[Ovu poruku je menjao Janinka dana 23.04.2009. u 22:37 GMT+1]
[ igorpet @ 24.04.2009. 09:01 ] @
Moze se odraditi i ovako preko povrsina.
A ako ti treba za takmicenje iz informatike, mozda ce ti ovo pomoci jos vise:
Citat:

#include<stdio.h>

typedef struct tacka

{

float x;

float y;

} TACKA;

/* F-ja ispituje da li se tacke T3 i T4 nalaze sa iste strane prave odredjene tackama T1 i T2. Pri tom, ukoliko neka od tacaka T3 i T4 lezi na odgovarajucoj pravoj smatra se da tacke nisu sa iste strane te prave. */

int SaIsteStranePrave(TACKA T1,TACKA T2, TACKA T3, TACKA T4)

{
int t3 = (T3.y - T1.y)*(T2.x - T1.x) - (T2.y - T1.y) * (T3.x - T1.x);
int t4 = (T4.y - T1.y)*(T2.x - T1.x) - (T2.y - T1.y) * (T4.x - T1.x);
return (t3 * t4 > 0);
}

main()
{
TACKA A, B, C, D;
printf("Unesite koordinate temena trougla:\n");
printf("Unesite koordinate temena A:\n");
scanf("%f %f", &A.x, &A.y);
printf("Unesite koordinate temena B:\n");
scanf("%f %f", &B.x, &B.y);
printf("Unesite koordinate temena C:\n");
scanf("%f %f", &C.x, &C.y);
printf("Unesite koordinate tacke D za koju se ispituje da li pripada trouglu ABC:\n");
scanf("%f %f", &D.x, &D.y);

if(SaIsteStranePrave(A,B,C,D) && SaIsteStranePrave(B,C,A,D) && SaIsteStranePrave(A,C,B,D))
printf("Tacka D pripada trouglu ABC!\n");
else printf("Tacka D ne pripada trouglu ABC!\n");
}
[ Nedeljko @ 24.04.2009. 13:57 ] @
Tačka je spoljašnja akko je zbir površina trouglova ABC, ABD i ACD veći od površine trougla BCD. Kada bih programirao ovako nešto držao bih se igorpet-ove metode sa ispitivanjem da li su tačke sa iste strane prave, ali su moguće i druge ideje, kao ova koju sam naveo (koristi se Heronov obrazac za izračunavanje površine trougla).
[ Janinka @ 24.04.2009. 22:17 ] @
Hvala jos jednom,mislim da ce ovo pomoci.Stvarno ste odlicni...