>>как применить к Vector3D - Matrix3D ?
Да, мой исходничек не смотрели, ладно, я сейчас сам посмотрю, кстати по свой же ссылке

Код:
_pVec = mat3D.transformVector(_pVec);
И вот так считается свет до камеры (по координате Z) красиво и не дорого (экономия процессора)

Код:
//работает только красный (для примера)
public function calcColor(_color:uint,_dist:Array,_index:int):uint{
var color:uint;
len = _dist.length;
var dMin:Number = _dist[0][0];
var dMax:Number = _dist[len-1][0];
var dStep:Number = Math.abs((dMax - dMin)/len);
var rMin:uint = 0x00;
var rMax:uint = 0xee;
var cStep:Number = Math.abs((rMin-rMax)/len);
var r:uint;
var g:uint = 0x00;
var b:uint = 0x00;
var ind:Number = (_dist[_index][0]-dMin)/dStep;
r = uint(rMax-cStep*ind);
color = ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
return color;
}
>> вариант для C
Смотрел варианты для С или С++. Флеш им не конкурент. Ибо большая чать, того что мы тут пытаемся сделать внедрена в видуху в виде OpenGl и тени и свет и сортировка граней и многое прочее выполняется в видеокарте, и там ничего химичить не надо - оно идет само собой. Так что С пока пусть полежит в сторонке.