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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 12:14   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию С++, проверка на пересечение прямых. ТЗ

Ребят, еще раз прошу прощения, но у меня вопрос, есть задание, в котором требуется описать класс, который имеет булевский метод cross, этот метод проверяет на пересечение/совпадение между прямыми.

Дак вот вопрос:

входные данные: 2 точки, то есть если один раз вызвать этот метод, то посторится прямая, при вызове этого метода второй раз-построится вторая прямая, а вот как проверить на пересечение?

З.Ы. матан забыл еще в школе :D

з.з.ы: булевский метод это что-то вроде делфийского

function cross(type_class names_class,type_class names_class):boolean;

?


Вообще с постановкой ничего не понятно? т.е. для одной прямой нужно вводить 6 значений?

(х,у,з а для прямой направляющую 1, 2 и 3) ?


формула вроде такая

1/х+у/2+з/3=0...
вроде так
Изображения
Тип файла: jpg классы.jpg (68.2 Кб, 144 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 27.05.2015 в 12:25.
Алексей_2012 вне форума Ответить с цитированием
Старый 27.05.2015, 12:23   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ни какого матанализа Особенно того, что в школе проходил. На плоскости:

A1x+B1y+C1=0
A2x+B2y+C2=0

A1/A2=B1/B2 --> прямые параллельны

В трехмерке напряги извилины и сам додумай


Да, булевский метод как не извращайся не вернет три значения - пересекаются, не пересекаются, совпадают
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.05.2015 в 12:27.
Аватар вне форума Ответить с цитированием
Старый 27.05.2015, 12:29   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

а1,б1,с1 и а2,в2,с2-направляющие вектора, а х,у-точки?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 27.05.2015, 12:43   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Откуда у прямой на плоскости трехмерный направляющий вектор? Это общее уравнение прямой. Его можно привести к каноническому виду, и из него получить направляющий вектор если нужен зачем-то
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2015, 20:58   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, возможно искал плохо и натыкался не на то, что нужно, но я ничего не понял в трехмерке.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 29.05.2015, 14:14   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Это для одного вектора, то же самое для второго, а как зная направляюшие проверить пересекаютвя ли они?
Изображения
Тип файла: jpg 2015-05-29_13-37-55.jpg (33.9 Кб, 127 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 29.05.2015, 14:54   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В пространстве две прямые относительно друг друга могут быть:
1. Совпадать
2. Параллельны
3. Пересекаться
4. Скрещиваться

http://mathhelpplanet.com/static.php...v-prostranstve
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.05.2015, 15:09   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

А как из одного метода класса вытащить три результата ?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 29.05.2015, 15:22   #9
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Заготовка
Код:
#define _PI 3.14

struct point { double x,y,z; };

struct line
{
double p,q,r;
struct point* pp;
line(struct point* p1, struct point* p2) {}
int cross(struct line* l) 
{ 
double cosf = p * l->p + q * l->q + r * l->r;
double u = acos(cosf);
double ru = u * 180.0 / _PI;
if ( ru == 0) return 1;
else if (ru == 90) return 2;
else return 3; 
}
};

void main()
{

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 29.05.2015, 15:31   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо за заготовку, но задание не уточнил, там нужно описать класс, метод cross булевый результат возвращает, не увидел этого.

но при каких параметрах трех направляющих будет возвращаться истина/лож?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны уравнения прямых. Выяснить, какие из этих прямых перпендикулярны ( СИ++ ) Lena97 Помощь студентам 1 17.11.2014 12:55
Проверка на пересечение отрезков. Оптимизация _PROGRAMM_ Помощь студентам 9 26.07.2013 12:44
Проверка/установка параллельности прямых andri Общие вопросы C/C++ 1 03.12.2011 15:22
Пересечение 2 прямых на плоскости не могу найти. Дима я Общие вопросы C/C++ 3 22.05.2011 12:30