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

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

Страниц: 1 ... 7 8 [9] 10 11 ... 20   Вниз
  Печать  
Автор Тема: Задачки  (Прочитано 200203 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #120 : Июль 21, 2010, 18:34 »

Как решается напишу позже, когда погуляю с собачкой)
Ну, помощь консультантов не запрещена  Улыбающийся
Записан
SimpleSunny
Гость
« Ответ #121 : Июль 21, 2010, 21:19 »

Геометрия

Есть точка P (x. y, z) лежащая на некоторой поверхности. Нормаль (перпендикуляр) к поверхности задана вектором N (x, y, z) длина этого вектора = 1. Есть лампочка в точке L (x. y, z)

Используя правило "угол падения = углу отражения" найти вектор R (x. y, z) - направление в котором точка P отразит свет

Нам даны координаты точек L, P и координаты вектора N?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #122 : Июль 21, 2010, 21:48 »

Нам даны координаты точек L, P и координаты вектора N?
Да, и вектор N нормирован (его длина = 1)
Записан
SimpleSunny
Гость
« Ответ #123 : Июль 21, 2010, 22:21 »

Странно, что неправильно, у меня получилась такая же формула Улыбающийся

R = L + 2*k*N
L = (xp-xl; yp - yl; zp - zl)
k = N*(-L) (скалярное произведение)
« Последнее редактирование: Июль 21, 2010, 22:24 от SimpleSunny » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #124 : Июль 21, 2010, 22:24 »

Я вернулся)
Цитировать
Ну, помощь консультантов не запрещена

Океюшки)

И так:
1) все вектора обозначаются жирным шрифтом; абсолютная величина вектора-обычным шрифтом.
2) для удобства введём вектор A=L-P и соответствующий ему единичный вектор eA=(L-P)/|L-P|
3) векторное произведение будем обозначать как: [a,b] (a и b какие-либо два вектора)
4) скалярное произведение будем обозначать как: (a,b)
5) напомню правило "бац минус цаб" для двойного векторного произведения:
[a[b,c]]=b*(a,c)-c*(a,b)
6) nr - единичный вектор указывающий направление отражённого света

Далее буду расписывать всё оч подробно, поэтому получится оч длинно)

1) |[n,A]| = A*sin(phi), где phi - угол между вектором A и вектором n
2) [n,A] - вектор коллинеарен вектору [nr,A], в силу закона отражения) (на самом деле, угол отражения, вовсе не равен углу падения - эт приближение геометрической оптики, ну да фиг с этим)

3) |[nr,A]| = A*sin(2*phi) = 2*A*sin(phi)*cos(phi)  (в силу закона отражения)

4) следовательно должно выполняться:
[n,A]*2*cos(phi) = [nr, A];
5) заметим, что cos(phi) = (n,eA)
6) умножим векторно левую и правую части ур. 4. на вектор n:
[n[n,A]]*2*cos(phi) = [n[nr,A]]
7) воспользуемся правилом "бац минус цаб":
{n*(n,A)-A*(n,n)}*2*cos(phi) = nr*(n,A)-A*(n,nr)
Крутой очевидно что: (n,n) = 1;  (n, nr) = cos(phi)
9) следовательно получаем:
n*(n,A)*2*cos(phi) - 2*A*cos(phi) = nr*(n,A)-A*cos(phi)
10) поскольку (n,A) = A*cos(phi); cos(phi) = (n,A)/A
11) подставим выражение для cos (10) в (9):
nr = 2*n*(n,A)/A - A/A
12) вспоминая, что такое eA получаем окончательный ответ:
nr = 2*n*(n,eA) - eA

Вы ещё не согласны? /*тогда мы идём к Вам))*/

 
« Последнее редактирование: Июль 22, 2010, 10:24 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #125 : Июль 22, 2010, 02:28 »

Странно, что неправильно, у меня получилась такая же формула Улыбающийся

R = L + 2*k*N
L = (xp-xl; yp - yl; zp - zl)
k = N*(-L) (скалярное произведение)
У Вас правильно получилось. Смотрим чертеж (attachment). Оба вектора: P - L (свет, красный) и R (отраженный, синий) можно представить как сумму 2 векторов: вертикальный (проекция на нормаль N) и горизонтальный. Видно что горизонтальная компонента одна и та же, а вертикальные противоположны. Поэтому

R = (P - L) - vert * 2;

Направление вертикальной компоненты известно (это N) а длина ее = скалярному произведению, значит vert = N * dotProduct(P - L, N), итого имеем

R = (P - L) - N * dotProduct(P - L, N) * 2

Обычно все вектора исходят из точки P (которая шейдится). Если нарисовать вектор из P в L. то получилась бы наоборот: вертикальные компоненты равны, а горизонтальные противоположны. Тогда бы вышло

R = N * dotProduct(L - P, N) * 2 - (L - P)

Это то же самое что привел m_ax, но он поначалу ошибся в направлении вектора. После (плодотворной) прогулки с собачкой ошибка была исправлена, хотя 12 пунктов совсем не нужны там где можно обойтись теоремой Пифагора  Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #126 : Июль 22, 2010, 12:16 »

Цитировать
После (плодотворной) прогулки с собачкой ошибка была исправлена, хотя 12 пунктов совсем не нужны там где можно обойтись теоремой Пифагора 

)) Однако, как показывает опыт, далеко не все задачки можно решить с помощью "теоремы Пифагора")

