Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 09.06.2012, 15:11
Erikozer вне форума Посмотреть профиль Отправить личное сообщение для Erikozer Найти все сообщения от Erikozer
  № 1  
Ответить с цитированием
Erikozer

Регистрация: Jun 2012
Сообщений: 6
Tools Геометрическая оптика

Здравствуйте. Вот уже третий день мучаюсь с построением изображения в собирающей линзе.
Есть точка, "оптический стол" и сама линза.
Нужно построить изображение по следующим правилам(я взял первые 2 правила, ибо третье кажется каким-то нереализуемым):
Цитата:
1.Луч, проходящий через оптический центр линзы, не преломляется.
2.Луч, падающий на линзу параллельно главной оптической оси, при выходе из линзы проходит через её фокус
3.Луч, падающий под углом на линзу, при выходе из линзы проходит через точку, лежащую в фокальной плоскости линзы. Эта точка является пересечением вспомогательного луча, параллельного главному лучу и проходящего через оптический центр линзы и перпендикуляра поднятого(или опущенного) из фокуса к главной оптической оси.
Второе предложение в третьем правиле вообще не понял.

Так вот, я столкнулся с большим количеством вариантов решения этой задачи и выбрал два из них:

1.Линии слева от линзы строить через graphics.moveTo и graphics.lineTo, благо координаты почти все есть, а именно нам известны(смотрим рисунок):
Координаты точек S, A, C, B(он же фокус)
Углы SAC, ACB, CED прямые
Проблема в том, что я незнаю, где пересекутся линии, идущие через фокус и через центр линзы.
Однако, погуглив я понял, что можно расчитать прирост по х и y каждой точки, например, отрезка АВ и таким образом продолжить строить после пересечения с фокусом. Аналогично для центра линзы.
Но я опять неузнаю, где они пересекутся.
[IMG]http://higgs.**********/38567218/image.png[/IMG]

2.Вторая идея мне пришла сегодня "во сне", после целого вечера поиска тригонометрических примеров на AS3.
А что если нарисовать две линии и сделать их мувиклипами. Они заменят линии AD и SD.
При нажатии на кнопку построения эти линии будут повернуты на необходимую величину(нужный градус можно вычислить, благодаря известным координатам).
Но тут опять загвоздка.
Через какую функцию узнать, что они пересеклись? hitTest? Но мне нужна точная координата, для помещения копии начальной точки туда.
И еще одна проблема: нужно, чтобы отрезок AD при любом повороте не выезжал на левую часть линзы. через что ограничить показ объекта в определенной области? Маски? Ниразу не работал с ними, подскажите какую функцию использовать.

Вопрос в том, какой способ проще и быстрее(ибо времени до сдачи диплома у меня мало).
Ах да, с AS работаю впервые.

Создать новую тему   Часовой пояс GMT +4, время: 18:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:40.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.