예제 #1
0
  /**
   * Draws the phone.
   *
   * @param graphics
   */
  protected void paintComponent(Graphics graphics) {
    super.paintComponent(graphics);
    // g.drawString("This is my custom Panel!",(int)yawDegree,(int)pitch);

    Graphics2D g2 = (Graphics2D) graphics;
    // draw Line2D.Double

    double centerx = 100;
    double centery = 100;
    double centerz = -150;
    for (int i = 0; i < phone.length; i += 2) {
      if (i == 0) g2.setColor(Color.RED);
      if (i == 24) g2.setColor(Color.BLUE);

      Vector v1 = new Vector(phone[i]);
      Vector v2 = new Vector(phone[i + 1]);
      v1.rollpitchyaw(rollDegree, pitchDegree, yawDegree);
      v2.rollpitchyaw(rollDegree, pitchDegree, yawDegree);
      g2.draw(
          new Line2D.Double(
              centerx + (v1.x + movex) * centerz / (centerz - v1.y),
              centery - (v1.z + movez) * centerz / (centerz - v1.y),
              centerx + (v2.x + movex) * centerz / (centerz - v2.y),
              centery - (v2.z + movez) * centerz / (centerz - v2.y)));
    }

    if (mSensorSimulator.isShowAcceleration()) {
      // Now we also draw the acceleration:
      g2.setColor(Color.GREEN);
      Vector v1 = new Vector(0, 0, 0);
      Vector v2 = new Vector(accelx, accely, accelz);
      v2.scale(20 * ginverse);
      // Vector v2 = new Vector(1, 0, 0);
      v1.rollpitchyaw(rollDegree, pitchDegree, yawDegree);
      v2.rollpitchyaw(rollDegree, pitchDegree, yawDegree);
      g2.draw(
          new Line2D.Double(
              centerx + (v1.x + movex) * centerz / (centerz - v1.y),
              centery - (v1.z + movez) * centerz / (centerz - v1.y),
              centerx + (v2.x + movex) * centerz / (centerz - v2.y),
              centery - (v2.z + movez) * centerz / (centerz - v2.y)));
    }
  }