我有一个二进制文件,我逐字节读取.
我遇到了一个8字节长的部分,持有一个双精度浮点数(小端).我无法弄清楚如何读取它并使用遮罩和/或铸造正确计算它.
(具体来说,文件类型是.LAS,但这不重要).
有没有Java技巧?
我试图做的一个MenuItems对我Menu有勾号的能力,但它似乎并没有工作.MenuItems除了勾选标记显示外,其他所有功能都有效.我究竟做错了什么?
MenuItem actionPickMode = menu.add(0, 3, 0, "pickmode");
actionPickMode.setTitle("Pick Mode");
actionPickMode.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT
| MenuItem.SHOW_AS_ACTION_ALWAYS);
actionPickMode.setVisible(true);
actionPickMode.setCheckable(true);
Run Code Online (Sandbox Code Playgroud) 我使用Android OpenGL-ES 2.0并且考虑到它带来的所有限制,我无法弄清楚如何将2D屏幕触摸带到我拥有的3D点上.我无法得到正确的结果.
我正在尝试将射线射入点云,然后我可以比较我的点与光线的距离,找到最近的点.
public class OpenGLRenderer extends Activity implements GLSurfaceView.Renderer {
public PointCloud ptCloud;
MatrixGrabber mg = new MatrixGrabber();
...
public void onDrawFrame(GL10 gl) {
gl.glDisable(GL10.GL_COLOR_MATERIAL);
gl.glDisable(GL10.GL_BLEND);
gl.glDisable(GL10.GL_LIGHTING);
//Background drawing
if(customBackground)
gl.glClearColor(backgroundRed, backgroundGreen, backgroundBlue, 1.0f);
else
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
if (PointCloud.doneParsing == true) {
if (envDone == false)
setupEnvironment();
// Clears the screen and depth buffer.
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluPerspective(gl, 55.0f, (float) screenWidth / (float) screenHeight, 10.0f ,10000.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, eyeX, eyeY, eyeZ,
centerX, centerY, …Run Code Online (Sandbox Code Playgroud) 我一直在努力使用
gl.glDrawElements(GL10.GL_POINTS, 4, GL10.GL_UNSIGNED_BYTE, vertexBuffer);
Run Code Online (Sandbox Code Playgroud)
使用顶点缓冲区在我的屏幕上绘制4个点,但我无法使其工作.我想绘制的只是点数,因为最终我想做一个点云显示.如果我有大量的点(最终),顶点缓冲区的方式是什么?它们不会改变,但我想改变它们被观察的视角和尺度.
vertexBuffer设置:
private float vertices[] = {
-3.0f, 1.0f, -2.0f, // 0, Top Left
-3.0f, -1.0f, 0.0f, // 1, Bottom Left
-2.0f, -1.0f, -2.0f, // 2, Bottom Right
-2.0f, 1.0f, 0.0f, // 3, Top Right
};
// Our vertex buffer.
private FloatBuffer vertexBuffer;
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);
Run Code Online (Sandbox Code Playgroud)
这是我当前对我的点的绘制调用(我不想索引,因为形状绘制顺序对我来说无关紧要):
public void draw(GL10 gl) {
// Enabled the vertices buffer for writing and to be used during …Run Code Online (Sandbox Code Playgroud) 我正在尝试打开一个既有an image又有的窗口buttons.但我似乎无法弄清楚如何添加按钮.图像显示大和菜单工作正常,但不管我在哪里添加按钮(进入JLabel,JPanel或JFrame),它不会永远显示...
主要:
public static void main(String[] args) {
GUI myGUI = new GUI();
myGUI.show();
}
Run Code Online (Sandbox Code Playgroud)
GUI类:使用菜单时调用openImage.然后显示图像,但没有按钮.
private JFrame myFrame;
private JPanel myPanel;
private JLabel myLabel;
public GUI()
{
myFrame = new JFrame();
initializePanel();
}
public void show()
{
myFrame.setSize(600,600);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.addMouseListener(this);
setupMenu(myFrame);
myFrame.setVisible(true);
}
private void initializePanel()
{
myPanel = new JPanel();
myPanel.setPreferredSize(new Dimension(500,500));
//myPanel.setLayout(new BorderLayout());
}
private void openImage(String fileName)
{
try {
myImage = ImageIO.read(new File(fileName));
} …Run Code Online (Sandbox Code Playgroud) 现在,我正在通过以下调用启动Google地图应用程序:
String geoAddress = "maps.google.com/maps?q=";
geoAddress += LatLong[0] + "," + LatLong[1];
Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(geoAddress));
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
这将打开标记并将其放置在地图上的指定位置.我有两个问题:
1)如何放置多个具有经度/纬度的标记?
2)如何将地图应用程序启动到其他模式(地形/卫星/等)?
谢谢!
android ×4
java ×2
opengl-es ×2
checkbox ×1
depth-buffer ×1
endianness ×1
google-maps ×1
image ×1
jframe ×1
jpanel ×1
matrix ×1
parsing ×1
picking ×1
point-clouds ×1
precision ×1
swing ×1