java-动态绘制多维数据集时出现问题

前端之家收集整理的这篇文章主要介绍了java-动态绘制多维数据集时出现问题 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个声明为的float数组camObjCoord.

public static float camObjCoord [] = new float [8000];

然后,我将其索引填充到一个类似以下内容的类中.

  1. public void addcube(float highx,float lowx,float highz,float lowz){
  2. //Constructing new cube...
  3. System.out.println("f = " + f);
  4. Global.cubes++;
  5. float y = 1.5f;
  6. System.out.println("highx = " + highx + "lowx = " + lowx + "highz = " + highz + "lowz = " + lowz);
  7. //FRONT
  8. camObjCoord[i] = lowx;
  9. i++;
  10. camObjCoord[i] = -y;
  11. i++;
  12. camObjCoord[i] = highz;
  13. i++;
  14. camObjCoord[i] = highx;
  15. i++;
  16. camObjCoord[i] = -y;
  17. i++;
  18. camObjCoord[i] = highz;
  19. i++;
  20. camObjCoord[i] = lowx;
  21. i++;
  22. camObjCoord[i] = y;
  23. i++;
  24. camObjCoord[i] = highz;
  25. i++;
  26. camObjCoord[i] = highx;
  27. i++;
  28. camObjCoord[i] = y;
  29. i++;
  30. camObjCoord[i] = highz;
  31. //BACK
  32. i++;
  33. camObjCoord[i] = lowx;
  34. i++;
  35. camObjCoord[i] = -y;
  36. i++;
  37. camObjCoord[i] = lowz;
  38. i++;
  39. camObjCoord[i] = lowx;
  40. i++;
  41. camObjCoord[i] = y;
  42. i++;
  43. camObjCoord[i] = lowz;
  44. i++;
  45. camObjCoord[i] = highx;
  46. i++;
  47. camObjCoord[i] = -y;
  48. i++;
  49. camObjCoord[i] = lowz;
  50. i++;
  51. camObjCoord[i] = highx;
  52. i++;
  53. camObjCoord[i] = y;
  54. i++;
  55. camObjCoord[i] = lowz;
  56. i++;
  57. //LEFT
  58. camObjCoord[i] = lowx;
  59. i++;
  60. camObjCoord[i] = -y;
  61. i++;
  62. camObjCoord[i] = highz;
  63. i++;
  64. camObjCoord[i] = lowx;
  65. i++;
  66. camObjCoord[i] = y;
  67. i++;
  68. camObjCoord[i] = highz;
  69. i++;
  70. camObjCoord[i] = lowx;
  71. i++;
  72. camObjCoord[i] = -y;
  73. i++;
  74. camObjCoord[i] = lowz;
  75. i++;
  76. camObjCoord[i] = lowx;
  77. i++;
  78. camObjCoord[i] = y;
  79. i++;
  80. camObjCoord[i] = lowz;
  81. i++;
  82. //RIGHT
  83. camObjCoord[i] = highx;
  84. i++;
  85. camObjCoord[i] = -y;
  86. i++;
  87. camObjCoord[i] = lowz;
  88. i++;
  89. camObjCoord[i] = highx;
  90. i++;
  91. camObjCoord[i] = y;
  92. i++;
  93. camObjCoord[i] = lowz;
  94. i++;
  95. camObjCoord[i] = highx;
  96. i++;
  97. camObjCoord[i] = -y;
  98. i++;
  99. camObjCoord[i] = highz;
  100. i++;
  101. camObjCoord[i] = highx;
  102. i++;
  103. camObjCoord[i] = y;
  104. i++;
  105. camObjCoord[i] = highz;
  106. i++;
  107. //TOP
  108. camObjCoord[i] = lowx;
  109. i++;
  110. camObjCoord[i] = y;
  111. i++;
  112. camObjCoord[i] = highz;
  113. i++;
  114. camObjCoord[i] = highx;
  115. i++;
  116. camObjCoord[i] = y;
  117. i++;
  118. camObjCoord[i] = highz;
  119. i++;
  120. camObjCoord[i] = lowx;
  121. i++;
  122. camObjCoord[i] = y;
  123. i++;
  124. camObjCoord[i] = highz;
  125. i++;
  126. camObjCoord[i] = highx;
  127. i++;
  128. camObjCoord[i] = y;
  129. i++;
  130. camObjCoord[i] = lowz;
  131. i++;
  132. //BOTTOM
  133. camObjCoord[i] = lowx;
  134. i++;
  135. camObjCoord[i] = -y;
  136. i++;
  137. camObjCoord[i] = highz;
  138. i++;
  139. camObjCoord[i] = lowx;
  140. i++;
  141. camObjCoord[i] = -y;
  142. i++;
  143. camObjCoord[i] = lowz;
  144. i++;
  145. camObjCoord[i] = highx;
  146. i++;
  147. camObjCoord[i] = -y;
  148. i++;
  149. camObjCoord[i] = highz;
  150. i++;
  151. camObjCoord[i] = highx;
  152. i++;
  153. camObjCoord[i] = -y;
  154. i++;
  155. camObjCoord[i] = lowz;
  156. i++;
  157. int p = 0;
  158. System.out.println("FULL ARRAY");
  159. while(p < 72){
  160. System.out.println(camObjCoord[p]);
  161. p++;
  162. }
  163. }

然后我打电话给makeview()

  1. public void makeview() {
  2. Intent myIntent = new Intent(this,GLCamTest.class);
  3. Bundle b = new Bundle();
  4. b.putFloatArray("tweets",camObjCoord);
  5. myIntent.putExtras(b);
  6. this.startActivity(myIntent);
  7. }

然后在新课程中…

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. Bundle b = this.getIntent().getExtras();
  4. float original[] = b.getFloatArray("tweets");
  5. camObjCoord = original;
  6. counter++;
  7. }

然后,我还有另一个类GLLayer,它的外观如下所示.http://pastebin.org/394884在该类中,我正在从float数组中绘制多维数据集,我已经检查过了,并且确实存在多维数据集的值,当我m在其中编码数组可以工作,但是当我动态构建数组然后将其传递时,立方体无法绘制.我这样叫课.

  1. glView=new GLLayer(this);
  2. mPreview = new CamLayer(this,glView);

有人知道为什么吗?我该如何解决我的问题?只是要补充一点,我在动态绘制时将完全相同的值赋予完全相同的索引

  1. final static float camObjCoord[] = new float[] {
  2. // FRONT
  3. -2.0f,-1.5f,2.0f,-2.0f,1.5f,// BACK
  4. -2.0f,// LEFT
  5. -2.0f,// RIGHT
  6. 2.0f,// TOP
  7. -2.0f,// BOTTOM
  8. -2.0f,};

然后它将渲染此多维数据集.似乎不喜欢我先创建数组,然后动态添加索引.为什么?我该如何解决?为了获得奖励,我还将接受一个适用于Android的适当解决方法.

谢谢.

edit1:我尝试过各种事情,如果不是像这样声明数组,那不是数组的传递导致问题.

edit2:我也尝试过将数组放入GLLayer(渲染多维数据集的类)时进行打印,一切都与您期望的一样.我不知道为什么这些立方体不会出现:(

edit3:我已经添加了如何构造float数组.

edit4:我也尝试将数组的大小设置为等于我输入的值的数量.不起作用

最佳答案
我会稍微减少这个问题.如果您要使数组足够大以仅容纳一个多维数据集,并以相同的方式填充它(但仅填充一次),那么它将起作用吗?如果您将它放大到足以容纳两个多维数据集,并为其提供两个多维数据集的数据该怎么办?

猜你在找的Android相关文章