PDA

Просмотр полной версии : Дифракция



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

moroz1999
23.05.2007, 10:35
всё интересно :)

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

:v2_clap2: Отлично!!!
Что такое r,R,h???
А как это связать с массивом ScrBuffer[X][Y] изображения? где тут учитывается центр (X0,Y0)?

Krenon
23.05.2007, 16:02
Вообще-то эта формула взята из раздела "кольца Ньютона", но картинка будет такая же как для дифракции.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();
}