XMATH.cpp 23 KB

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