Важная информация

User Tag List

Показано с 1 по 4 из 4

Тема: Дифракция

  1. #1
    Member Аватар для Krenon
    Регистрация
    16.04.2007
    Адрес
    Санкт-Петербург
    Сообщений
    67
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Дифракция

    Если кому интересен этот тупой эффект, то вот формула радиуса кольца из "Элементарного учебника физики": r=sqrt((2*R-h)*h). Меняя R анимируем картинку. Меняя h строим кольца.
    C Nonsense in BASIC, 0:1

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для moroz1999
    Регистрация
    17.01.2005
    Адрес
    Tallinn
    Сообщений
    2,336
    Благодарностей: 430
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    всё интересно

  4. #3
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Благодарностей: 507
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Krenon Посмотреть сообщение
    Если кому интересен этот тупой эффект, то вот формула радиуса кольца из "Элементарного учебника физики": r=sqrt((2*R-h)*h). Меняя R анимируем картинку. Меняя h строим кольца.
    Отлично!!!
    Что такое r,R,h???
    А как это связать с массивом ScrBuffer[X][Y] изображения? где тут учитывается центр (X0,Y0)?

  5. #4
    Member Аватар для Krenon
    Регистрация
    16.04.2007
    Адрес
    Санкт-Петербург
    Сообщений
    67
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще-то эта формула взята из раздела "кольца Ньютона", но картинка будет такая же как для дифракции.r-радиус требуемого кольца, R - радиус линзы, h - толщина воздушной прослойки.

    Добавлено через 21 минуту
    #include <conio.h>
    #include <math.h>
    #include <graphics.h>
    //r=sqr(2*h*r)
    void main(void)
    {
    const x=640/2,y=480/2,r=500;
    int graphdriver=DETECT,graphmode,r0,r1,r2,h;
    initgraph(&graphdriver, &graphmode,"..\\bgi");
    for (h=0;h<20:h+=2)
    {
    r0=sqrt(2*(h+1)*r);
    r1=sqrt(2*(h+2)*r);
    for (r2=r0;r2<r1;r2++)
    circle (x,y,r2);
    }
    getch();
    }
    Последний раз редактировалось Krenon; 23.05.2007 в 14:23. Причина: Добавлено сообщение
    C Nonsense in BASIC, 0:1

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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