리습 각도 문의 드립니다.
컨텐츠 정보
- 875 조회
- 6 댓글
- 0 추천
- 0 비추천
- 목록
본문
안녕하세요. 리습 각도 문의 드립니다.
그림에서 p1 p2 사이의 각도를 a1이라 하면 (setq a1 ( angle p1 p2)) 이건 알겠습니다.
그런데. p1 p2 의 직선에서 p1 기준으로 직각인 p3의 각도를 a2라고 하면
제 짧은 지식으로 (setq a2 (polar a1 ( – (/ pi 2))) 하고 (setq a2 (+ a1 (/ pi 2))) 이렇게 해봤는데, 안되더라고요.
이걸 어떻게 표현하는지 알려주시면 감사하겠습니다.
구글 번역 돌려가면 계속 찾아보는데, 도저히 제 실력으로는 못찼겠네요. .
관련자료
penpen07님의 댓글
설명이 불분명해서 정확히 이해한지는 모르겠으나, 첨부 이미지에서 p1-p3을 잇는 선분의 각도를 구하고 싶다는 내용으로 이해했습니다.
polar라는 함수는 특정 점에서 일정 각도로, 일정 거리만큼 떨어진 점의 좌표를 구하는 함수입니다. (polar pt ang dist)의 구조로 사용해야 하며, 생략할 수 있는 변수는 없습니다. 이는 도움말에 나오는 내용이니, 리습을 공부할 생각이 있다면 도움말을 읽어보세요.
(polar (getpoint) (/ pi 2) 10) 이런 양식으로 사용하는 함수입니다.
구하고자 하는 값은 각도이기 때문에 polar는 사용할 필요가 없어요.
오토캐드에서 각도는 X축의 양의 방향을 기준삼아 시계 반대 방향(Counter ClockWise)으로 측정합니다. p1-p2를 잇는 선분과 p2-p1을 잇는 선분은 각도가 다르죠. 측정하는 방향이 다르기 때문입니다.
p1-p3의 선분은 p1-p2 선분의 각도에서 90도를 뺀 값이므로, (setq a2 (- a1 (/ pi 2)))로 계산하면 됩니다.
고개발님의 댓글
삼각함수네요~ x, y 100, 100일때
(defun c:angle () (setq x 100.0 y 100.0) (setq p1 (list 0 0 ) p2 (list x y)) (setq angra (angle p1 p2)) (setq angdo (angtos angra 0 2)) (prompt “n 라디안 각도” ) (prin1 angra) (prompt “n 각도 문자값” ) (prin1 angdo) (prompt “n 각도 숫자값” ) (prin1 (atof angdo)) (princ))