달력

052012  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  




광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject : 안드로이드 디버깅하기

최종수정일 : 2012.05.25


안녕하세요~^^
안드로이드...개발하다가 정말 지쳐서 디버깅을 어떻게 할까 하다 하다 못해
Toast 를 고정적으로 띄워놓고, 값을 변경 시켜버리기로 하였습니다.

결국 Logcat 에서 100개 정도 뜨다가 안뜨는 그런 버그... 찾기도 힘들고 귀찮아서 -_-ㅋ
토스트로 해결을 해보자. 하였습니다.

물론 디버깅하는데 개발환경 및 등등등 에 따라서 저의 디버깅 방법이 맞지 않을 수 있으나,

뭐 저두 저 나름대로 편한대로 한거니깐. 써보시길,

by 퓨림노

글을 작성하겠습니다.
(스크린샷은 찍기 귀찮네요 ㅎㅎㅎㅎ)


1. Toast 를 화면의 고정적으로 띄우도록 하자.


    Handler m_handler = new Handler() {
        public void handleMessage( Message msg ){
            if( msg.what == 0 ){
                Toast.makeText( m_context, "Init Orientation Mode", Toast.LENGTH_SHORT).show();
            }
            else if( msg.what == 1 ){
                int angle = (int)msg.arg1;
               
                if( m_Msg == null ){                   
                    //m_Msg = Toast.makeText( m_context, "Angle = " + angle, Toast.LENGTH_SHORT);                   
                    m_Msg = Toast.makeText( m_context, (String)msg.obj, Toast.LENGTH_SHORT);
                }
                else{
                    m_Msg.setGravity(Gravity.BOTTOM | Gravity.RIGHT, 0, 0);                   
                    //m_Msg.setText( "Angle = " + angle );             
                    m_Msg.setText( (String)msg.obj );
                    m_Msg.show();
                }
            }   
        }
    };

Toast 의 return 되는 값을 저장해두고 값이 없어지는지 아닌지 확인을 합니다.

그리고 Toast 의 메시지를 setText() 함수를 사용하여 내용을 변경하도록 합니다.


자세한 설명은 소스가 짧기 때문에 안합니다~^^


            // test Toast Message
            String str = "init : " + (int)SensorInitAzimuth + ", Present : " + (int)SensorPresentAzimuth + ", diff : " + diff;
            Message msg = Message.obtain();
            msg.what = 1;
            msg.arg1 = (int)angle[2];//(int)(-presentImgAzimuth);
            msg.obj = (Object)str;
            m_handler.sendMessage(msg);

토스트내용 출력이야 당연히 아실꺼구...


그냥 그렇게 하면 됩니다.


저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노

귀찮은 관계로 글자만 올리도록 합니다. 


이클립스 메뉴,


Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Java -> Java Editor Text Font -> Change


아래 그림과 같이 수정하시면 됩니다. 




저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노




광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [Android,OpenGL,Java] Quaternion to Euler

최종수정일 : 2012.04.16

안녕하세요~^^

  Quaternion 을 Euler 로 변환하는 코드 입니다. 

by 퓨림노

글을 작성하겠습니다.

Reference URL 

http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm


위의 주소를 참조하시면 됩니다만!

코드를 수정할 때 Quaternion 이 normalized 되어 있다면, 위에 방식으로, 아니면 아래 방식으로 사용함.


01. normalized

public vector3f Quat2Angle(float x, float y, float z, float w) {

		double pitch, roll, yaw;

		double test = x * y + z * w;
		if (test > 0.499) { // singularity at north pole
			yaw = 2 * Math.atan2(x, w);
			pitch = Math.PI / 2;
			roll = 0;

			vector3f euler = new vector3f((float) pitch, (float) roll,
					(float) yaw);
			return euler;
		}
		if (test < -0.499) { // singularity at south pole
			yaw = -2 * Math.atan2(x, w);
			pitch = -Math.PI / 2;
			roll = 0;
			vector3f euler = new vector3f((float) pitch, (float) roll,
					(float) yaw);
			return euler;
		}
		double sqx = x * x;
		double sqy = y * y;
		double sqz = z * z;
		yaw = Math.atan2(2 * y * w - 2 * x * z, 1 - 2 * sqy - 2 * sqz);
		pitch = Math.asin(2 * test);
		roll = Math.atan2(2 * x * w - 2 * y * z, 1 - 2 * sqx - 2 * sqz);

		vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
		return euler;

	}

gg

01. non-normalized

	public vector3f Quat2Angle(float x, float y, float z, float w) {

		double pitch, roll, yaw;
		double sqw = w * w;
		double sqx = x * x;
		double sqy = y * y;
		double sqz = z * z;
		double unit = (sqx * sqy) + (sqz * sqw);
		double test = (x * y) + (z * w);

		// singularity at north pole
		if (test > 0.499 * unit) {
			pitch = 0.0;
			roll = 2.0 * Math.atan2(x, w);
			yaw = Math.PI / 2;
			vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
			return euler;
		}

		// singularity at south pole
		if (test < -0.499 * unit) {

			pitch = 0.0;
			roll = -2.0 * Math.atan2(x, w);
			yaw = Math.PI / 2;

			vector3f euler = new vector3f((float) pitch, (float) roll,(float) yaw);
			return euler;
		}

		// attitude = pitch (X Axis of OSG)
		// heading = roll (Y Axis of OSG)
		// bank = yaw (Z Axis of OSG)
		pitch = Math.atan2((2.0 * x * w) - (2.0 * y * z), -sqx + sqy - sqz + sqw);
		roll = Math.atan2((2.0 * y * w) - (2.0 * x * z), sqx - sqy - sqz + sqw);
		yaw = Math.asin(2.0 * test / unit);

		vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
		return euler;
	}*/


코드를 따라서 작성해보고, 위의 URL 에서 계산해서 검증할 수 있다. 

확인을 꼭 해보도록 하자. 

그리고 인터넷 소스는 항상 신뢰하지 말자. (수식을 보고 확인을 하고 넘어가도록 하자. )



다 읽었으면 배너 클릭! (뭐 못보면 할 수 없고...)


저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노