Russian Qt Forum
Ноябрь 26, 2024, 10:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Задачки
Страниц:
1
...
7
8
[
9
]
10
11
...
20
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Задачки (Прочитано 200203 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Задачки
«
Ответ #120 :
Июль 21, 2010, 18:34 »
Цитата: m_ax от Июль 21, 2010, 18:23
Как решается напишу позже, когда погуляю с собачкой)
Ну, помощь консультантов не запрещена
Записан
SimpleSunny
Гость
Re: Задачки
«
Ответ #121 :
Июль 21, 2010, 21:19 »
Цитата: Igors от Июль 21, 2010, 16:31
Геометрия
Есть точка P (x. y, z) лежащая на некоторой поверхности. Нормаль (перпендикуляр) к поверхности задана вектором N (x, y, z) длина этого вектора = 1. Есть лампочка в точке L (x. y, z)
Используя правило "угол падения = углу отражения" найти вектор R (x. y, z) - направление в котором точка P отразит свет
Нам даны координаты точек L, P и координаты вектора N?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Задачки
«
Ответ #122 :
Июль 21, 2010, 21:48 »
Цитата: SimpleSunny от Июль 21, 2010, 21:19
Нам даны координаты точек L, P и координаты вектора N?
Да, и вектор N нормирован (его длина = 1)
Записан
SimpleSunny
Гость
Re: Задачки
«
Ответ #123 :
Июль 21, 2010, 22:21 »
Странно, что неправильно, у меня получилась такая же формула
R = L + 2*k*N
L = (x
p
-x
l
; y
p
- y
l
; z
p
- z
l
)
k = N*(-L) (скалярное произведение)
«
Последнее редактирование: Июль 21, 2010, 22:24 от SimpleSunny
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Задачки
«
Ответ #124 :
Июль 21, 2010, 22:24 »
Я вернулся)
Цитировать
Ну, помощь консультантов не запрещена
Океюшки)
И так:
1) все вектора обозначаются жирным шрифтом; абсолютная величина вектора-обычным шрифтом.
2) для удобства введём вектор
A
=
L
-
P
и соответствующий ему единичный вектор
e
A
=(
L
-
P
)/|
L
-
P
|
3) векторное произведение будем обозначать как: [
a
,
b
] (
a
и
b
какие-либо два вектора)
4) скалярное произведение будем обозначать как: (
a
,
b
)
5) напомню правило "бац минус цаб" для двойного векторного произведения:
[
a
[
b
,
c
]]=
b
*(
a
,
c
)-
c
*(
a
,
b
)
6)
n
r
- единичный вектор указывающий направление отражённого света
Далее буду расписывать всё оч подробно, поэтому получится оч длинно)
1) |[
n
,
A
]| = A*sin(phi), где phi - угол между вектором
A
и вектором
n
2) [
n
,
A
] - вектор коллинеарен вектору [
n
r
,
A
], в силу закона отражения) (на самом деле, угол отражения, вовсе не равен углу падения - эт приближение геометрической оптики, ну да фиг с этим)
3) |[
n
r
,
A
]| = A*sin(2*phi) = 2*A*sin(phi)*cos(phi) (в силу закона отражения)
4) следовательно должно выполняться:
[
n
,
A
]*2*cos(phi) = [
n
r
,
A
];
5) заметим, что cos(phi) = (
n
,
e
A
)
6) умножим векторно левую и правую части ур. 4. на вектор
n
:
[
n
[
n
,
A
]]*2*cos(phi) = [
n
[
n
r
,
A
]]
7) воспользуемся правилом "бац минус цаб":
{
n
*(
n
,
A
)-
A
*(
n
,
n
)}*2*cos(phi) =
n
r
*(
n
,
A
)-
A
*(
n
,
n
r
)
очевидно что: (
n
,
n
) = 1; (
n
,
n
r
) = cos(phi)
9) следовательно получаем:
n
*(
n
,
A
)*2*cos(phi) - 2*
A
*cos(phi) =
n
r
*(
n
,
A
)-
A
*cos(phi)
10) поскольку (
n
,
A
) = A*cos(phi); cos(phi) = (
n
,
A
)/A
11) подставим выражение для cos (10) в (9):
n
r
= 2*
n
*(
n
,
A
)/A -
A
/A
12) вспоминая, что такое
e
A
получаем окончательный ответ:
n
r
= 2*
n
*(
n
,
e
A
) -
e
A
Вы ещё не согласны? /*тогда мы идём к Вам))*/
«
Последнее редактирование: Июль 22, 2010, 10:24 от m_ax
»
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Задачки
«
Ответ #125 :
Июль 22, 2010, 02:28 »
Цитата: SimpleSunny от Июль 21, 2010, 22:21
Странно, что неправильно, у меня получилась такая же формула
R = L + 2*k*N
L = (x
p
-x
l
; y
p
- y
l
; z
p
- z
l
)
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
Сообщений: 2095
Re: Задачки
«
Ответ #126 :
Июль 22, 2010, 12:16 »
Цитировать
После (плодотворной) прогулки с собачкой ошибка была исправлена, хотя 12 пунктов совсем не нужны там где можно обойтись теоремой Пифагора
)) Однако, как показывает опыт, далеко не все задачки можно решить с помощью "теоремы Пифагора")
Кстати, вот вспомнилась одна задачка, которую можно решить двумя способами: по "теореме Пифагора" и чуть более сложным образом)
Три букашки находятся в вершинах равностороннего треугольника со стороной a. В некоторый момент времени они одновременно начинают двигаться с постоянной по модулю скоростью v, следующим образом:
букашка №1 бежит за букашкой №2;
букашка №2 безит за букашкой №3;
букашка №3 бежит за букашкой №1.
Вопрос: Через какое время t они встретятся?
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Ubuntu_linux
Гость
Re: Задачки
«
Ответ #127 :
Август 20, 2010, 22:29 »
Тест Бенета вновь выходит на арену в обновленном виде, теперь чтобы пройти тест нужно лишь скачать архив с программой (5,17 МБ) для виндовс и после распаковки можно сразу же запускать тест и проходить его.
Наслаждайтесь!
Скачать!
Программа бесплатная и с открытым кодом, то есть каждый может пересмотреть как написана программа!
«
Последнее редактирование: Август 20, 2010, 22:37 от Ubuntu_linux
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Задачки
«
Ответ #128 :
Октябрь 03, 2010, 00:40 »
Как то у нас проходила неделя французского кино и меня вытащили на один из фильмов, названия не помню, но запомнилась одна игра)
Суть игры следующая:
Играют двое.
Имеется 4 ряда (пусть будет спичек, хотя не важно чего, но в фильме это были спички), причём в первом ряду одна спичка, во втором 3 спички, в третьем 5 спичек и в четвёртом 7 спичек (типа пирамидка).
Каждый игрок за один ход может взять любое число спичек, но только с одного ряда. Затем ходит второй и тож может взять любое число спичек но только с одного какого-либо ряда. Проигрывает тот, кто забирает последнюю спичку.
Хочу написать маленькую програмку, и пока в основной проге проходят расчёты (считает долго) позабавить тем самым пользователя))
Подскажите как енто лучше сделать))
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
spectre71
Гость
Re: Задачки
«
Ответ #129 :
Октябрь 03, 2010, 17:17 »
Цитата: ilot от Январь 11, 2010, 04:26
№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
Гость
Re: Задачки
«
Ответ #130 :
Октябрь 03, 2010, 17:51 »
Модефицированная задача
№5
Дан отрезок, каждая точка которого имеет один из двух возможных цветов (например, белый/черный). Раскраска - абсолютно любая.
Верно ли, что на данном отрезке всегда существует последовательность из N различных точек одного цвета, при этом расстояния между последовательными точками равны?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Задачки
«
Ответ #131 :
Октябрь 04, 2010, 16:43 »
Ну блин и задачки пошли заумные
На мой взгляд доказательство чего-то "на бесконечной прямой" имеет мало смысла для инженера-практика. Вот широко известная - но весьма полезная задачка:
В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?
Записан
SimpleSunny
Гость
Re: Задачки
«
Ответ #132 :
Октябрь 04, 2010, 17:07 »
Эта уж слишком известная (=
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Задачки
«
Ответ #133 :
Октябрь 04, 2010, 17:56 »
Цитата: SimpleSunny от Октябрь 04, 2010, 17:07
Эта уж слишком известная (=
Зато полезная
Пример: нужно "самплить" текстуру чтобы получить гладкий результат. Всего есть (предположим) 19x19 точек. Осреднить все 19 * 19 = 361 накладно. Сколько точек надо выбрать (случайно) чтобы получить приемлемый результат? Вряд ли кто-то ответит - дело свалится в предметную область - и в конце концов заглохнет. А ведь задача та же самая (и даже числа те же). Ну и вообще:
Цитировать
- у меня проездной..
- предъявляем!
Обоснованный ответ и расчеты please
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Задачки
«
Ответ #134 :
Октябрь 05, 2010, 08:23 »
Цитата: Igors от Октябрь 04, 2010, 16:43
В классе 30 учеников (одногодки). Какова вероятность того что хотя бы двое из них родились в один день?
У меня получилось 0,0024 не знаю правильно ли посчитал, год считал не високосным.
Записан
Страниц:
1
...
7
8
[
9
]
10
11
...
20
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...