Thanks bedges. I think I got it now:
Called as [You, Computer, StreetObject, D] will set D to StreetObject as Computer is to You
_obj1 = _this select 0
_obj2 = _this select 1
_obj3 = _this select 2
_obj4 = _this select 3
_dir1 = getdir _obj1
_dir2 = getdir _obj2
_dir3 = getdir _obj3
_pos1 = getpos _obj1
_pos2 = getpos _obj2
_pos3 = getpos _obj3
_diffx = (_pos2 select 0) - (_pos1 select 0)
_diffy = (_pos2 select 1) - (_pos1 select 1)
_relx = (_diffx * cos _dir1) - (_diffy * sin _dir1)
_rely = (_diffx * sin _dir1) + (_diffy * cos _dir1)
_newx = (_pos3 select 0) + (_relx * cos _dir3) + (_rely * sin _dir3)
_newy = (_pos3 select 1) - (_relx * sin _dir3) + (_rely * cos _dir3)
_obj4 setpos [_newx, _newy, _pos2 select 2]
_obj4 setdir (_dir3 - _dir1 + _dir2)
Doolittle