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:
parent
417092f579
commit
79dd3c6284
2 changed files with 9 additions and 11 deletions
|
@ -309,13 +309,6 @@ void draw()
|
||||||
|
|
||||||
int main()
|
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_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_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);
|
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;
|
scene.camera.transform.rotation.z += 1;
|
||||||
|
|
||||||
if (keys['p'])
|
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_RenderClear(renderer);
|
||||||
SDL_RenderCopy(renderer,texture,NULL,NULL);
|
SDL_RenderCopy(renderer,texture,NULL,NULL);
|
||||||
|
|
|
@ -1096,9 +1096,14 @@ void S3L_lookAt(S3L_Vec4 pointFrom, S3L_Vec4 pointTo, S3L_Transform3D *t)
|
||||||
v.x = pointTo.x - pointFrom.x;
|
v.x = pointTo.x - pointFrom.x;
|
||||||
v.y = pointTo.z - pointFrom.z;
|
v.y = pointTo.z - pointFrom.z;
|
||||||
|
|
||||||
S3L_normalizeVec2(&v);
|
S3L_Unit l = S3L_vec2Length(v);
|
||||||
|
|
||||||
t->rotation.y = (v.y + S3L_FRACTIONS_PER_UNIT) / 2 ;
|
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
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue