私はいくつかのコードを勉強しています。私はいくつかの数学で助けをしたいと思います。私は与えられた接線の点を持つ円の接線の方程式を解こうとしています。式から変数を抽出する方法は?
//(x1 - p)(x - p) +(y1 - q)(y - q) = r^2 I understand this formula
//variables
//x1 = point.x
//y1 = point.y
//p = center.x
//q = center.y
//r = radius
編集:ここは機能全体ですが、多分役立つかもしれません。先生は勉強する私にそれを与えたが、多分彼は私をトローリングさ: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);
}
なぜそんなに長く書くのですか?単純なマイナスが働くので、 '-1 *'は冗長です。 –
私は方程式からxを抽出するときにそれが正しいと思いますか? – dranec