close

Quadratic Equation Explanation

Quadratic Equation Explanation

The quadratic equation in this context likely arises from finding the intersection points of a line and a circle. Let's break down the problem and the given coefficients step by step.

Circle Equation

A circle with center (x_0, y_0) and radius (r) is described by the equation:

(x - x_0)^2 + (y - y_0)^2 = r^2

Line Equation

A line can be expressed in the slope-intercept form ( y = mx + b ), where (m) is the slope and (b) is the y-intercept.

Intersection of Line and Circle

To find the points where the line intersects the circle, we substitute the line equation into the circle equation.

  1. Substitute ( y = mx + b ) into the circle equation:

    (x - x_0)^2 + (mx + b - y_0)^2 = r^2

  2. Expand and simplify:

    (x - x_0)^2 + (mx + b - y_0)^2 = r^2

    (x - x_0)^2 + (mx + (b - y_0))^2 = r^2

    (x - x_0)^2 + (m^2 x^2 + 2m(b - y_0)x + (b - y_0)^2) = r^2

    x^2 - 2x_0 x + x_0^2 + m^2 x^2 + 2m(b - y_0)x + (b - y_0)^2 = r^2

    (1 + m^2)x^2 + (2m(b - y_0) - 2x_0)x + (x_0^2 + (b - y_0)^2 - r^2) = 0

Quadratic Equation Coefficients

This simplifies to a standard quadratic equation in (x):

ax^2 + bx + c = 0

Here, the coefficients (a), (b), and (c) are:

  • a = 1 + m^2

  • b = 2m(b - y_0) - 2x_0

  • c = x_0^2 + (b - y_0)^2 - r^2

Given Coefficients Explained

Now, let's match this with the provided coefficients:

  • a = 1 + m * m

  • b_eq = 2 * (m * b - m * center.y - center.x)

  • c_eq = center.x * center.x + center.y * center.y - radius * radius + b * b - 2 * b * center.y

These match exactly with the derived coefficients where:

  • center.x is x_0

  • center.y is y_0

  • radius is r

Summary

The quadratic equation:

(1 + m^2)x^2 + (2m(b - y_0) - 2x_0)x + (x_0^2 + (b - y_0)^2 - r^2) = 0

is used to find the x-coordinates of the intersection points between the line ( y = mx + b ) and the circle ( (x - x_0)^2 + (y - y_0)^2 = r^2 ). Solving this quadratic equation provides the x-values, and substituting back into the line equation ( y = mx + b ) gives the corresponding y-values for the intersection points.

 

紀錄線段與圓的交點: intersections

std::vector<Point> intersections;

Discriminant

// 判別式<0:  表示沒有任何交點,直接返回
double discriminant = b_eq * b_eq - 4 * a * c_eq;
if (discriminant < 0) {
          return intersections; // No real roots, no intersection
}

 

double sqrt_discriminant = sqrt(discriminant);

兩組交點 intersection1intersection2
double x1 = (-b_eq + sqrt_discriminant) / (2 * a);
double x2 = (-b_eq - sqrt_discriminant) / (2 * a);

 

Point intersection1 = { x1, m * x1 + b };
Point intersection2 = { x2, m * x2 + b };

判斷一組交點或是兩組交點

 

 

// Check if the intersection points are within the line segment
if ((x1 >= in1.x && x1 <= in2.x) || (x1 <= in1.x && x1 >= in2.x)) {
intersections.push_back(intersection1);
}
if ((x2 >= in1.x && x2 <= in2.x) || (x2 <= in1.x && x2 >= in2.x)) {
intersections.push_back(intersection2);
}

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()