修改obj三维模型文件中坐标z为其相反数
具体做法是:打开一个obj文件,查找含有“v x y z"的字串,然后对z的字串进行符号处理:
若为"-",直接将该符号删除;不为"-"且z值不为0,则在z的字串前加上"-"。
示例(原始文件box.obj)
#
# object Box01
#
v -39.306316 -32.828358 -29.183971
v -39.306316 33.259296 -29.183971
v 39.726025 33.259296 -29.183971
v 39.726025 -32.828358 -29.183971
v -39.306316 -32.828358 26.914204
v 39.726025 -32.828358 26.914204
v 39.726025 33.259296 26.914204
v -39.306316 33.259296 26.914204
-----------------------------------
转换后的文件(box.obj.flip):
#
# object Box01
#
v -39.306316 -32.828358 29.183971
v -39.306316 33.259296 29.183971
v 39.726025 33.259296 29.183971
v 39.726025 -32.828358 29.183971
v -39.306316 -32.828358 -26.914204
v 39.726025 -32.828358 -26.914204
v 39.726025 33.259296 -26.914204
v -39.306316 33.259296 -26.914204
具体代码实现:
1 #include <fstream.h> 2 #include <math.h> 3 4 bool work(const char* path) 5 { 6 char chs[1000]; 7 double x,y,z; 8 CString newPath(path); 9 newPath += ".flip"; 10 const char* chNewPath = newPath; 11 ofstream opf(chNewPath); 12 if (!opf.is_open()) return false; 13 ifstream pf(path); 14 if (!pf.is_open()) {opf.close();return false;} 15 16 while (!pf.eof()) 17 { 18 pf.getline(chs, 1000, '\n'); 19 if (sscanf(chs, "v %lf %lf %lf", &x, &y, &z)==3) 20 { 21 CString strChs(chs); 22 int spacePos=strChs.ReverseFind(' '); 23 char c=strChs.GetAt(spacePos+1); 24 25 opf<<(LPCTSTR)(strChs.Left(spacePos+1)); 26 if (c=='-') 27 { 28 opf<<(LPCTSTR)(strChs.Right(strChs.GetLength()-spacePos-2))<<endl; 29 } 30 else 31 { 32 if (fabs(z)>1e-6) opf<<"-"; 33 opf<<(LPCTSTR)(strChs.Right(strChs.GetLength()-spacePos-1))<<endl; 34 } 35 } 36 else 37 { 38 opf << chs << endl; 39 } 40 } 41 42 opf.close(); 43 pf.close(); 44 return true; 45 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)