Blanco your not far off, like Macguba said you need a constant (50) for the offset. It might be worth doing all the GetPos and GetDir stuff in a function, so you get an instant snapshot.
SetDirections.sqf:
private ["_plane","_pos","_frontx","_fronty","_backx","_backy","_planex","_planey","_planez","_currdir"];
_Plane=_This Select 0;
_CurrDir=GetDir _Plane;
_Pos=GetPos _Plane;
_PlaneX=_Pos Select 0;
_PlaneY=_Pos Select 1;
_PlaneZ=_Pos Select 2;
_FrontX=_PlaneX+Sin(_CurrDir)*50;
_FrontY=_PlaneY+Cos(_CurrDir)*50;
_CurrDir=_CurrDir-180;
_BackX=_PlaneX+Sin(_CurrDir)*50;
_BackY=_PlaneY+Cos(_CurrDir)*50;
[[_FrontX,_FrontY,_PlaneZ],[_BackX,_BackY,_PlaneZ]]
Then you can just do something like:
#loop
_Positions=[Plane] Call SetDirections
_camera camsetpos getpos (_Positions Select 1)
_camera camsettarget (_Positions Select 0)
@(True)
goto "loop"
The @ command should make sure it never tries to loop any quicker than it can handle.
This only works in 2D as you cant get the pitch of a plane, you could add to the cameras Z position to get an angled shot or work out the changes in altitude or something.
I have not tested the code but it should work, try it with a jeep and a couple of flagpoles to make sure.