|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.06.2017, 22:30 | #1 |
Новичок
Джуниор
Регистрация: 01.06.2017
Сообщений: 2
|
Модель оптической системы в Delphi
Доброго времени суток. Бадаюсь с этим проектом с февраля месяца в рамках курсового проектирования(мои наработки во вложении полностью)... Немного о проекте, необходимо создать модель оптической системы с линзой и проходящим через неё лучом. По моей задумке на форме в Edit задаём радиус кривизны линзы r и при нажатии на кнопку на image, появляется изображение линзы в соответствии с заданным радиусом(вот тут и первая ошибка у меня, при задании положительного радиуса вырисовывается линза выгнутая в сторону в которую она должна быть выгнута с отрицательным радиусом). Теперь луч... Ход луча задается углом(значение которого также вводится в Edit) от оптической оси и расстоянием до линзы, после чего он проходит через линзу и преломляется к оптической оси с другой стороны линзы, все это происходит так же при нажатии уже другой кнопки. С лучом проблема следующая при изменении в Edit угла не получается ограничить его линзой, он либо не доходит до нее, либо наоборот уходит за нее, а необходимо сделать так чтобы он менял своё направление только при соприкосновение с линзой.
|
02.06.2017, 04:01 | #2 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
По-поводу 1-й ошибки.
Я не понял, что значит "радиус кривизны"... Или это: 0.png Или это (но здесь на форму влияет не "r", а "с" - когда "c=0", то мы видим обычный круг, а когда отличное от нуля - появляется "несимметричная кривизна"): 3.png 2.png Попробуй у себя оба кода; изменяй ключевые параметры - смотри, что меняется (меняй не только знаки, но и значения - потому что линза не статическая, а от значения параметров - "гуляющая"); попробуй сопоставить с ручным расчётам и рисунком, которое сделай предварительно... Нарисуй саму линзу и расставь где "r" и другие параметры... Покажи, что сделал/понял (лучше рисунками); делай скиншоты экрана... Последний раз редактировалось ura_111; 02.06.2017 в 04:29. |
02.06.2017, 21:00 | #3 |
Новичок
Джуниор
Регистрация: 01.06.2017
Сообщений: 2
|
ura_111 спасибо что откликнулся, но это не совсем то что мне нужно. Предложенные тобой варианты уже были мной разработаны(имеется в виду подобные) ещё в то время когда я только начинал делать данный продукт. Радиус кривизны это радиус окружности из которой и получается дуга, соответственно в зависимости от того какой радиус задан, такую линзу программа и строит. Обрати внимание на мою программу которую я кинул во вложение, линза у меня привязана к конкретному месту и при изменении параметров(а именно радиуса) она просто меняет свою форму, но при этом никуда не сдвигается ни сама линза ни оптическая ось относительно которой она строится.
|
02.06.2017, 22:38 | #4 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
"Радиус кривизны это радиус окружности из которой и получается дуга"
Не получается так! У тебя в первую очередь... Заметь, сейчас я буду рассматривать не влияние знака радиуса на форму линзы (твою проблему №1), а вообще, саму твою дугу (в которой ты свято уверен, что с ней всё ОК)... Рассмотрим линзу с радиусом r=50 (пока просто нарисуем, а позднее - в программе простоем): 1.png Обрати внимание на соотношение круга и длинны (расстояния между прямыми) 280 - КРУГ ВООБЩЕ НЕ ПЕРЕСЕКАЕТ ИХ! "При чём тут 280?" -спросишь ты. Добавив код тебе в программу: Код:
2.png Как это возможно? Вот если бы я задал радиус больше 150 (а не 50-ть), тогда да, - могло бы быть (обращай внимание на 280): 3.png Для примера, покажу результат моего кода (1-й который был): 4.png А теперь посмотри сюда (при отступе " по y=60" и радиусе 140): 5.png - Идеально сошлось! Другими словами, вот это и есть - какой радиус ввёл то и получил... А у тебя? Ввожу радиус 50, а мне рисует линзу с радиусом более 150... ВОЗЬМИ ПО-ЭКСПЕРИМЕНТИРУЙ СО СВОИМ КОДОМ... p.s.: что можешь сказать по этому поводу? И что такое "с=100" в твоём коде? Почему дуга (в проекции это хорда) именно такой имеет размер? Может быть есть два радиуса: дуги и кривизны линзы? (я реализовал это во 2-м коде). Т.е.: 7.jpg Последний раз редактировалось ura_111; 03.06.2017 в 02:05. |
04.06.2017, 04:07 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 04.06.2017 в 04:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Opengl C++ модель солнечной системы | Shade2015 | Помощь студентам | 3 | 08.05.2015 21:09 |
модель сосредоточенной системы | natasha9 | Помощь студентам | 1 | 23.05.2013 18:54 |
Модель солнечной системы (Deiphi) | hanna | Помощь студентам | 11 | 31.03.2012 17:12 |
2D модель солнечной системы | GaLiof | Помощь студентам | 9 | 12.11.2009 17:45 |