Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Получение отражённого луча - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамический массив структур http://www.cyberforum.ru/cpp-beginners/thread942218.html
Здравствуйте. Нужна помощь. Не получается записать данные в массив структур. По логике вроде все правильно. 1. Создаем динамический массив структур 2. Обращаемся к первому эл. - записываем данные...
C++ Работа с пакетами по Ethernet-y Вообщем поставил вот себе какую задачу. Хочу перехватывать (копировать) пакеты и расшифровывать только три вещи.(От кого, кому, объем данных). Буду писать наверно на Qt 5. В реальной жизни... http://www.cyberforum.ru/cpp-beginners/thread942211.html
DLL не возвращает строку C++
Добрый день. Хочу создать DLL для использования в 1с. Пока получается только вернуть число, а нужно вернуть строку. Вызывается метод met4. Код: ExampleFS.cpp: // ExampleFS.cpp: реализация...
C++ Изображения, бинарные и текстовые файлы
Доброго времени суток. подскажите как можно получить из видео или картинки файл формата txt или dat ?? Вот пример, где пытаюсь вывести на экран инфу о картинке, но это что-то не то. Если изменить...
C++ Json Spirit и VS2012 http://www.cyberforum.ru/cpp-beginners/thread942126.html
Прошу помощи у знающих. Необходимо прикрутить Json Spirit к Visual Studio 2012. Сам Json брал отсюда: ...
C++ Динамический массив из char Скриншот с ошибкой int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, "Russian"); char * alphabet; int index = 0; for (char letter = 'A', index = 0; letter <= 'Z'; letter++,... подробнее

Показать сообщение отдельно
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181

Получение отражённого луча - C++

23.08.2013, 11:18. Просмотров 722. Ответов 7
Метки (Все метки)

Доброго времени суток.
Проблема скорее с математикой, чем с программированием. Есть ф-ия, которая по отрезку и стрелке возвращает отражённую стрелку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 Arrow reflected(Line& ln, Arrow& aw)
 {
    if (!belong_to_line(ln,aw.end()))
        throw logic_error("point is not belongs to the line");
    GVector vp(aw.end().x-aw.begin().x,aw.end().y-aw.begin().y);    //вектор из координат стрелки
    GVector vn(ln.point(1).y-ln.point(0).y,ln.point(0).x-ln.point(1).x);    //вектор нормали к прямой
    vn=vn.valuation();  //нормирование
 
    GVector v=-2*projection(vp,vn)*vn+vp;   //отражённый вектор
    Point p(v.x+aw.end().x,v.y+aw.end().y); //искомый конец отражённого луча
    return Arrow(aw.end(),p);   //новая стрелка
 }
Ниже конкретный пример, вопрос будет касаться именно его, так как с другими расположениями исх. стрелки и прямой функция может работать неверно (не тестировал). Отражённый вектор получается по формуле: "исходный вектор" - 2 * "проекция исходного на нормированный вектор нормали" * "вектор нормали". Почему для получения правильного результата нужно вычитать, а не прибавлять?
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru