1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-11-21 20:39:57 +01:00

Add lookAt horizontal

This commit is contained in:
Miloslav Číž 2019-06-05 21:41:11 +02:00
parent 417092f579
commit 79dd3c6284
2 changed files with 9 additions and 11 deletions

View file

@ -309,13 +309,6 @@ void draw()
int main()
{
for (int i = -512; i < 513; ++i)
printf("%d: %d (%d)\n",i,S3L_asin(i),S3L_sin(S3L_asin(i)));
return 0;
SDL_Window *window = SDL_CreateWindow("test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, S3L_RESOLUTION_X, S3L_RESOLUTION_Y, SDL_WINDOW_SHOWN);
SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,0);
SDL_Texture *texture = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBX8888, SDL_TEXTUREACCESS_STATIC, S3L_RESOLUTION_X, S3L_RESOLUTION_Y);
@ -454,7 +447,7 @@ S3L_setTransform3D(3196,1814,5958,-18,300,0,512,512,512,&(scene.camera.transform
scene.camera.transform.rotation.z += 1;
if (keys['p'])
S3L_lookAt(scene.camera.transform.translation,scene.models[1].transform.translation,&(scene.camera.transform));
S3L_lookAt(scene.camera.transform.translation,scene.models[0].transform.translation,&(scene.camera.transform));
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer,texture,NULL,NULL);

View file

@ -1095,10 +1095,15 @@ void S3L_lookAt(S3L_Vec4 pointFrom, S3L_Vec4 pointTo, S3L_Transform3D *t)
v.x = pointTo.x - pointFrom.x;
v.y = pointTo.z - pointFrom.z;
S3L_normalizeVec2(&v);
t->rotation.y = (v.y + S3L_FRACTIONS_PER_UNIT) / 2 ;
S3L_Unit l = S3L_vec2Length(v);
v.x = (v.x * S3L_FRACTIONS_PER_UNIT) / l;
t->rotation.y = S3L_asin(v.x);
if (v.y < 0)
t->rotation.y = S3L_FRACTIONS_PER_UNIT / 2 - t->rotation.y;
// TODO
}