![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 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 тоже не нужен в начале. Поискал в учебники такой формулы не встретил, может пропустил. У кого какие мысли, как еще можно решить? |
![]() |
![]() |
![]() |
#2 |
Software Developer
Участник клуба
Регистрация: 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нахождение точек пересечения 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 |