위에 글에서 나온 검사기를 어떻게 만들었지 보기위해서
일단 어떤식으로 되어있는지 알아야 한다.
아래에 예시를 6개 이미지로 보여준다.( 꼭 아래 도형만 있지는 않다는걸 알았두면 좋겠다.)
위에 6개 이미지로 간략하게 어떤 검사기를 만드는지 알 수 있다.
프로그램에서 내가 알아낼 수있는 자료들은 3가지다.
1. Shape의 모양의 좌표들.
2. pin의 좌표와 반지름
이 정보들만 가지고 어떻게 검사를 할 수 있을까?
일단 먼저 내가 한일은 저 정보들을 배열에다 넣는 과정을 처리했다.
1. shape 선들의 배열
2. pin들의 모인 배열
1. shape 배열을 만들때 나는 백터로 만들어 넣는다.
[7 그림]에서 1. (0 0) (-1 1) 을 보면 ↖방향을 가진것을 알 수 있다.
모든 선을 방향으로 표시하면
앞으로 방향을 백터로 표현하겠습니다.
왜 굳이 방향으로 하냐고 묻는다면
1. 백터라는 정보를 하나더 추가 할 수있다.
2. 이 백터를 통해서 비교할 식을 만들 수있다.
3. 가장 중요할 수도 있는 답인데 시계방향 반시계방향인지 구별할때 필요하다.
지금 9그림을 눈으로 보면 시계방향인것을 알 수 있다.
하지만 모든 shape를 뽑았을때 시계방향으로 뽑히지는 않는다.(이유는모름. 나는 다 시계방향으로 뽑히는걸로 알고 만들었다 반시계 방향으로 뽑히는 shape가 있어 고생했다.)
이것을 통해 배열을 만들어 보면
이런식으로 나온다.
pin의 정보를 배열로 만들면
[10 그림]은 1열 2열 3열 4열 5열 6열(6열은 나중에)
x1 y1 x2 y2 Vec 0
[11 그림]은 1열 2열 3열
x y r
[10 11그림]들은 보기 쉽게 열단위로 보기 쉽게 나열했지만(나는 항상 이렇게 만들어왔다. 하지만 이번 일로 바뀌었다. )
사실 vba에서는 열단위로 생성해야 하기 때문에 저런식으로 집어 넣지 못한다.
설명하면 [그림 11] 배열을 만들때 Array(1,3) 에
Array(1,1) = 2.6419
Array(1,2) = 98.0622
Array(1,3) = 0.3002
이렇게 한 열이 끝나면
Array(2,3) 을 추가 생성해
(4.6419 98.0622 0.3002) 넣을수가 없다.
VBA에서는 이 방법이 안된다.
즉, Array(n,3) n을 늘리면서 만들지 못한다.
대신
Array(3,1) 을 만들어
Array(1,1) = 2.6419
Array(2,1) = 98.0622
Array(3,1) = 0.3002
만들고 Array(3,2) 추가해
Array(1,2) = 4.6419
Array(2,2) = 98.0622
Array(3,2) = 0.3002
이런식으로 만든다.
즉, Array(3,n) n을 늘리면서 만들수 있다.
1차원배열 할때는 이런 생각은 못하고 만들었지만(stack)
2차원배열로 가니 이방식아니면 안되었다.
오늘은 여기까지 검사 과정과 정보를 배열에 담는것까지 하겠습니다.
감사합니다.
'프로그래밍(Programing) > 엑셀매크로_vba(Excel-Macro)' 카테고리의 다른 글
도형(Shape)의 통로(Lane) 체크하기_02 (0) | 2021.12.21 |
---|---|
도형(Shape)의 통로(Lane) 체크하기_03 (0) | 2021.12.21 |
도형(Shape)의 통로(Lane) 체크하기_서론 (0) | 2021.12.20 |
재귀호출 2. 퀵정렬(Quick Sort) 및 코딩 방법 (0) | 2021.11.01 |
재귀호출(Recursive Call) 1. 내 생각 (0) | 2021.10.30 |