游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1285|回复: 1

想出了一个表示2个相互垂直向量的最节约方法,用来存储

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-6-25 23:21:00 | 显示全部楼层 |阅读模式
本来是,采用 pos, dir, front, 即一个位置,加上一个方向,还有一个前面朝向。
但问题是:如果front向量和dir向量不垂直,我还要重新计算front,
那么,可以减少front的数据量,不要用 front.x,y,z.
于是我考虑,可以求得一个与 dir 垂直的平面,然后,只需要 2 个坐标 x,y 就可以确定 front 方向
进一步看,我不需要知道 front 向量的 length , 那我干脆用极坐标,记录一个 theta 即可.

在进一步,我也不需要知道 dir 的 length,那么,可以用经纬度表示 dir.
typedef struct _TAG
{
        VEC3 pos;
        Float dir[2];        // a direction using the 经纬度
        Float front; // theta分量 of 极坐标 of 方向向量 of 朝向 { ( which 表示 前面 ),( on 平面 which 垂直 with Dir向量 ) }
}TAG;                        // ベクトルDirと垂直する平面におけて前面を意味する方向ベクトルの?O座?摔?heta

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-6-25 23:42:00 | 显示全部楼层

Re:想出了一个表示2个相互垂直向量的最节约方法,用来存

想了一下,这种方案并不会浪费多少计算时间。
拼接2个tag的时候,首先是根据 dir,front 中记录的 角度(弧度单位)的差,进行 rotate,
然后根据 pos 进行平移,就可以拼接起来了。

PS 发现楼上的是我发的 1000th 个帖子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 04:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表