Russian Qt Forum
Ноябрь 27, 2024, 23:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Программа с векторами. Помогите доделать.  (Прочитано 9477 раз)
Hank0098
Гость
« : Июнь 10, 2013, 22:18 »

Есть программа, которая выполняет действия с векторами на плоскости(умножение, вычитание, суммирование), При этом графически все отображает(рисует вектора). Проблема в том, что вектору (направленная прямая, которая состоит из двух точек, начала и конца) можно задать только его конец, т.е начало вектора всегда точка с координатами (0;0), а задать можно только точку конца вектора.

Помогите пожалуйста, отблагодарю, не обижу Строит глазки

ссылка на прогу:
http://www.ex.ua/view/62510997
« Последнее редактирование: Июнь 10, 2013, 22:20 от Hank0098 » Записан
mutineer
Гость
« Ответ #1 : Июнь 10, 2013, 22:23 »

так а с чем помочь?

З.Ы. перепакуй файл в zip
Записан
Hank0098
Гость
« Ответ #2 : Июнь 10, 2013, 22:59 »

файл открывается любым архиватором

добавь в скайпе

girya88
Записан
Bepec
Гость
« Ответ #3 : Июнь 10, 2013, 23:01 »

Ух ты, новый стандарт видимо придумал гений Улыбающийся любым архиватором открыть можно Веселый
Записан
Hank0098
Гость
« Ответ #4 : Июнь 11, 2013, 00:22 »

теперь в .rar
Записан
Hank0098
Гость
« Ответ #5 : Июнь 11, 2013, 02:16 »

нужно сделать, что бы вектору можно было задать две точки, а не одну только. Посмотри саму программу.
Записан
mutineer
Гость
« Ответ #6 : Июнь 11, 2013, 08:35 »

Как минимум нужно классу Vector добавить еще один QPoint (точку начала) и адаптировать все методы на работу с двумя точками
Записан
Hank0098
Гость
« Ответ #7 : Июнь 11, 2013, 09:25 »

кто сможет это сделать, добавляйте в скайпе. Обсудим все.
« Последнее редактирование: Июнь 11, 2013, 09:27 от Hank0098 » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
Q
« Ответ #8 : Июнь 11, 2013, 10:41 »

мда, изначально в проекте у вас полагалось что вектор исходит из центра координат.
ничего сложного не вижу в реализации, добавьте еще одну точку (начальную), и перепишите логику вычислений.
подсказка, в библиотеке Qt есть работа с векторами.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Июнь 11, 2013, 10:49 »

нужно сделать, что бы вектору можно было задать две точки, а не одну только. Посмотри саму программу.
Написано аккуратно, но классы построены неудачнно.
Код
C++ (Qt)
class Vector {
...
private:
   QPoint direction;
   size_t size;
   QColor color;
};
 
Вектор - хорошо известное понятие, это просто массив значений. Хотя вектор и точка - разные "сущности", но по данным они неотличимы, поэтому на мой взгляд хорошо определить вектор так
Код
C++ (Qt)
typedef Vector2D QPoint;
 
Ну или воспользоваться готовым классом QVector2D. Члены size и color никакого отношения к вектору не имеют, да и size не целое число. Для операций с парой точек нужен др класс напр
Код
C++ (Qt)
class Line {
..
QPoint p0, p1;
QColor color;
};
Или в духе птенцов ассыстента
Код
C++ (Qt)
class ColorLine : public QLine {
..
QColor color;
};
Конечно Вы можете сказать "а вот мне нужен такой вектор" (переделывать не хочется). Ну как, можно свинью назвать коровой, но она не станет давать молоко  Улыбающийся
Записан
mutineer
Гость
« Ответ #10 : Июнь 11, 2013, 10:55 »

Вектор - хорошо известное понятие, это просто массив значений. Хотя вектор и точка - разные "сущности", но по данным они неотличимы

А как насчет особенностей предметной области?

Цитировать
Вектор в планарной евклидовой геометрии (связанный вектор) — упорядоченная пара точек, одна из которых называется началом, вторая — концом вектора.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Июнь 11, 2013, 11:22 »

А как насчет особенностей предметной области?

Цитировать
Вектор в планарной евклидовой геометрии (связанный вектор) — упорядоченная пара точек, одна из которых называется началом, вторая — концом вектора.
А кто Вас заставляет делать "связанный"? Улыбающийся Какие разумные операции над ним возможны? Напр как Вы будете складывать/вычитать такие вектора? Бросать exception если точки не совпадают Улыбающийся Переопределяя известное понятие по-другому Вы наживаете кучу совершенно ненужных забот. 
Записан
mutineer
Гость
« Ответ #12 : Июнь 11, 2013, 11:30 »

Так, стоп, ты сказал что вектор это массив значений и все. И от точки он данными не отличается. Но в случае евклидовой геометрии это малость не так, там вектор это пара точек

К тому же
Цитировать
Результатом операций со связанными векторами принимается вектор, начальная точка которого совпадает с начальной точкой первого слагаемого при сложении векторов

Если точки не совпадают, то второе слагаемое можно просто перенести в нужную точку. Вычитание реализуется через сложение.
Записан
Hank0098
Гость
« Ответ #13 : Июнь 11, 2013, 11:52 »

так кто сможет мне помочь с решением этой проблемы?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Июнь 11, 2013, 12:23 »

Так, стоп, ты сказал что вектор это массив значений и все. И от точки он данными не отличается. Но в случае евклидовой геометрии это малость не так, там вектор это пара точек
Это в точности так. Все что написано для векторов в Qt, std:: и еще в десятках мест - все это чисто Евклидова геометрия, для другой (напр на сфере) это работать не будет.
Цитировать
3 + 1 = 4 ?
Неверно, потому что 4 - это дважды два!
В действительности и то и то - Евклидова геометрия, просто представление вектора в виде 2 точек неудачно, ну так никто и не делает
Если точки не совпадают, то второе слагаемое можно просто перенести в нужную точку.
Тогда a + b != b + a. Зачем городить такую фигню?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.201 секунд. Запросов: 23.