I think I must use lens for light point.
P.S. I found simplest example for holograms creation.
//holo.c--simple program for computer-generated holography
//Thad G. Walker University of Wisconsin-Madison
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include "nrutil.h" //Numerical Recipes routines for memory allocation
#define twopi 6.283185307
#define R 75
//Resolving power of hologram
#define N 300
//hologram width in pixels
#define thres 0.6
//threshold for binary approximation
void main(){
char pixel,obj;
int X,Y,row,col,junk;
float **pix,kdf=twopi/2.0,ranphi,max=0.0,min=0.0,res=R;
FILE *out,*in;
out=fopen("holo.pgm","w");
// output file, N X N size graphics file
in=fopen("uwphysics.pgm","r"); //input file, R X R size graphics file
fprintf(out,"P5 %d %d 255\n",N,N);//header
fscanf(in,"%1s %1s %d %d %d",&junk,&junk,&junk,&junk,&junk);//header
srand(17);
//seed random number generator
pix=matrix(0,N-1,0,N-1);
//allocate memory for graphical output
for(X=0;X<N;X++){for(Y=0;Y<N;Y++){pix[X][Y]=0.0;}}
//initialization
//construct real hologram from input image
for(row=0;row<R;row++){for(col=0;col<R;col++){
fscanf(in,"%1c",&obj);
//read 1 byte at a time
if(obj!=0){
//all non-zero bytes given same intensity
ranphi=((float) rand())/((float) RAND_MAX)*twopi;
//select random phase
for(X=0;X<N;X++){for(Y=0;Y<N;Y++){
pix[X][Y]+=cos(kdf*(X*(1.-row/res)+Y*col/res)+ranphi);//add to hologram
}}
}
}}
//find max min
for(X=0;X<N;X++){for(Y=0;Y<N;Y++){
if(pix[X][Y]>max)max=pix[X][Y];
if(pix[X][Y]<min)min=pix[X][Y];
}}
//print output file
for(X=0;X<N;X++){for(Y=0;Y<N;Y++){
if((pix[X][Y]-min)/(max-min)>thres){pixel=255;
}else{pixel=0;}
fprintf(out,"%c",pixel);
}}
}