![]() |
|
![]() ![]() ![]() |
|
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Для заполнения вектора Х значениями нужен еще вектор нагрузок.
Вектор сечений еще нужно задать, а задается он функцией класса Span. Вот тут и выбор варианта - либо пользование setX для работы напрямую с вектором X класса Diagram, либо создание временного вектора внутри функции createXSet, заполнении его значениями, а потом копирование в вектор Х Diagram. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
Span то тут при чем ? он лишь источник данных, а не активный участник..
то есть третьего варианта не дано ? |
||||
|
|||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
В спан содержится указатель на вектор нагрузок, необходимый для формирования Х. Размещать этот указатель в объекте Diagram нелогично, потому что он представляет собой хранилище результатов расчета. В данной системе классов другого варианта не вижу. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
ну, а span передается диаграме, для формирования ее данных.. в чем проблема то ? |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Тут уже обратная проблема, напрямую не обратиться к важным параметрам - длина пролета и вектор нагрузок объекта Span при формировании вектора Х, хотя это проще, чем косвенно обращаться к вектору Х из функции объекта Span. При этом остается проблема доступа ко всем трем векторам X,M,Q из других функций. То же рисование. Или предлагаете рисование объявить методом класса Diagram? Но это нелогично, потому что Diagram - это хранилище результатов расчета, а рисунок - это графическое отображение результатов расчета. |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
так может стоит над этой проблемой подумать ? кстати что мешает напрямую обратиться ?
не вижу проблемы? сформулируйте интерфейс так, чтоб это не было проблемой.. не важно.. зависит от модели "рисовальщика"..
да, если нужно отделить данные от вида, то рисовальшик должен быть отдельным ![]() Добавлено через 3 минуты и 15 секунд а кажись понял.. Вам мешает слово protected ? как самый простой вариант, откройте возврат константной ссылки на него ![]() Добавлено через 4 минуты и 20 секунд раз существуют понятия, которые используются более чем в одном месте, значит должен быть соответствующий тип с нужным интерфейсом .. Добавлено через 5 минут и 9 секунд для вектора можно затайпдефить std::vector, а можно написать свою обертку, если требуется более жесткие гарантии.. |
||||||
|
|||||||
Нитонисе |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
То, что и длина и вектор нагрузок protected в классе Span.
Сделать эти вектора public?
Не понял. Добавлено через 7 минут и 20 секунд
Опять не понял.
И это тоже не понял) |
||||||||||
|
|||||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
вариантов реализаций куча.. зависит от требований пролета предъявляемых к хранимому вектору.. ну самый самый простой вариант, устанавливать весь вектор нагрузки за один раз, т.е интерфейс будет представлять SetVector(), GetVector() второй вариант не хранить вектор в пролете, а отдавать ему только для расчета моментов.. есть и другие варианты, но для этой задачи будут избыточны.. Добавлено @ 21:05 а открыть на чтение - это vector const& get_vector() { return m_vector; } Добавлено @ 21:06 так как вектор нагрузки фактически не принадлежит спану, а устанавливается на него "голосую" за второй вариант.. ![]() Это сообщение отредактировал(а) mes - 15.11.2010, 21:35 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
еще вопрос, нагрузка может быть смежной, т.е лежать более чем на одном спане ?
и диаграмма одного спана, как нибудь зависит от состояния другого спана ? Добавлено через 3 минуты и 55 секунд и диаграмма это в принципе конечная цель ? т.е. задаете балку, сколько в ней спанов, ставите опоры прикладываете нагрузку... и получаете диаграмму и другие моменты, которые отображаете юзеру ? Добавлено через 8 минут и 48 секунд спаны и балка представлены в двумерном варианте статично или полиморфно ? нагрузка нужна только для вычисления крайних моментов на опорах, или для эпюры , мах/мин, тоже ? или график строиться исходя из значений крайних моментов ? |
|||
|
||||
Нитонисе |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Нет.
Впринципе зависит, но эта зависимость определяется на стадии вычисления опорных моментов. Далее эти опорные моменты записываются в переменные М1 и М2 объектов класса Span и вычисление внутренних усилий в спане уже от смежных с ним спанов никак не зависит. Да.
Да.
Не совсем понял.
Для того чтобы определить макс и мин моменты нужно тупо перебрать все значения вектора М, для этого естественно нагрузка не нужна. Но есть один нюанс - максимальный момент может попасть на координату спана, не включенную в вектор Х, то есть потерянный для расчета. Для того, чтобы выяснить, потеряли ли мы такой момент - нужно проанализировать вектор Q, тут нагрузка нам также не нужна. А вот если анализируя эпюру Q выяснили, что у нас имеется потерянный момент (экстремум диаграммы М), то нужно вычислить координату этого экстремума, вот тут уже нам понадобится нагрузка. Далее, имея координату максимального момента, выполняем функцию типа getM(int X), где Х - координата спана и получаем искомый максимальный момент. Правда найденный момент не всегда будет максимальным, но всегда будет значением экстремума функции. На картинке, которую я выкладывал, во втором пролете есть такой экстремум, но как видно - он не максимальный. Только после этих вычислений мы приступаем к перебору значений вектора М, а также не забываем проверить и экстремальный момент для вычисления Ммах, это простой перебор и нагрузка тут не нужна. Добавлено через 2 минуты и 8 секунд Вычисление опорных моментов - это расчет более высокого уровня, там оперируем всеми спанами, всей нагрузкой. Вычисление же пролетных моментов (вектор М) - это уже локальная задача отдельно взятого спана с его нагрузкой. |
||||||||||
|
|||||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
бывают разновидности пролетов или балок ? или различие только в опорах и нагрузке ? Добавлено @ 11:08 не до конца понял, имея M1 и M2 (моменты на опорах) можно построить эпюру или еще что то надо ? (ну естественно интервал и длина пролета у нас есть) Добавлено через 7 минут и 7 секунд
т.е без знаний балки нам не обойтись.. Это сообщение отредактировал(а) mes - 16.11.2010, 11:08 |
|||
|
||||
Нитонисе |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Вообще говоря для пролета (Span) не важны и опоры. Один пролет от другого отличается длиной, вектором нагрузок и опорными моментами. Знать о том какие у нас опоры важно на стадии обсчета всей балки при определении опорных моментов.
Надо еще нагрузка. Я вот думаю, может сечения балки тоже выделить в класс
из функционала - предоставление информации о своих данных... или это уже лишнее |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
и так у нас есть..
входные данные - то что может изменять пользователь : балка состоящая из пролетов вектор нагрузки для каждого пролета интервал для эпюры выходные - то что получается в результате расчетов : моменты (крайние , мин, макс, и эпюры ) примерно так ? ничего важного не упущено ? Добавлено через 4 минуты и 8 секунд
как класс это лишнее, а вот как структуру данных вполне.. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Примерно так. Результаты расчетов хранятся в Diagram - это точки пролетов, где считались усилия, собственно сами эти усилия, а также координаты экстремума эпюры М (если таковой имеется) и само значение момента в точке экстремума. Ну и вычленение максимальных и минимальных значений внутренних усилий. Крайние моменты как таковые не выделяются, они войдут в эпюру М как перый элемент и последний. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
ну вот не усложняйте тогда себе жизнь и отделите котлет от мух ..
вот например такой набросок интерфейса :
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |