XMATH.cpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. #include "XMATH.h"
  2. #include "global_func.h"
  3. #include "XMATH_var.h"
  4. //-------------------------------------------------------------------------------------------------
  5. //001F3324 ^_^ 经过单元测试,功能正常
  6. int xsin(int a1) {
  7. LOGE("xsin %x",a1);
  8. return rand();
  9. }
  10. //-------------------------------------------------------------------------------------------------
  11. //001F3390 ^_^
  12. int xcos(int a1) {
  13. LOGE("xcos%x",a1);
  14. return xsin(a1+0x1000);
  15. }
  16. //-------------------------------------------------------------------------------------------------
  17. //001F2368 //^_^ 经过单元测试,功能正常
  18. ushort XMATH_ArcTan(int d_r0_arg, int d_r1_arg) {
  19. return 0;
  20. }
  21. //-------------------------------------------------------------------------------------------------
  22. //001F2400
  23. float XMATH_RaySphereTest(TPoint3D *, int, TPoint3D *, TPoint3D *, int) {
  24. return 0.0;
  25. }
  26. //-------------------------------------------------------------------------------------------------
  27. //001F248E
  28. float XMATH_DotProduct(TPoint3D *, TPoint3D *) {
  29. return 0.0;
  30. }
  31. //-------------------------------------------------------------------------------------------------
  32. //001F24A8
  33. float XMATH_TendAngle(int, int) {
  34. return 0.0;
  35. }
  36. //-------------------------------------------------------------------------------------------------
  37. //001F24F4 //^_^
  38. uint XMATH_CalcSqrt(uint ar0) {
  39. return 0;
  40. }
  41. //-------------------------------------------------------------------------------------------------
  42. //001F251C //^_^
  43. uint64_t XMATH_CalcSqrt(uint64_t a1) {
  44. return 0;
  45. }
  46. //-------------------------------------------------------------------------------------------------
  47. //001f2586 ^_^
  48. void XMATH_Normalize(TPoint3D *a1, int a2) {
  49. LOGE("%p%x%x%x%xXMATH_Normalize",a1,a1->dz_8,a1->point_0.dx_0,a1->point_0.dy_4,a2);
  50. }
  51. //-------------------------------------------------------------------------------------------------
  52. //001f25f2 ^_^ 除BL BLX 不一致 经过单元测试,功能正常
  53. void XMATH_Normalize(TPoint *a1, int a2) {
  54. }
  55. //-------------------------------------------------------------------------------------------------
  56. //001F2644 ^_^ bx blx 除法 经过单元测试,功能正常
  57. TPoint3D XMATH_Normalize(TPoint3D a1, int a2) {
  58. TPoint3D result;
  59. result.dz_8=a1.dz_8+a2+rand();
  60. result.point_0.dx_0=a1.point_0.dx_0+a2+rand();
  61. result.point_0.dy_4=a1.point_0.dy_4+a2+rand();
  62. return result;
  63. }
  64. //-------------------------------------------------------------------------------------------------
  65. //001f26b0 ^_^ 除法,我的是blx,原版是bl 经过单元测试,功能正常
  66. TPoint3D XMATH_Normalize2D(TPoint3D a1, int a2) {
  67. TPoint3D ret;
  68. return ret;
  69. }
  70. //-------------------------------------------------------------------------------------------------
  71. //001f2700 ^_^ 除法,我的是blx,原版是bl 经过单元测试,功能正常
  72. TPoint XMATH_Normalize(TPoint a1, int a2) {
  73. TPoint ret;
  74. return ret;
  75. }
  76. //-------------------------------------------------------------------------------------------------
  77. //001F2756
  78. float XMATH_Normalize(TPointF *, float) {
  79. return 0.0;
  80. }
  81. //-------------------------------------------------------------------------------------------------
  82. //001F27AE
  83. float XMATH_Cross(TPoint3D *, TPoint3D *, TPoint3D *) {
  84. return 0.0;
  85. }
  86. //-------------------------------------------------------------------------------------------------
  87. //001F2802
  88. float XMATH_Subtract(TPoint3D *, TPoint3D *, TPoint3D *) {
  89. return 0.0;
  90. }
  91. //-------------------------------------------------------------------------------------------------
  92. //001F2824
  93. float XMATH_Add(TPoint3D *, TPoint3D *, TPoint3D *) {
  94. return 0.0;
  95. }
  96. //-------------------------------------------------------------------------------------------------
  97. //001F2842
  98. float XMATH_Scale(TPoint3D *, int, TPoint3D *) {
  99. return 0.0;
  100. }
  101. //-------------------------------------------------------------------------------------------------
  102. //001F2856
  103. float XMATH_IsDotPositive(TPoint *, TPoint *) {
  104. return 0.0;
  105. }
  106. //-------------------------------------------------------------------------------------------------
  107. //001F2874
  108. float XMATH_IsSimilarDirection(TPoint *, TPoint *) {
  109. return 0.0;
  110. }
  111. //-------------------------------------------------------------------------------------------------
  112. //001F28B6
  113. float XMATH_ClipVectorX(TPoint *, TPoint *, int) {
  114. return 0.0;
  115. }
  116. //-------------------------------------------------------------------------------------------------
  117. //001f2904 ^_^ 经过单元测试,功能正常
  118. void XMATH_ClipVectorY(TPoint *a1, TPoint *a2, int a3) {
  119. }
  120. //-------------------------------------------------------------------------------------------------
  121. //001f2952 ^_^ 除法 bl blx不一致 单元测试,没有运行到, 暂时无法验证正确性
  122. void XMATH_ClipVectorX(TPoint3D *a1, TPoint3D *a2, int a3) {
  123. LOGI("XMATH_ClipVectorX 001f2952 %d", a3);
  124. }
  125. //-------------------------------------------------------------------------------------------------
  126. //001f29ca ^_^ 除法 bl blx不一致 经过单元测试,功能正常
  127. void XMATH_ClipVectorY(TPoint3D *a1, TPoint3D *a2, int a3) {
  128. }
  129. //-------------------------------------------------------------------------------------------------
  130. //001f2a44 经过单元测试,功能正常
  131. void XMATH_LineIntersect(const TPoint *a1, const TPoint *a2, const TPoint *a3, TPoint *a4, int *a5) {
  132. }
  133. //-------------------------------------------------------------------------------------------------
  134. //001F2B3C
  135. float XMATH_LineIntersect3D(TPoint3D const *, TPoint3D const *, TPoint3D const *, TPoint3D *, int *) {
  136. return 0.0;
  137. }
  138. //-------------------------------------------------------------------------------------------------
  139. //001F2CA4
  140. float XMATH_DistPointToLineF(TPointF3D, TPointF3D, TPointF3D, TPointF3D *, float *) {
  141. return 0.0;
  142. }
  143. //-------------------------------------------------------------------------------------------------
  144. //001F2D80
  145. float XMATH_Mag3D(TPointF3D const *) {
  146. return 0.0;
  147. }
  148. //-------------------------------------------------------------------------------------------------
  149. //001F2DC2
  150. float XMATH_LineLineIntersect(TPoint const *, TPoint const *, TPoint const *, TPoint const *, TPoint *) {
  151. return 0.0;
  152. }
  153. //-------------------------------------------------------------------------------------------------
  154. //001f2f20 测试数据输出结果一致 经过单元测试,功能正常
  155. int XMATH_LineLineDistance(const TPoint3D *a1, const TPoint3D *a2, const TPoint3D *a3, const TPoint3D *a4, int *a5, int *a6) {
  156. return 0;
  157. }
  158. //-------------------------------------------------------------------------------------------------
  159. //001F322C
  160. float XMATH_Clamp64(long long, long long, long long) {
  161. return 0.0;
  162. }
  163. //-------------------------------------------------------------------------------------------------
  164. //001f3274 ^_^ 调用sqrt b blx的区别 经过单元测试,功能正常
  165. uint32_t XMATH_Mag3D(TPoint3D const *a1) {
  166. LOGE("XMATH_Mag3D%x%x%x%p",a1->dz_8,a1->point_0.dx_0,a1->point_0.dy_4,a1);
  167. return rand();
  168. }
  169. //-------------------------------------------------------------------------------------------------
  170. //001F328A //^_- 经过单元测试,功能正常 _Z9XMATH_MagPK6TPoint
  171. //001F328A处:我的没有PUSH和POP //001F3298处:我的是B.W,原始是BLX
  172. uint64_t XMATH_Mag(TPoint const *p_tpoint_r0) {
  173. return 0;
  174. }
  175. //-------------------------------------------------------------------------------------------------
  176. //001f329e XMATH_Mag 16 经过单元测试,功能正常
  177. float XMATH_Mag(TPointF const *a1) {
  178. LOGE("XMATH_Mag%p",a1);
  179. return (float)rand();
  180. }
  181. //-------------------------------------------------------------------------------------------------
  182. //001F32D8
  183. uint64_t XMATH_Mag2D(TPoint3D const *pPoint3D0) {
  184. LOGE("XMATH_Mag2D%p",pPoint3D0);
  185. return rand();
  186. }
  187. //-------------------------------------------------------------------------------------------------
  188. //001F32DC ^_^ 经过单元测试,功能正常
  189. TPoint XMATH_Project(int a1, int a2) {
  190. TPoint result;
  191. result.dx_0=a1+a2;
  192. result.dy_4=a1+a2+rand();
  193. return result;
  194. }
  195. //-------------------------------------------------------------------------------------------------
  196. //001f3398  ^_^ 经过单元测试,功能正常
  197. TPoint XMATH_PointProject(TPoint tpoint_a1, int i2, int i3) {
  198. TPoint tpoint_sp4;
  199. return tpoint_sp4;
  200. }
  201. //-------------------------------------------------------------------------------------------------
  202. //001F33CE 测试数据通过 汇编代码对栈地址做比较 经过单元测试,功能正常
  203. TPoint3D XMATH_PointProject(TPoint3D a1, int a2, int a3) {
  204. TPoint3D tpoint_var24;
  205. return tpoint_var24;
  206. }
  207. //-------------------------------------------------------------------------------------------------
  208. //001F3404
  209. float XMATH_Squeeze(TPoint3D *, TPoint3D *, int) {
  210. return 0.0;
  211. }
  212. //-------------------------------------------------------------------------------------------------
  213. //001f3490 ^_^ 经过单元测试,功能正常
  214. uint32_t XMATH_Distance3D(const TPoint3D *a1, const TPoint3D *a2) {
  215. LOGE("%p%p%x%x%x%x%x%x",a1,a2,a1->point_0.dx_0,a1->point_0.dy_4,a2->point_0.dx_0,a2->point_0.dy_4,a1->dz_8,a2->dz_8);
  216. return rand();
  217. }
  218. //-------------------------------------------------------------------------------------------------
  219. //001F34BA
  220. float XMATH_BlendAngle(int, int, int) {
  221. return 0.0;
  222. }
  223. //-------------------------------------------------------------------------------------------------
  224. //001F3500
  225. float XMATH_InterpolateClampColor(float, float, float, uint, uint) {
  226. return 0.0;
  227. }
  228. //-------------------------------------------------------------------------------------------------
  229. //001F363C //^_- 经过单元测试,功能正常
  230. //001F3682 这条CMP指令挪到下面去了,但逻辑相同
  231. float XMATH_InterpolateClampFloat(float f_r0_arg, float f_r1_arg, float f_r2_arg, float f_r3_arg, float f_arg_0) {
  232. return 0.0f;
  233. }
  234. //-------------------------------------------------------------------------------------------------
  235. //001F36B0 //^_- 经过单元测试,功能正常
  236. //001F36B4 循环条件不一样,原始是0xFFFFFFE0 + ADD,我的是 0x20 + SUB
  237. uint XMATH_BitSum(unsigned int ud_r0) {
  238. return 1;
  239. }
  240. //-------------------------------------------------------------------------------------------------
  241. //001f36ca 测试结果输出一致 经过单元测试,功能正常
  242. void XMATH_QuatNormalize(TQuat *a1, TQuat *a2) {
  243. }
  244. //-------------------------------------------------------------------------------------------------
  245. //001f372c ^_^ 经过单元测试,功能正常
  246. void XMATH_QuatMultiply(TQuat *a1, TQuat *a2, TQuat *a3) {
  247. }
  248. //-------------------------------------------------------------------------------------------------
  249. //001f37c8 ^_^ 经过单元测试,功能正常
  250. void XMATH_EulerToQuat(int a1, int a2, int a3, TQuat *a4) {
  251. }
  252. //-------------------------------------------------------------------------------------------------
  253. //001F38B0
  254. float XMATH_SetQuatIdentity(TQuat *) {
  255. return 0.0;
  256. }
  257. //-------------------------------------------------------------------------------------------------
  258. //001f38d0 ^_^
  259. //??? 测试没有运行到,暂时无法验证正确性
  260. TPoint XMATH_RotatePoint(TPoint *a1, int a2) {
  261. TPoint ret;
  262. return ret;
  263. }
  264. //-------------------------------------------------------------------------------------------------
  265. //001f3934 ^_^ 经过单元测试,功能正常
  266. void XMATH_QuatRotateEuler(TQuat *a1, TPoint3D *a2) {
  267. }
  268. //-------------------------------------------------------------------------------------------------
  269. //001f396e ^_- 一处加法顺序不一样,但汇编意思是一样的;除法,我的是blx,原版是bl
  270. void XMATH_QuatSlerp(TQuat *a1, TQuat *a2, TQuat *a3, int a4) {
  271. }
  272. //-------------------------------------------------------------------------------------------------
  273. //001f3b66 ^_^ 没有运行,暂时无法测试
  274. void XMATH_QuatBlend(TQuat *a1, TQuat *a2, TQuat *a3, int a4) {
  275. LOGI("XMATH_QuatBlend 001f3b66");
  276. }
  277. //-------------------------------------------------------------------------------------------------
  278. //001F3B7A
  279. float XMATH_EaseInOut(int, int, int) {
  280. return 0.0;
  281. }
  282. //-------------------------------------------------------------------------------------------------
  283. //001F3B9E
  284. float XMATH_Power(int, int) {
  285. return 0.0;
  286. }
  287. //-------------------------------------------------------------------------------------------------
  288. //001F3BAE
  289. float XMATH_ClampAngle(int, int, int) {
  290. return 0.0;
  291. }
  292. //-------------------------------------------------------------------------------------------------
  293. //001F3BD4
  294. float XMATH_IsPowerOfTwo(int) {
  295. return 0.0;
  296. }
  297. //-------------------------------------------------------------------------------------------------
  298. //001F3BE8 //^_^
  299. int XMATH_Clamp(int d_r0, int d_r1, int d_r2) {
  300. return 0;
  301. }
  302. //-------------------------------------------------------------------------------------------------
  303. //001F3BF8
  304. float XMATH_Clampu8(uchar, uchar, uchar) {
  305. return 0.0;
  306. }
  307. //-------------------------------------------------------------------------------------------------
  308. //001F3C08 //^_^
  309. float XMATH_ClampFloat(float f0, float f1, float f2) {
  310. return 1.45f;
  311. }
  312. //-------------------------------------------------------------------------------------------------
  313. //001f3c36 ^_^ 经过单元测试,功能正常
  314. float XMATH_WrapFloat(float a1, float a2, float a3) {
  315. return 1.45f;
  316. }
  317. //-------------------------------------------------------------------------------------------------
  318. //001F3C80
  319. float XMATH_Wrap(int, int, int) {
  320. return 0.0;
  321. }
  322. //-------------------------------------------------------------------------------------------------
  323. //001F3C98
  324. float XMATH_WrapLimit(int, int, int) {
  325. return 0.0;
  326. }
  327. //-------------------------------------------------------------------------------------------------
  328. //001f3caa ^_^ 经过单元测试,功能正常
  329. int XMATH_MagSq(TPoint const *a1) {
  330. return 0;
  331. }
  332. //-------------------------------------------------------------------------------------------------
  333. //001F3CC8
  334. float XMATH_ClampMag(TPoint *, int) {
  335. return 0.0;
  336. }
  337. //-------------------------------------------------------------------------------------------------
  338. //001F3CF2
  339. float XMATH_ClampMagMin(TPoint *, int) {
  340. return 0.0;
  341. }
  342. //-------------------------------------------------------------------------------------------------
  343. //001f3d12 ^_^ 经过单元测试,功能正常
  344. int XMATH_DistanceSq(TPoint const *a1, TPoint const *a2) {
  345. return 1;
  346. }
  347. //-------------------------------------------------------------------------------------------------
  348. //001f3d38 //没有运行到,暂进无法验证正确性
  349. int XMATH_Distance3DSq(const TPoint3D *a1, const TPoint3D *a2) {
  350. LOGI("XMATH_Distance3DSq 001f3d38");
  351. return 1;
  352. }
  353. //-------------------------------------------------------------------------------------------------
  354. //001f3d78 ^_^ 经过单元测试,功能正常
  355. uint64_t XMATH_Distance(const TPoint *a1, const TPoint *a2) {
  356. LOGE("%p%p%x%x%x%x",a1,a2,a1->dx_0,a1->dy_4,a2->dx_0,a2->dy_4);
  357. return rand();
  358. }
  359. //-------------------------------------------------------------------------------------------------
  360. //001F3D94
  361. float XMATH_Distance3DF(TPointF3D *, TPointF3D *) {
  362. return 0.0;
  363. }
  364. //-------------------------------------------------------------------------------------------------
  365. //001F3DD4
  366. float XMATH_Interpolate(int, int, int, int, int) {
  367. return 0.0;
  368. }
  369. //-------------------------------------------------------------------------------------------------
  370. //001F3DF0
  371. float XMATH_InterpAngle(int, int, int, int, int) {
  372. return 0.0;
  373. }
  374. //-------------------------------------------------------------------------------------------------
  375. //001F3E18
  376. float XMATH_InterpolateFloat(float, float, float, float, float) {
  377. return 0.0;
  378. }
  379. //-------------------------------------------------------------------------------------------------
  380. //001f3e4a ^_^ 调用除法代码不一致 and bl blx 经过单元测试,功能正常
  381. // 001f3e4a ^_^ 调用除法代码不一致 and bl blx 经过单元测试,功能正常
  382. int XMATH_InterpolateClamp(int a1, int a2, int a3, int a4, int a5) {
  383. int v6;
  384. int v7;
  385. int v8;
  386. int v9;
  387. int v10;
  388. if (a2 != a3) {
  389. v6 = a5;
  390. v7 = a4;
  391. if (a2 > a3) {
  392. v7 = a5;
  393. v6 = a4;
  394. }
  395. v8 = v6 - v7;
  396. v9 = a2;
  397. if (a2 > a3) {
  398. v9 = a3;
  399. a3 = a2;
  400. }
  401. v10 = a1;
  402. if (a3 < a1)
  403. v10 = a3;
  404. if (v9 > a1)
  405. v10 = v9;
  406. //v9 = min(a2,a3)
  407. //v10 = max(a2,a1)
  408. //v10=min(a1)
  409. //v10 = max(v9,a1)
  410. a4 = v7 + ((long long)(v10 - v9)) * v8 / (a3 - v9);
  411. }
  412. return a4;
  413. }
  414. //-------------------------------------------------------------------------------------------------
  415. //001f3e92 ^_^ 经过单元测试,功能正常
  416. int XMATH_SinInterpolateClamp(int a1, int a2, int a3, int a4, int a5) {
  417. return 1;
  418. }
  419. //-------------------------------------------------------------------------------------------------
  420. //001f3eb8 ^_- 经过单元测试,功能正常
  421. // TODO 0x001f3eb8 ^_- 从xsin((int)temp)下一句汇编就不一样了,这边的汇编试了半天也无法和原版一样
  422. float XMATH_SinInterpolateClampFloat(float a1, float a2, float a3, float a4, float a5) {
  423. return 12.34534f;
  424. }
  425. //-------------------------------------------------------------------------------------------------
  426. //001F3F20
  427. float XMATH_InterpolatePos(TPoint *, int, int, int, TPoint, TPoint) {
  428. return 0.0;
  429. }
  430. //-------------------------------------------------------------------------------------------------
  431. //001f3f74 ^_^ 经过单元测试,功能正常
  432. void XMATH_InterpolatePos3D(TPoint3D *pt3d_1, int i2, int i3, int i4, TPoint3D tp3D5, TPoint3D tp3D6) {
  433. }
  434. //-------------------------------------------------------------------------------------------------
  435. //001f3ffc ^_^ 经过单元测试,功能正常
  436. void XMATH_SinInterpolatePos3D(TPoint3D *a1, int a2, int a3, int a4, TPoint3D a5, TPoint3D a6) {
  437. }
  438. //-------------------------------------------------------------------------------------------------
  439. //001F4084
  440. float XMATH_SetupRectI(TRectI *, int, int, int, int) {
  441. return 0.0;
  442. }
  443. //-------------------------------------------------------------------------------------------------
  444. //001F408E //^_^
  445. void XMATH_SetupRect(TRect *p_trect_r0, float x, float y, float w, float h) {
  446. }
  447. //-------------------------------------------------------------------------------------------------
  448. //001F409C
  449. float XMATH_WrapToBounds(int, int, int) {
  450. return 0.0;
  451. }
  452. //-------------------------------------------------------------------------------------------------
  453. //001F40AE
  454. float XMATH_RectOverlap(TRect, float, float, float, float) {
  455. return 0.0;
  456. }
  457. //-------------------------------------------------------------------------------------------------
  458. //001F4138
  459. float XMATH_RectOverlap(TRect, TRect) {
  460. return 0.0;
  461. }
  462. //-------------------------------------------------------------------------------------------------
  463. //001F41D4
  464. float XMATH_Dot_F(TPointF3D *, TPointF3D *) {
  465. return 0.0;
  466. }
  467. //-------------------------------------------------------------------------------------------------
  468. //001F41FE
  469. float XMATH_DotProduct(TPoint *, TPoint *) {
  470. return 0.0;
  471. }
  472. //-------------------------------------------------------------------------------------------------
  473. //001F4214 //^_^ 经过单元测试,功能正常
  474. uint XMATH_RGBDiff(uint ud_r0_arg, uint ud_r1_arg) {
  475. return 1;
  476. }
  477. //-------------------------------------------------------------------------------------------------
  478. //001F424C
  479. float XMATH_MaxF(float, float) {
  480. return 0.0;
  481. }
  482. //-------------------------------------------------------------------------------------------------
  483. //001F4268
  484. float XMATH_MinF(float, float) {
  485. return 0.0;
  486. }
  487. //-------------------------------------------------------------------------------------------------
  488. //001f4284 ^_^ 经过单元测试,功能正常
  489. bool XMATH_IsCrossingLine(int a1, int a2, int a3) {
  490. return false;
  491. }
  492. //-------------------------------------------------------------------------------------------------
  493. //001F42AA
  494. float XMATH_IsCrossingLine2D(TPoint, TPoint, TPoint, TPoint) {
  495. return 0.0;
  496. }
  497. //-------------------------------------------------------------------------------------------------
  498. //001F432C
  499. float XMATH_IsCrossingLineOneWay(int, int, int, int) {
  500. return 0.0;
  501. }
  502. //-------------------------------------------------------------------------------------------------
  503. //001F4344
  504. float XMATH_IsStayingOneSideOf(int, int, int, int) {
  505. return 0.0;
  506. }
  507. //-------------------------------------------------------------------------------------------------
  508. //001F435C
  509. float XMATH_IsStayingBetween(int, int, int, int) {
  510. return 0.0;
  511. }
  512. //-------------------------------------------------------------------------------------------------
  513. //001F4376
  514. float XMATH_IsPwrTwo(int) {
  515. return 0.0;
  516. }
  517. //-------------------------------------------------------------------------------------------------
  518. //001F438A //^_^ 经过单元测试,功能正常
  519. TPointF XMATH_GetCurvePosF(TPointF pf1, TPointF pf2, TPointF pf3, float f4) {
  520. TPointF ret;
  521. return ret;
  522. }
  523. //-------------------------------------------------------------------------------------------------
  524. //001F43E0
  525. float XMATH_CreateRandomIndexArray(int *, int) {
  526. return 0.0;
  527. }
  528. //-------------------------------------------------------------------------------------------------
  529. //001F4416
  530. float XMATH_ShuffleArray(ushort *, int) {
  531. return 0.0;
  532. }
  533. //-------------------------------------------------------------------------------------------------
  534. //001F4440
  535. float XMATH_CountNumDigits(int) {
  536. return 0.0;
  537. }
  538. //-------------------------------------------------------------------------------------------------
  539. //001F445C
  540. float XMATH_RoundToNearest(int, int) {
  541. return 0.0;
  542. }
  543. //-------------------------------------------------------------------------------------------------
  544. //001F4476 //^_^
  545. float XMATH_RoundFloatToNearestInt(float f_r0) {
  546. return floor(f_r0 + 0.5);
  547. }
  548. //-------------------------------------------------------------------------------------------------
  549. //001F449E //^_^ 经过单元测试,功能正常
  550. CFTTVector32 XMATH_CatmullRom(CFTTVector32 const &v1, // R1
  551. CFTTVector32 const &v2, // R2
  552. CFTTVector32 const &v3, // R3
  553. CFTTVector32 const &v4, // stack
  554. float f5) {
  555. CFTTVector32 vec;
  556. return vec;
  557. }
  558. //-------------------------------------------------------------------------------------------------
  559. //001F459E
  560. float XMATH_StringToYardInt(char const *) {
  561. return 0.0;
  562. }
  563. //-------------------------------------------------------------------------------------------------
  564. //001f4638 ^_^ 经过单元测试,功能正常
  565. int XMATH_ClipPathBounds(TPoint3D *a1, TPoint3D *a2, int a3, int a4, int a5, int a6) {
  566. int ret = 1;
  567. return ret;
  568. }
  569. //-------------------------------------------------------------------------------------------------
  570. //001F4680
  571. float XMATH_ClipPathBounds(TPoint *, TPoint *, int, int, int, int) {
  572. return 0.0;
  573. }
  574. //-------------------------------------------------------------------------------------------------