1 (изменено: Dworkin, 2018-03-24 21:47:51)

Тема: AHK: пересечение эллипса и прямой. Перенос формулы в код

Добрый вечер.
Есть эллипс вида:
x*x/25 + y*y/4 = 1
и прямая вида:
-4x+2y+6=0
Надо найти пересекаются ли?

В ручную на листочке это все решается вот так:
из прямой выражаем "y":
y = (4x-6)/2
и подставляем этот "y" в уравнение эллипса:
x*x/25 + ((4x-6)/2)*((4x-6)/2)/4=1
Приведу в более удобный вид:
x*x/25 + (2x-3)*(2x-3)/4=1
Далее все это приводится к виду квадратного уравнения:
10.4*x*x - 3*x + 21.5 = 0
Перенести квадратное уравнение в код и решить его я могу, но вот как это все собрать в коде я без понятия. Помогите пожалуйста.

2

Re: AHK: пересечение эллипса и прямой. Перенос формулы в код

Интересно, а какая практическая ценность у скрипта?

3

Re: AHK: пересечение эллипса и прямой. Перенос формулы в код

ypppu пишет:

Интересно, а какая практическая ценность у скрипта?

Скрипт будет реагировать.

Каноническое уравнение эллипса:
x^2/a^2 + y^2/b^2 = 1

Уравнение прямой:
(x - x1)/(x2-x1) = (y-y1)/(y2-y1)

Нашел кое-что тут https://ru.stackoverflow.com/questions/ … 1%81%D0%B0

Из предпоследнего поста решил я получить "y" из прямой, из эллипса и приравнять. Затем куча текста и пришел к квадратному уравнению. Проверил все несколько раз, вбил цифры, но ответ не правильный

Так вот автор ответа(предпоследний пост) выразил "y" из канонического уравнения эллипса и получил это:
y=+-sqrt((1/b^2)-(x^2/a^2*b^2))

Когда я сам на листочке выразил "y", то получило другое:
y = sqrt(b^2 - (b^2*x^2)/a^)
Вот сижу и думаю или я дурак или автор ответа ошибся? Скорее всего автор ответа ошибся и вместо положенного умножения он поделил.

4 (изменено: Dworkin, 2018-03-25 04:53:22)

Re: AHK: пересечение эллипса и прямой. Перенос формулы в код

Пересчитал, получил немного другое квадратное уравнение и оно выдало правильное решение.
Кому интересно вот квадратное уравнение:

a - большая полуось эллипса
b - малая полуось эллипса
x1, y1 - точка отрезка
x2, y2  - точка отрезка


x21 := x2 - x1 ; запишу так что бы конечная формула была не такая громоздкая
y21 := y2 - y1 ; запишу так что бы конечная формула была не такая громоздкая

Само квадратное уравнение:
A*x**2 + B*x + C = 0

(1/(a**2) + y21**2/(b**2*x21**2))*x**2 + ((2*y1*y21)/(b**2*x21) - (2*x1*y21**2)/(b**2*x21**2))*x + (y21**2*x1**2)/(b**2*x21**2) - (2*y1*y21*x1)/(b**2*x21) + y1**2/b**2 - 1 = 0

Уравнение без учета того что эллипс смещен и без учета наклона под углом.