[c#] kleines Mathematisches Problem

Marschal

Großer Enumerator
Hallo Community,

debuge grade folgende stelle:
C++:
//*******************************************//
            //                   Theorie                 //     
            //*******************************************//

            //P0 -- P01 -- P1
            // |   \  /     |
            //P02   M      P13
            // |   /  \     |
            //p2 -- P23 -- P3

            //P0 - P3:  Eckpunkte
            //M      :  Mittelpunkt
            //Pxy    : "Streckenhalbierenden"

            //*******************************************//
            //                 Variablen                 //     
            //*******************************************//
            double lambda1 = 0.0f;                                 //Faktor for P0P3
            double lambda2 = 0.0f;                                 //Faktor for P0P3

            double mx;                                      //Center X
            double my;                                      //Center Y     
    

            //*******************************************//
            //          Mittelpunkt bestimmen            //     
            //*******************************************//
            lambda1 =   ((x1 * y2 - y1 * x2) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));    //diagonale 1
            lambda2 =  (-(x2 * y3 - y2 * x3) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));    //diagonale 2

            mx = x3 * lambda1;
            my = y3 * lambda1;

Nun Problem ist labmda1 und 2 bleiben null (ich debugge mit Haltepunkten und schaue mir halt die Werte der Variablen an).
das Problem liegt in der Zeile 28 und 29. Irgendwie wird nicht geteilt. Woran liegt das? kurz die Division gibt immer 0 zurück, obwohl 0.5 rauskommen müsste.

MfG
 
Zuletzt bearbeitet von einem Moderator:
Seltsam, so hats geklappt, so wird die division ausgeführt.

Kann mir jemand erklären, was da der unterschied ist, wenn ichs als "Einzeiler" da stehen hab, oder tmp-Variablen nutze und mit denen dan mathematisch komplett das gleiche anstelle?

C++:
            //*******************************************//
            //                 Variablen                 //     
            //*******************************************//
            double lambda1 = 0.0f;                                 //Faktor for P0P3
            double lambda2 = 0.0f;                                 //Faktor for P0P3

            double mx;                                      //Center X
            double my;                                      //Center Y     
    

            //*******************************************//
            //          Mittelpunkt bestimmen            //     
            //*******************************************//
            double tmp1 = (x1 * y2 - y1 * x2);
            double tmp2 = (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3);
            double tmp3 = -(x2 * y3 - y2 * x3);

           //lambda1 =   ((x1 * y2 - y1 * x2) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));    //diagonale 1
            //lambda2 =  (-(x2 * y3 - y2 * x3) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));    //diagonale 2

            lambda1 = tmp1 / tmp2;

            mx = x3 * lambda1;
            my = y3 * lambda1;

MfG
 
Zuletzt bearbeitet von einem Moderator:
Ich vermute mal stark, dass x1,x2,x3,y1,y2,y3 int Variablen sind. Deshalb wird eine Ganzzahldivision durchgeführt und der Ergebnistyp ist int. Deine Hilfsvariablen sind double, deshalb funktioniert es.

Lösung z.B. so:
C#:
lambda1 =   ((double)(x1 * y2 - y1 * x2) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));
lambda2 =  (-(double)(x2 * y3 - y2 * x3) / (x1 * y3 - y1 * x3 - x2 * y3 + y2 * x3));
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück