背景画像のアップロードで,球を生成してそれに貼り付ける.
コード自体はそれほど難しくないので,1 日位でできると思ってた.
Windows のコンソール AP で,次の様なコードを書いてテスト.
MakeBG.cpp
make_bg.hxx
#include "MessBar.hxx" #include "i_Trace.hxx" #include "gonsprm2.hxx" #include "Htm_thrj.hxx" //******************************************************************************* // make bg files imo and html // Create : 2018/04/19 //******************************************************************************* inline bool MakeBG (c_tstring& dibPath) { tstring ext = ::Path_GetExtLow(dibPath) ; if (ext == _T("bmp")) { ; } else if (ext == _T("jpg")) { ; } else if (ext == _T("png")) { ; } else { return false ; } { tstring imoPath = ::Path_ChangeExt(dibPath,_T(".imo")) ; tstring htmName = ::Path_ChangeExt(dibPath,_T(".html")) ; tstring dmpName = ::Path_ChangeExt(dibPath,_T(".ipl")) ; { long div = 90/5 ; v_Vd3A pntsAry = ::BuildSphere(div) ; { std::tout << pntsAry.size() << std::endl ; if (pntsAry.size() > 0) { Vd3A pnts = pntsAry[0] ; std::tout << pnts.size() << std::endl ; } tstring str = ::v_V3_To_tstring(pntsAry,_T(",")) ; { std::tout << str << std::endl ; } ::SaveText(dmpName.c_str(),str) ; } v_Vd2A txuvAry = ::SetTextureUV(pntsAry) ; pntsAry = ::V3_Scale (pntsAry,Vd3(20.)) ; Gons1 gons1 = ::Gons_BuildFace(pntsAry,txuvAry,dibPath.c_str()) ; GonsA ga ; ga.push_back(gons1) ; Ed3 es = ::GonsA_GetExtent(ga) ; { std::tout << imoPath << _T("\t") ; std::tout << ::V3_To_tstring(es.Volume()) << std::endl ; } if (es.Volume() != Vd3(0)) { es = Ed3(es.L*0.01,es.G*0.01) ; ::GonsA_ToOBJ(ga,imoPath.c_str()) ; ::HT_Make_three_js_html(imoPath.c_str(),es) ; } } } return true ; } //******************************************************************************* // Make BG // Create : 2018/04/19 //******************************************************************************* int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { double s = sin(rad(30)) ; double c = cos(rad(30)) ; std::tout << ::To_tstring(rad(30)) << _T("\t") << ::To_tstring(s) << _T("\t") << ::To_tstring(c) << std::endl ; } if (argc > 1) { v_tstring argAry ; for (int index=1 ; index<argc ; index++) { tstring av = argv[index] ; ::MakeBG(av) ; } } else { tstring buf ; buf.resize(1000) ; { while (std::terr << _T("dib ? =") , std::tin.getline(&buf[0],buf.size())) { tstring str = buf.c_str() ; if (str == _T("q")) { break ; } else if (str == _T("Q")) { break ; } str = ::QuotM_Del_All(str) ; if (str.empty()) { continue ; } if (::File_IsNothing(str)) { continue ; } tstring dib_file = str ; ::MakeBG(dib_file) ; } } } return 0 ; } #include "MessBar.cxx"
今度は,DS116 でビルドして実行すると,
Iwao@DS116:/var/.../Test/up_bg/data$ ./a.out 0.523599 98314745853377985068733249901357667205561433229409406145971019710277043155206326909160297391588106447153156445277590513896008090831662627743743127151181611161993303763348552511914898438567008016612049817143085994563143448055356356529593034366351316506187159487365573007925410016860727208738652774465536.000000 98321247861193438769252981549279948821735544950351014769381393881588573259178110828643912278175146924986161470094082713103803921735703931192359519739047155548857037547932930737608178537416409042994283830606984599100883034181136178714087912736395732787698542049681305006129736011480288874859116047106048.000000 dib ? =
本当は,
C:\Users\Iwao\...\i_Tools.tmp>\\DevXP\C_Drive\Temp\DS11x\MakeBG\Release.060\MakeBG.exe 0.523599 0.500000 0.866025 dib ? =
cmath が使えない様で,検索すると「-lm でコンパイルが通る」と言うのは見つかる.
が,コンパイルの問題ではなく,実行でうまくない.
当然ではあるが,DS115j でも同様.
試しに,opkg update と opkg install gcc .
root@DS116:/var/…/Iwao# opkg update
Downloading http://pkg.entware.net/binaries/armv7/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/packages
root@DS116:/var/…/Iwao# opkg install gcc
Upgrading gcc on root from 6.3.0-1 to 6.3.0-1a…
Downloading http://pkg.entware.net/binaries/armv7/gcc_6.3.0-1a_armv7soft.ipk
Configuring gcc.
root@DS116:/var/…/Iwao#
もう一度,ビルドして実行すると,
Iwao@DS116:/var/…/Test/up_bg/data$ g++ MakeBG.cpp
Iwao@DS116:/var/…/Test/up_bg/data$ ./a.out
0.523599 0.500000 0.866025
dib ? =
予想以上に時間がかかってしまったが,何とか…
daikoku_edit.html
2019/02/13 リンクなどを修正