2016-06-21 21 views
1

Ich studiere etwas Code und ich möchte Hilfe mit etwas Mathe. Im Versuch, die Gleichung der Tangente auf einem Kreis mit gegebenem Tangentenpunkt zu lösen.Wie man Variablen aus einer Gleichung extrahiert?

bearbeiten: hier ist die ganze Funktion, vielleicht wird es helfen. Mein Lehrer hat es mir gegeben zu studieren, aber vielleicht wird er mich Trolling: D

const std::pair<double, double> Arc::tangentEquation(const glm::vec3& center, const glm::vec3& pointA, float radius) const { 

    if (radius <= 0.0f) 
    throw std::domain_error("Radius can't be negative or 0"); 
    // Jednadžba tangente u točki T 
    // (x1 - p)(x - p) + (y1 - q)(y - q) = r^2 
    glm::vec3 point = pointA + center; 

    double px = -1 * (center.x * point.x); 
    double qy = -1 * (center.y * point.y); 
    double x = point.x - center.x; 
    double y = point.y - center.y; 
    double k = 0.0; 

    double l = (pow(radius, 2) - (px + pow(center.x, 2) + qy + pow(center.y, 2))); 

    if (y == 0) { // paralelan s x os 
    k = l/x; 
    l = 0; 
    } else if (x == 0) { // paralelan s y os 
    l = l/y; 
    k = 0; 
    } else { 
    k = -x/y; 
    l = l/y; 
    } 
    return std::pair<double, double>(k, l); 
} 
+0

warum schreiben Sie es so lange so? und das '-1 *' ist redundant, weil nur ein einfaches Minus funktioniert –

+0

ich denke, es bezieht sich auf die Extraktion von x aus der Gleichung? – dranec

Antwort

1

Der Code nicht die Formel in der ersten Zeile nicht implementiert, so dass ich glaube nicht, dass es seltsam ist, dass Sie dies nicht tun verstehen :-)

(x1 - p)(x - p) + (y1 - q)(y - q) 

Wenn wir alle Begriffe in Klammern Multiplikation schreiben, erhalten wir:

x1*x - p*x - p*x1 + p^2 + y1*y - q*y - q*y1 + q^2 

(https://www.youtube.com/watch?v=3s_lroR5_1U für sehr pädagogische Erklärung) Aber yo Dein Code verliert die Hälfte dieser Begriffe ....?

+0

ja ... aber es funktioniert gut. Deshalb ist es verwirrend für mich .. – dranec

+0

Vielleicht haben Sie das Problem so definiert, dass einige Koordinaten immer = 0 sind? –

+0

Nein, das war ein dummer Vorschlag, wenn px und py! = 0 sind, dann sind alle Koordinaten! = 0. Woher hast du die Gleichung? –

Verwandte Themen