Координаты x,y на экране
#21

я пока пас, занят по уши....
материал для размышления:
http://shatalov.su/math/transformation_1.php
http://shatalov.su/math/transformation_2.php

На данный момент я остановился на попытке создать проекционную плоскость(во "взгляде" камеры)
Ну и список, что нужно(дада, ещё раз):
1. переделать из мировых координат в камерные(учесть градус наклона камеры, и т.д., придётся использовать матрицы...)
2. из пространства камеры спроецировать объект в камерных координатах на проекционную плоскость
3. из проекционной плоскости на экран([-1;1] до [0;640] и [0;480], ну ещё учесть, конечно, формат, 4:3)
Reply
#22

да простит меня команда мта, куйман и прочие
Code:
void CalcScreenCoors ( D3DXVECTOR3 *vecWorld, D3DXVECTOR3 *vecScreen )
{
        /** C++-ifyed function 0x71DA00, formerly called by CHudSA::CalcScreenCoors **/
        // Get the static view matrix as D3DXMATRIX
        D3DXMATRIX      m ( (float *)(0xB6FA2C) );

        // Get the static virtual screen (x,y)-sizes
        DWORD           *dwLenX = ( DWORD * ) ( 0xC17044 );
        DWORD           *dwLenY = ( DWORD * ) ( 0xC17048 );

        //DWORD *dwLenZ = (DWORD*)(0xC1704C);
        //double aspectRatio = (*dwLenX) / (*dwLenY);
        // Do a transformation
        vecScreen->x = ( vecWorld->z * m._31 ) + ( vecWorld->y * m._21 ) + ( vecWorld->x * m._11 ) + m._41;
        vecScreen->y = ( vecWorld->z * m._32 ) + ( vecWorld->y * m._22 ) + ( vecWorld->x * m._12 ) + m._42;
        vecScreen->z = ( vecWorld->z * m._33 ) + ( vecWorld->y * m._23 ) + ( vecWorld->x * m._13 ) + m._43;

        // Get the correct screen coordinates
        double  fRecip = (double)1.0 / vecScreen->z;    //(vecScreen->z - (*dwLenZ));
        vecScreen->x *= (float)( fRecip * (*dwLenX) );
        vecScreen->y *= (float)( fRecip * (*dwLenY) );
}
выковыряно из сорцев мта. может чем-нибудь поможет) все права, копирайты и блаблабла мта-тим.
Reply
#23

ну и от себя, как обычно
формула подсчёта матрицы камеры:
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
(внизу формула если что. К ней, работа с векторами: http://gpwiki.org/index.php/MathGem:Vector_Operations )

D3DXMATRIX( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
состав матрицы...
Reply
#24

от этого я и добивался, чтобы уже не я рекламил, а вы ((:
Reply
#25

Теперь весь русский раздел перебанят )
Reply
#26

да каво
у хомки уберите слово м** из сообщения, и всё ок будет.
Reply
#27

Aleks10,ты сможешь эту функцию сделать,из всех ссылок что ты накидал,я не в чём не разбираюсь,т.к. эта чистая геометрия,тригонометрия и т.д..
Reply
#28

некоторым не только надо разжевать, но и в рот положить.. проглотить, видимо, тоже должен кто-то другой (:

ну сделайте же кто-нибудь ЭТО
Reply
#29

Quote:
Originally Posted by MX_Master
View Post
некоторым не только надо разжевать, но и в рот положить.. проглотить, видимо, тоже должен кто-то другой (:

ну сделайте же кто-нибудь ЭТО
если ты шариш во всех этих матрицах и т.д.,молодец,но я запустил основы даже геометрии с 6 класса,так и не учил и не могу понять.
Reply
#30

я просто в этой теме потрещать люблю.. ну а геометрия.. это да, я даже в бильярде от 2 бортов могу мячик в лузу закатить интуитивно

все же дали, формулы есь, функции нэйтивные сморите сами и, если из них мона составить такую функцию, то сделайте. Просто возможен вариант, что этого сделать из нэйтивов нельзя. Вот это и проверьте. А потом уже.. если возможно, то написать не составит труда.
Reply
#31

Quote:
Originally Posted by MX_Master
View Post
от этого я и добивался, чтобы уже не я рекламил, а вы ((:
ах, ты! я подозревал!
двойной агент, я всё-всё батьке куйману расскажу
Reply
#32

Quote:
Originally Posted by xomka
View Post
ах, ты! я подозревал!
двойной агент, я всё-всё батьке куйману расскажу
а ты же скоро почувствуешь разницу, и вместе со мной будешь рекламить (:
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)