Кстати, вот вспомнилась одна задачка, которую можно решить двумя способами: по "теореме Пифагора" и чуть более сложным образом)

Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.

Вопрос: Через какое время t они встретятся?

   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Ubuntu_linux
Гость
« Ответ #127 : Август 20, 2010, 22:29 »

 Целующий
Тест Бенета вновь выходит на арену в обновленном виде, теперь чтобы пройти тест нужно лишь скачать архив с программой (5,17 МБ) для виндовс и после распаковки можно сразу же запускать тест и проходить его.

Наслаждайтесь!

Скачать!




Программа бесплатная и с открытым кодом, то есть каждый может пересмотреть как написана программа!

« Последнее редактирование: Август 20, 2010, 22:37 от Ubuntu_linux » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #128 : Октябрь 03, 2010, 00:40 »

Как то у нас проходила неделя французского кино и меня вытащили на один из фильмов, названия не помню, но запомнилась одна игра)
Суть игры следующая:
Играют двое.
Имеется 4 ряда (пусть будет спичек, хотя не важно чего, но в фильме это были спички), причём в первом ряду одна спичка, во втором 3 спички, в третьем 5 спичек и в четвёртом 7 спичек (типа пирамидка).
Каждый игрок за один ход может взять любое число спичек, но только с одного ряда. Затем ходит второй и тож может взять любое число спичек но только с одного какого-либо ряда. Проигрывает тот, кто забирает последнюю спичку.

Хочу написать маленькую програмку, и пока в основной проге проходят расчёты (считает долго) позабавить тем самым пользователя))

Подскажите как енто лучше сделать))       
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
spectre71
Гость
« Ответ #129 : Октябрь 03, 2010, 17:17 »

№5. Дана прямая, каждая точка которой имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно случайная. Существует ли всегда на такой прямой отрезок, концы и середину которого составляют точки одного цвета?

Более обобщенное решение.
Данное решение действительно для любого отрезка, точки которого раскрашены в два цвета любым способом.
Дан отрезок, каждая точка которого имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно любая. Всегда существует на таком отрезке подотрезок, концы и середину которого составляют точки одного цвета?

1) Лемма. Если имеем две пары точек одного цвета и расстояния между точками в обоих парах равны, то точка находящаяся посередине между двумя крайними принадлежащими данным парам имеет тот же цвет.
то на отрезке образуемом двумя крайними принадлежащими данным парам точками, существует  подотрезок, концы и середину которого составляют точки одного цвета.

Док-во.
Кодировка: "0" черная, "1" белая, "." неизвестная, "-" отрезок длины L1, "*" отрезок длины L2
На примере двух черных пар имеем по условию:
0-.-0*.*0-.-0
Если поставим 0 вместо хотя бы одной ".", то получим искомый отрезок.
В обратном случае если ставим везде "1"
0-1-0*1*0-1-0
тоже получим искомый отрезок.
Лемма доказана.

2) Основное док-во. Возьмем любой отрезок принадлежащий исходному и разобьем его на 14 равных частей. Закодируем последовательность полученных разбиением точек "0" черная, "1" белая. Разделим нашу последовательность на 3-ки. Получим всего 5 троек.
Всего существует 8 различных возможных троек.

  a) Если встретилась одна из  "000" "111", случай тривиален.

  b) Для остальных. Достаточно 5 троек чтобы был верен один из следующих пунктов:
- Если встретилась "001" или "100" более 1 раза, поскольку имеем две пары белых точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "110" или "011" более 1 раза, поскольку имеем две пары черных точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "010" более 1 раза, поскольку имеем две пары белых точек удовлетворяющих лемме, то теорема доказана.
- Если встретилась "101" более 1 раза, поскольку имеем две пары черных точек удовлетворяющих лемме, то теорема доказана.
« Последнее редактирование: Октябрь 03, 2010, 17:38 от Spectre » Записан
spectre71
Гость
« Ответ #130 : Октябрь 03, 2010, 17:51 »

Модефицированная задача №5
Дан отрезок, каждая точка которого имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно любая.
Верно ли, что на данном отрезке всегда существует последовательность из N различных точек одного цвета, при этом расстояния между последовательными точками равны?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #131 : Октябрь 04, 2010, 16:43 »

Ну блин и задачки пошли заумные  Улыбающийся На мой взгляд доказательство чего-то "на бесконечной прямой" имеет мало смысла для инженера-практика. Вот широко известная - но весьма полезная задачка:

В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?
Записан
SimpleSunny
Гость
« Ответ #132 : Октябрь 04, 2010, 17:07 »

Эта уж слишком известная (=
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #133 : Октябрь 04, 2010, 17:56 »

Эта уж слишком известная (=
Зато полезная  Улыбающийся Пример: нужно "самплить" текстуру чтобы получить гладкий результат. Всего есть (предположим) 19x19 точек. Осреднить все 19 * 19 = 361 накладно. Сколько точек надо выбрать (случайно) чтобы получить приемлемый результат? Вряд ли кто-то ответит - дело свалится в предметную область - и в конце концов заглохнет. А ведь задача та же самая (и даже числа те же). Ну и вообще:

Цитировать
- у меня проездной..
- предъявляем!
Обоснованный ответ и расчеты please  Улыбающийся
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #134 : Октябрь 05, 2010, 08:23 »

В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?

У меня получилось 0,0024 не знаю правильно ли посчитал, год считал не високосным.
Записан
Страниц: 1 ... 7 8 [9] 10 11 ... 20   Вверх
  Печать  
 
Перейти в:  


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