![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
julia_lisha |
![]() ![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
Здравствуйте!!!!
задание по комп.графике...... может кто подскажет литературу по данной теме) Задание: комната 5 на 5 метров. в этой комнате в самом центе расположен стол. на столе расположенны пронумерованные прямоугольные листочки бумаги. листочки склажываются на стол в порядке их нумерации: 1-2... стол прямогольный его размеры Тх и Ту. центр слола расположен ы центре комнаты. также известны размеры листочков по осям Х и У равные Sxi и Sуi (i-номер листочка), расположение центра каждого листочка на столе (две координаты Dxi и Dуi относительно левого нижнего угла стола). после каждый листочек поворачивается на угол ai относительно своего центра(если угол больше - поворачиваем по часой стрелке иначе против). порядок листочков при этом не меняется. Затем таким же образом поворасивается стол на угол b. про листочки известно что каждый из них разделен на 4 одинаковые прямоугольные области - A,B,C,D. теперь с потолка падает капля и попадает на стол, возможно попадая на некоторые листочки. предполается что капля бесконечно малого размера (имеется в вид протяженность по осям X и У) но тем не менее,способна промочить сколь угодно листочков. про капля известны ее координаты Cx, Сув момент падения относительно левого нижнего угла комнаты. необходимо определить на какие именно листочки попадет капля в каой поледовательности она их намочит, а также для каждого промоченногго листочка необходимо указать в какую из его обласстей A,B,C,D попала капля. (Тх,Ту,B )-(192,120,62) (Sx1,Sy1)-(69,58) (Dx1,Dy1,a1)-(145,88,10) (Sx2,Sy2)-(29,35) (Dx2,Dy2,a2)-(107,77,66) (Sx3,Sy3)-(79,39) (Dx3,Dy3,a3)-(17,80,86) (Sx4,Sy4)-(53,67) (Dx4,Dy4,a4)-(90,77,56) (Sx5,Sy5)-(57,41) (Dx5,Dy5,a5)-(90,57,78) (Cx,Cy)-(270,253) |
![]() ![]() |
Vahappaday |
![]()
Сообщение
#2
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
Хм... Во-первых, вот что выясним. Листочек когда поворачивается, он ведь другие не затрагивает? Только своё положение меняет, то всё довольно просто.
Выяснять порядок промокания тогда не нужно: если намочено несколько листочков, то первыми намокнут те, которые положили последними. Теперь о преобразованиях. Из преобразований понадобится поворот вокруг точки: формула следующая (IMG:http://img706.imageshack.us/img706/6033/codecogseqn.gif) x', y' - новые координаты, x, y - старые, alpha - угол поворота, cx, cy - центр поворота Ещё я бы хранил что-то типа "векторов ориентации" для этих листочков, их тоже надо поворачивать вокруг оси а затем и вместе со столом. Изначально, как я понял, они у всех одинаковые и направлены, например в направлении (0;1). Потом по ним можно будет определить попадание капли в одну из областей. Удобно будет всё привести к одной системе координат. Я бы взял за её начало центр стола. Осталось лишь определить, попала ли точка в тот или иной листочек. Предлагаю сначала определить возможную область попадания. То есть, найти угол между вектором направления листочка, а уж затем проверять, согласовываясь с длиной и шириной листка. Литературы, к сожалению, не знаю, у нас очень хороший преподаватель по КГ, мы у него всё узнавали, что непонятно было. |
julia_lisha |
![]()
Сообщение
#3
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
о, спасибо огромное!!!
теперь задание на много стало понятнее, но все же.... с чего необходимо начать? (IMG:style_emoticons/default/blush.gif) и как выполнить Цитата Ещё я бы хранил что-то типа "векторов ориентации" для этих листочков, их тоже надо поворачивать вокруг оси а затем и вместе со столом. Изначально, как я понял, они у всех одинаковые и направлены, например в направлении (0;1). Потом по ним можно будет определить попадание капли в одну из областей. это выполняется с помощью каких то формул? вышло так, что дали просто лекцию....которую я никак не могу связать с данным примером, если необходимо могу предоставить..... |
Vahappaday |
![]()
Сообщение
#4
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
1. Выбрать систему отсчёта (как я уже сказал - центр стола)
2. Записать новые координаты центров листков (IMG:http://img257.imageshack.us/img257/9434/equationx.png) //прошу прощения, тут вместо Dx, Dy должны быть Tx и Ty соответственно. 3. Для каждого листка задать вектор ориентации (0;1). 4. Повернуть каждый листок на свой угол, то есть ту формулу, что я написал выше, надо применить к векторам поворота. В качестве центра - взять координаты центра каждого листка в новой системе координат. 5. Применить ко всем точкам и ко всем векторам формулу поворота относительно точки (0; 0) (центр стола) 6. Рассчитаем новую координату точки падения капли - отнимем от x и к y по 2,5 (половина длины/ширины комнаты) После этих 5 пунктов мы имеем записанные в одной новой системе координат с центром в середине комнаты: а. Координаты центров листков. б. Векторы ориентации листков. в. Координаты падения капли г. Размеры всех листков (естественно, никуда не поменялись) Определить, в какую область попала точка, если вообще попала, можно из формул скалярного и векторного умножения Пусть a - вектор ориентации, b - вектор из центра листка к координате капли. Тогда (IMG:http://img810.imageshack.us/img810/5849/equation.png), где x - векторное умножение, * - скалярное - если нужно, дам формулы для двухмерного случая. Их же используем для проверки попадания в листок, капля попала в листок, если: b*sin(a^B ) <= Sx b*cos(a^B ) <= Sy Как-то так, будут вопросы - обращайтесь) |
julia_lisha |
![]()
Сообщение
#5
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
большое-большое спасибо, прямо огромное, за подробное описание)
к сожалению сейчас не будет возможности иметь доступ в иннет, но 27 числа я обязательно отпишусь....так что не теряйте....и возможно появятся вопросы... |
julia_lisha |
![]()
Сообщение
#6
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
(IMG:style_emoticons/default/blush.gif) а вот и вопросы......
начнем по пунктам: 1. (96,60)--центр стола 2.Записать новые координаты центров листков я так поняла в формуле под x y мне брать Dxi и Dyi-(расположение центра каждого листочка на столе, относительно левого нижнего угла стола),если так, то Цитата x' 241 = y' 148 это координаты для первого листочка и т.д. до 5 листочка 3. Для каждого листка задать вектор ориентации (0;1). я так понимаю этот пункт остается без изменения 4. Повернуть каждый листок на свой угол, то есть ту формулу, что я написал выше, надо применить к векторам поворота. В качестве центра - взять координаты центра каждого листка в новой системе координат. формула поворот вокруг точки? Цитата cx, cy - центр поворота хм...чет у меня нет таких переменных....или я просто их не вижу?! 5. Применить ко всем точкам и ко всем векторам формулу поворота относительно точки (0; 0) (центр стола) хм или сюда формулу поворот вокруг точки?)))))) дальше пока нет смысла спрашивать, пока это все не сделанно.... (IMG:style_emoticons/default/blush.gif) заранее спасибо, жду ответа |
Vahappaday |
![]()
Сообщение
#7
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
Потихоньку буду добавлять комментарии:
Во 2 пункте у меня ошибка, там вместо + нужен -. Если у точки была координата 96; 60, то она должна стать 0;0, а не 192; 120 Ещё один мой недочёт - векторы поворота можно вертеть относительно любой точки. Вращаем относительно 0;0, и в 4, и в 5 пункте Даже не относительно любой, а именно относительно 0;0)) А поскольку мы выбрали новую систему отсчёта, то и точки в 5 пункте мы будем вращать относительно 0;0. |
julia_lisha |
![]()
Сообщение
#8
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
если заменить 2 пункт, то....
координата точки Dx1,Dy1 (145,88) Dx1,Dy1-расположение центра каждого листочка на столе, относительно левого нижнего угла стола. или тут надо брать (Sx1,Sy1)-(69,58) - размеры листочков по осям Х и У?! Цитата x' 49 = y' 28 Цитата Если у точки была координата 96; 60 это центр стола.... |
Vahappaday |
![]()
Сообщение
#9
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
именно так, теперь x' и y' верные
Теперь надо поворачивать. Сначала каждый листочек по отдельности, затем все вместе |
Vahappaday |
![]()
Сообщение
#10
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
http://slil.ru/29501550 - вот расчёт первого этапа - все листочки и стол повернуты. Будет желание, можно проанализировать и падение капли)
|
julia_lisha |
![]()
Сообщение
#11
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
(IMG:style_emoticons/default/blush.gif) спасиб большое!!!
Цитата Будет желание, можно проанализировать и падение капли Да это уже не моя инициатива....мне просто это не обходимо это сделать....)))) (IMG:style_emoticons/default/blush.gif) и я снова жду твой помощи.... |
Vahappaday |
![]()
Сообщение
#12
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
Попробуй сама, полезней будет, будет совсем туго - посчитаю
|
julia_lisha |
![]()
Сообщение
#13
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
конечно сама(IMG:style_emoticons/default/smile.gif) просто так на всякий случай....чтобы ты меня проверял
|
julia_lisha |
![]()
Сообщение
#14
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
Цитата Определить, в какую область попала точка, если вообще попала, можно из формул скалярного и векторного умножения Пусть a - вектор ориентации, b - вектор из центра листка к координате капли. Их же используем для проверки попадания в листок, капля попала в листок, если: b*sin(a^B ) <= Sx b*cos(a^B ) <= Sy a - вектор ориентации мне нужно взять: вектора ориентации после поворота листков или вектора ориентации после поворота стола ? и что то с b не разберусь...эту переменную снова считать? только пока не решай за меня,хочу сама (IMG:style_emoticons/default/smile.gif) заранее, спасибо |
Vahappaday |
![]()
Сообщение
#15
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
a - вектор ориентации после всех поворотов
b - это совсем не та B, что в начале. В начале у нас B - это угол поворота стола в градусах. Теперь же Цитата b - вектор из центра листка к координате капли , естественно, центр листка брать после всех преобразований.Как вычислять новые координаты капли, я написал, только отнимать там надо не по 2,5, видимо, а по 250 (будем считать, что всё остальное дано у нас в сантиметрах). |
julia_lisha |
![]()
Сообщение
#16
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
Цитата a - вектор ориентации после всех поворотов о, с этим я разобралась (ВОx2, ВОy2) Цитата b - вектор из центра листка к координате капли так теперь с этим, координаты капли мне известны (Cx,Cy)-(270,253) Цитата центр листка брать после всех преобразований. значит после поворота стола (x2, у2) все верно? |
Vahappaday |
![]()
Сообщение
#17
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
Всё, кроме координат капли.
Координаты будут (20,3) - относительно центра стола и комнаты. |
julia_lisha |
![]()
Сообщение
#18
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
а можно формулу для подсчета координаты капли?
|
Vahappaday |
![]()
Сообщение
#19
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
x'=x-250
y'=y-250 Вычитаем по половине длины и ширины комнаты |
julia_lisha |
![]()
Сообщение
#20
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
ммм, ясно (IMG:style_emoticons/default/smile.gif)
теперь на счет формулы.... Цитата Определить, в какую область попала точка, если вообще попала, можно из формул скалярного и векторного умножения там две формулы COS и SIN можно брать любую? Цитата b - вектор из центра листка к координате капли смотри у меня получается b это (Cx,Cy) и (x2, у2), чтобы преобразовать две переменные в одну ((IMG:style_emoticons/default/cool.gif) надо еще какую то использовать формулу или как? (IMG:style_emoticons/default/unsure.gif) еще раз спасибо (IMG:style_emoticons/default/blush.gif) |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 19:36 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru