Advertisement
Guest User

Untitled

a guest
Dec 16th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.99 KB | None | 0 0
  1. private void transform(int transformation, int[] groups, int xOffset, int yOffset, int zOffset) {
  2. int count = groups.length;
  3. if (transformation == FrameConstants.CENTROID_TRANSFORMATION) {
  4. int vertices = 0;
  5. centroidX = 0;
  6. centroidY = 0;
  7. centroidZ = 0;
  8. for (int index = 0; index < count; index++) {
  9. int group = groups[index];
  10. if (group < vertexGroups.length) {
  11. for (int vertex : vertexGroups[group]) {
  12. centroidX += vertexXCoordinate[vertex];
  13. centroidY += vertexYCoordinate[vertex];
  14. centroidZ += vertexZCoordinate[vertex];
  15. vertices++;
  16. }
  17. }
  18. }
  19.  
  20. if (vertices > 0) {
  21. centroidX = centroidX / vertices + xOffset;
  22. centroidY = centroidY / vertices + yOffset;
  23. centroidZ = centroidZ / vertices + zOffset;
  24. } else {
  25. centroidX = xOffset;
  26. centroidY = yOffset;
  27. centroidZ = zOffset;
  28. }
  29. } else if (transformation == FrameConstants.POSITION_TRANSFORMATION) {
  30. for (int index = 0; index < count; index++) {
  31. int group = groups[index];
  32. if (group < vertexGroups.length) {
  33. for (int vertex : vertexGroups[group]) {
  34. vertexXCoordinate[vertex] += xOffset;
  35. vertexYCoordinate[vertex] += yOffset;
  36. vertexZCoordinate[vertex] += zOffset;
  37. }
  38. }
  39. }
  40. } else if (transformation == FrameConstants.ROTATION_TRANSFORMATION) {
  41. for (int group : groups) {
  42. if (group < vertexGroups.length) {
  43. for (int vertex : vertexGroups[group]) {
  44. vertexXCoordinate[vertex] -= centroidX;
  45. vertexYCoordinate[vertex] -= centroidY;
  46. vertexZCoordinate[vertex] -= centroidZ;
  47. if (zOffset != 0) {
  48. int sin = SINE[zOffset];
  49. int cos = COSINE[zOffset];
  50. int x = vertexYCoordinate[vertex] * sin + vertexXCoordinate[vertex] * cos >> 16;
  51. vertexYCoordinate[vertex] = vertexYCoordinate[vertex] * cos - vertexXCoordinate[vertex] * sin >> 16;
  52. vertexXCoordinate[vertex] = x;
  53. }
  54. if (xOffset != 0) {
  55. int sin = SINE[xOffset];
  56. int cos = COSINE[xOffset];
  57. int y = vertexYCoordinate[vertex] * cos - vertexZCoordinate[vertex] * sin >> 16;
  58. vertexZCoordinate[vertex] = vertexYCoordinate[vertex] * sin + vertexZCoordinate[vertex] * cos >> 16;
  59. vertexYCoordinate[vertex] = y;
  60. }
  61. if (yOffset != 0) {
  62. int sin = SINE[yOffset];
  63. int cos = COSINE[yOffset];
  64. int x = vertexZCoordinate[vertex] * sin + vertexXCoordinate[vertex] * cos >> 16;
  65. vertexZCoordinate[vertex] = vertexZCoordinate[vertex] * cos - vertexXCoordinate[vertex] * sin >> 16;
  66. vertexXCoordinate[vertex] = x;
  67. }
  68. vertexXCoordinate[vertex] += centroidX;
  69. vertexYCoordinate[vertex] += centroidY;
  70. vertexZCoordinate[vertex] += centroidZ;
  71. }
  72.  
  73. }
  74. }
  75. return;
  76. } else if (transformation == FrameConstants.SCALE_TRANSFORMATION) {
  77. for (int index = 0; index < count; index++) {
  78. int group = groups[index];
  79. if (group < vertexGroups.length) {
  80. for (int vertex : vertexGroups[group]) {
  81. vertexXCoordinate[vertex] -= centroidX;
  82. vertexYCoordinate[vertex] -= centroidY;
  83. vertexZCoordinate[vertex] -= centroidZ;
  84.  
  85. vertexXCoordinate[vertex] = vertexXCoordinate[vertex] * xOffset >> 7;
  86. vertexYCoordinate[vertex] = vertexYCoordinate[vertex] * yOffset >> 7;
  87. vertexZCoordinate[vertex] = vertexZCoordinate[vertex] * zOffset >> 7;
  88.  
  89. vertexXCoordinate[vertex] += centroidX;
  90. vertexYCoordinate[vertex] += centroidY;
  91. vertexZCoordinate[vertex] += centroidZ;
  92. }
  93. }
  94. }
  95. }
  96. if (transformation == FrameConstants.ALPHA_TRANSFORMATION && faceGroups != null && faceAlphas != null) {
  97. for (int index = 0; index < count; index++) {
  98. int group = groups[index];
  99. if (group < faceGroups.length) {
  100. for (int face : faceGroups[group]) {
  101. faceAlphas[face] += xOffset * 8;
  102. if (faceAlphas[face] < 0)
  103. faceAlphas[face] = 0;
  104. if (faceAlphas[face] > 255)
  105. faceAlphas[face] = 255;
  106. }
  107. }
  108. }
  109. }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement