분류 전체보기
-
API를 활용한 반사벡터 구현Algorithm with C/Math 2020. 10. 3. 18:22
먼저, 아래의 영상을 보자. 이것이 우리가 만들 것이다. 위의 내용에 필요한 부분이 바로 반사벡터이다. 이에 대해 알아보자. 위의 그림과 같이 MoveVec이 있다고 가정하자. 공이 왼쪽 벽을 향해 부딪힌다는 경우. ( MoveVec은 우리는 알고 있다고 가정 ) 그러면 공의 반사벡터를 구할 수 있다. 먼저, 약간의 해답을 제시하면 공의 이동벡터인 MoveVec의 x방향과 y방향을 이용하면 구 할 수 있다. 그림을 좀 더 자세히 그려보면 이 된다. 위의 그림을 한 번만 더 자세히 그리면 아래와 같이 나타낼 수 있다. 이번에 공이 위쪽 벽에 부딪힌 경우에 대해서 간략적으로 그리면 즉, 위의 규칙을 통해서 다음과 같은 결론을 내릴수 있다. 공이 왼쪽과 오른쪽 벽에 충돌했다고 하면 공의 이동벡터는 ( -1* ..
-
API활용으로 공의 튀어오름을 구현(포물선 운동)Algorithm with C/Math 2020. 10. 3. 17:46
그래프와 공식 출처 http://terms.naver.com/entry.nhn?docId=941198&cid=47338&categoryId=47338 포물선 운동 수평면과 θ의 각으로 던져 올린 물체의 운동을 분석해 보면 수평 방향으로는 등속도 운동을 하고 연직 방향으로는 연직 위로 던져 올린 물체의 운동과 같음을 알 수 있다. ① 포물선의 식 : ② �� terms.naver.com 위 공식1번 포물선의 식을 다시 쓰면 아래와 같다. 변수들부터 정의하자. 아래의 변수들은 모두 전역 변수들이다. 구현한 세 함수들 위의 함수에서 공이 착지를 할 때마다 속도를 줄이는데, 이 줄어든 속도는 절대 0이하로 떨어지지 않기 때문에 (로직 상 속도를 25%씩 감소 시키는 방향으로 만들었기 때문) 적당히 작은 값 이하..
-
API를 활용한 이차함수를 이용해 점프 기능 만들기Algorithm with C/Math 2020. 10. 2. 17:17
a가 양수냐, 음수냐에 따라서 이차함수의 그래프의 개형이 달라진다. 그림 출처 : terms.naver.com/entry.nhn?docId=945470&cid=47324&categoryId=47324 이차함수의 그래프 [ 1. y = ax2의 그래프(a ≠ 0)] ⑴ 꼭짓점은 원점 (0, 0) ⑵ 대칭축: x = 0(y축) ⑶ a > 0이면 아래로 볼록 a < 0이면 위로 볼록 ⑷ |a|가 클수록 y축에 가깝다(폭이 좁다). [ 2. y = a(x - m)2 + n의 그래프] y = ax2의 terms.naver.com 글의 제목에서 말했듯이 이차함수를 게임에서 접목하는 부분은 점프를 만드는데 활용할 수 있다. 위의 식보다는 간편하게 위와 같이 쓰도록 하자. 위 식의 그래프를 그려보면, 아래와 같다. 보..
-
API를 활용한 점과 직선 사이의 거리Algorithm with C/Math 2020. 10. 1. 20:46
점과 직선 사이의 거리를 증명부터 해보자. 아래와 같이 직선과 직선 외부의 점 P가 있다고 하자. 점과 직선 사이의 거리를 증명해보자. 직선 PH의 기울기와 직선 m의 기울기를 각 각 구해보자. 두 직선의 기울기의 곱이 -1이 된다는 사실을 이용해서 식을 쓰면 점과 직선 사이의 거리를 구하는 함수 구현 프로그램상에서 구현하기 위해서 기존의 직선의 방정식에서 다음과 같은 방정식을 사용한다. y = ax + r 즉, 이항을 해서 다음의 형태로 바꾸어 주도록 하자. 즉, 직선을 일반형으로 표현하자. ax - y + r = 0 위의 공식에 a는 a를 대입하고, b대신 -1을 대입하고 c대신 r을 대입하면 된다. 즉, 기울기a와 r값만 구하면 된다. 구현에서 직선은 즉, 고정적이다. 즉, 직선은 시작점과 끝점을 ..
-
텍스트 입력 창과 다이얼 로그 창 만들기JAVA/GUI - Frame 2020. 10. 1. 10:56
문제 MessageTest.java를 만들고 Message 클래스에 아래와 같이 디자인을 하도록 하자. Label, TextField, Button을 GridLayout에 위치시키고 (메시지 : 텍스트필드, 아래쪽에 버튼) 버튼을 눌렀을 때, 다이얼로그 창으로 글자 나타내기 다이얼로그 닫기 버튼을 만들고 닫기 버튼을 클릭했을 때 다이얼로그 창 닫기 예시 위의 그림과 같이 창에 메시지를 입력하고 전송 버튼을 누르면 다이얼로그 창이 떠서 입력한 메시지를 보여준다. 그리고 다이얼 로그 창의 닫기 버튼을 누르면 다이얼로그는 사라진다. 여기서 다이얼 로그 창이 사라진다라는 개념보다는 보여지다 사라지게 구현하자. 윈도우 창과 다이얼 로그 창 모두 layout을 gridlayout을 적용해서 각 영역을 구분 짓도록 ..
-
텍스트 창 입력기JAVA/GUI - Frame 2020. 10. 1. 10:53
구현할 것 텍스트 입력창, 버튼, 레이블을 만들고 버튼을 클릭하면 텍스트 입력창 내용이 레이블에 나오도록 해보고 exit 버튼을 클릭하면 윈도우 창이 닫힌다. 예시 아래는 입력 전의 모습 아래는 입력하고 난 후에 send Message 버튼을 누르면 레이블에 입력한 내용이 나온다. 외형 구현 프로그램 살행결과 소스 파일 버튼의 기능 구현 (1). 익명을 통해 구현 (2). SimpleInput클래스가 인터페이스 상속을 통해 구현 (3). 별 개의 클래스를 만들어서 인터페이스 상속을 통해 구현 위의 세 구현 방식에 동일하게 아래의 내용을 임포트 해줘야 한다. (1). 익명을 통해 구현 SimpleInput 클래스의 생성자에서 각 버튼에 대한 이벤트를 등록한다. 위의 문장에 대해 분석해보면, ActionLi..
-
카드 레이 아웃(CardLayout) 만들기JAVA/GUI - Frame 2020. 10. 1. 10:52
실행결과 무엇을 만들었는지 잘 모르겠다. 만든 패널에 각 각의 컬러를 부여해보자. 필드로 색상정보를 가지고 있자. 색상의 수는 패널의 수와 같다. 추가된 부분은 아래와 같다. 프로그램 실행결과 소스 파일 위의 소스를 보면 알겠지만, 각 패널들마다 고유의 색을 지정했음을 알고 있다. 그러면 패널들을 하나씩 이동시켜보도록 하자. 구현의 방식은 2초 간격으로 보여지는 카드를 바꾸도록 한다. 이에 대한 내용은 DisplayCard 메소드가 하도록 하고, main 함수에서 호출되도록 한다. 아래의 내용이 이에 대한 것이다. 소스 파일 여기서 이벤트를 사용해보록 하자. 즉, 위에서는 적당한 시간이 흐르면 패널이 변경됨을 볼 수 있는데 이벤트를 사용하여 각 버튼을 누를 때마다 보여지는 카드가 바뀌게 만들어보자. 이벤..