Analitička geometrija i C# programiranje dio 6/n


Problem 6: Ugao između prave i ravni.

Pretpostavimo da imamo pravu p na kojoj poznajemo koordinate tačaka A i B. Također pretpostavimo da imamo ravan Π koja je definisana tačkom na ravni R i vektorom normale V. Potrebno je izračunati ugao alpha  kojeg obrazuje prava i ravan.

angprogr_slproblem6

Rješenje: Rješenje zadatka svodi se na izračunavanje ugla između vekktora prave p i njene projektcije na ravan Π p'. Kako već imamo vektor prave p, još je samo potrebno da se odredi vektor prave p’ koja predstavlja projekciju prave na ravan. S druge strane znamo da je vektor normale okomut na vektor smijera projektovane prave, pa je traženi ugao komplement ugla koji zatvara parava i vektor normale. Na osnovu ovog imamo:

cos (90- \alpha) = \frac {|p \cdot V|}{\left | p \right |\left | V \right |}

Implementacija u C# izgleda kao na sljedećem listingu:

static void Main(string[] args)
{
    //Zadatak 1: data je ravan 2x-y+z-6=0 i prava (x)/-1 = (y-1)/-1 ) (z-6)/1
    //ulazni podaci za zadatak 1.
    Point B  = new Point(2f,  4f,  0f);      //tacka na pravoj
    Point A  = new Point(0f,  1f, -1f);   //tačka na pravoj
    Point R  = new Point(0f,  0f,  6f);     //tacka na ravni
    Point Vn = new Point(2f, -1f,  1f);   //vektor normalne ravni

    //izracunavanje ugla
    //Vektor pravca kojeg obrazuju tacke A i B
    Point zraka = Point.Vector(A,B);
    //
    var vec = Point.CrossProduct(zraka, Vn);
    float scos_alpha = (float)(Point.Modul(vec) / (Point.Modul(Vn) * Point.Modul(zraka)));
    Console.WriteLine("Cosinus ugla alpha iznosi={0}", scos_alpha);
    Console.Read();
}

Klasa Point je implementirana u prethodnom postu.

Advertisement

1 thought on “Analitička geometrija i C# programiranje dio 6/n

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s