Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 15:08   #1
Night61
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 2
По умолчанию Число точек пересечения прямой с окружностью

Сразу оговорюсь что это делал для жены, поэтому тонкостей что именно хочет преподаватель не знаю.
Сделал я ее вот таким образом:
CLS
INPUT "k="; k
INPUT "b="; b
INPUT "r="; r
a = k * k + 1
b1 = 2 * k * b
c = b * b – r * r
d = b1 * b1 - 4 * a * c
PRINT "Tochek peresecheniya: ";
IF d < 0 THEN PRINT “0”
IF d =0 THEN PRINT “1”
IF d >= 0 THEN PRINT “2”

Преподаватель говорит что это не правильно и накорябала на отчете вот это. Мало того еще утверждает что DIM тоже не нужен в начале. Поискал в учебники такой формулы не встретил, может пропустил. У кого какие мысли, как еще можно решить?
Изображения
Тип файла: jpg ааа.jpg (65.3 Кб, 74 просмотров)
Night61 вне форума Ответить с цитированием
Старый 20.01.2012, 16:57   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Насколько я понял, надо найти расстояние от прямой до начала координат.
А для этого надо преобразовать уравнение прямой к нормальному виду
x*cos(Th) + y*sin(Th) - p = 0
Абсолютное значение свободного члена p и будет этим расстоянием.

Для приведения надо сделать следующее.
Сначала преобразуем твое уравнение прямой с угловым коэффициентом y = kx + b к общему уравнению прямой
Ax + By + C = 0.
Легко заметить, что A = k, B = -1, C = b.
Тогда нормирующий множитель, на который надо умножить общее уравнение, чтобы получить нормальное, высчитывается по формуле
mu = +-1 / sqrt(A*A + B*B), // sqrt -- квадратный корень
или, для нашего случая,
mu = +-1 / sqrt(k*k + 1)

Знак множителя выбирается так, чтобы p было положительным (то есть, он должен быть противоположен знаку С из общего уравнения или знаку b из твоего с угловым коэффициентом). Это логично, так как это расстояние и есть.
Поэтому все нормальное уравнение тебя интересовать не должно, и ты можешь просто разделить b (оно же С) на найденный выше mu.

И сравнить его с радиусом R.
Если расстояние до прямой больше радиуса -- пересечений нет,
равно -- прямая является касательной, 1 точка,
меньше радиуса -- точек две.
Все.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 20.01.2012 в 17:34.
Mandrivnyk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение точек пересечения n-угольника c прямой(c\c++)). forever042 Помощь студентам 5 17.12.2011 02:57
алгоритм нахождения точек пересечения прямой и ломаной -=zAA=- Помощь студентам 3 04.10.2011 10:49
Таблица со расчетом точек пересечения дуг Tidus Microsoft Office Excel 12 06.04.2011 18:32
подсчитать количество точек пересечения fallti Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 28.06.2010 13:46