1) Вот узнал формулы, что-бы если уже известны x и y, найти угол и радиус: Если: x=cos(a)*r y=sin(a)*r Тогда: a=arctg(y/x) r=y/sin(a) В книге по ассемблеру у сопроцессора были указаны только Sin, Cos, SinCis. А команды тангенса, арктаннгенса и котангенса есть? Если нет, то как их узнать? 2) Допустим нам надо повернуть точку вокруг определённой оси: a=arctg(y/x) ;Узнаём угол по координатам точки относительно оси r=y/sin(a) ;Узнаём расстояние от точки до оси a=a+45 ;Изменяем угол x=cos(a)*r ;Снова находим координаты y=sin(a)*r Как упростить данное действие? 3) Я постарался сделать фукцию которая по координатам x, y, z сама найдёт координаты этой точки на экране. Код (Text): Function Find(_px:Float,_py:Float,_pz:Float,_ax:Float,_ay:Float,_sx:Float,_sy:Float,_vx:Float,_vy:Float) ;_px—Позиция точки по x ;_py—Позиция точки по y ;_pz—Позиция точки по z ;_ax—Поворот камеры по x ;_ay—Поворот камеры по y ;_sx—Угол x обзора камеры камеры ;_sy—Угол y обзора камеры камеры ;_vx—Ширина экрана ;_vy—Высота экрана Local _tx:Float,_ty:Float _tx=ArcTan(_px/_pz)-_cam.ax _ty=ArcTan(_py/_pz)-_cam.ay While _tx>=360 _tx=_tx-360 Wend While _tx<0 _tx=_tx+360 Wend While _ty>=360 _ty=_ty-360 Wend While _ty<0 _ty=_ty+360 Wend If _tx>=0 And _tx<_sx And _ty>=0 And _ty<_sy dx=_vx*_tx/_sx ;Позиция x точки dy=_vx*_ty/_sy ;Позиция y точки End If End Function Но когда я опускаю объект, он сплющивается, но не уменьшается по ширине, Если двигаю в бок уменьшается по ширине, но высота остаётся той-же. Как улучшить функцию? И что-бы она работала правильно?
Учим тригонометрию, тогда всё ясно станет Вообще-то достаточно одной функции, все остальные можно получить из неё. Ну и, наконец, по возможности вещественной арифметики и тем более тригонометрии надо избегать: скорость существенно падает. Конечно, бывают случаи, когда без неё никак, но это уж от задачи зависит.
Неверно ты знаки не учел x,y. В компьютере есть для этих целей Arctan2. На асме не помню как пишется но она есть. 2) Афинные преобразования. Проще всего представить в виде матриц. И матричных операций.
MASM32\FPULIB\* Вся тригонометрия. Также хорошо бы иметь мануал по мат. процессору, хороший есть в Зубкове.