如何从方程式提取变量

How to extract variables from a equation?

本文关键字:提取 变量 方程式      更新时间:2023-10-16

我正在研究一些代码,我想帮助一些数学。我试图以给定的切相点在圆上求解切线的方程。

//(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);
}

代码不会在第一行上实现公式,所以我认为您不理解这并不奇怪: - )

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

如果我们在括号乘法中写出所有术语,我们会得到:

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,用于非常教育的解释)但是您的代码将丢失这些条款的一半....?