2012-01-22 5 views
2

선상 장치에서 나는 startPointendPoint 사이의 선을 그었습니다. 그 선을 그린 후 endPoint에서 90도를 그리기 시작합니다. 그래서 라인이 어떤 각도에있을 수 있기 때문에 내가 모르는 스크린상의 포인트를 만들어야합니다.선에서 90도 선 그리기

모두는 CGContextAddLineToPoint을 사용하여 프로그래밍되었습니다.

올바른 방향은 무엇입니까? 선 후 같은 길이 될 것입니다

X = endPoint.X + (startPoint.Y - endPoint.Y) 
Y = endPoint.Y + (endPoint.X - startPoint.X) 

: -

답변

1

전화 점은 A와 B를 알고, 사람이

C.

하지 않는 그런 다음 A와 B의 벡터는 다음과 같습니다

vec.x = B.x - A.x; 
vec.y = B.y - A.y; 

90도 2 차원 벡터를 회전하려면 , 구성 요소를 전환하고 하나를 무효화하십시오. 0이 아닌 t를 들어

C = B + t*rightVec; 

: 다음에서 위치 C를

rightVec.x = vec.y; 
rightVex.y = -vec.x; 

을 그리고 : 그래서 당신은 만들 수 있습니다.

1

라인 startPoint에 수직 인 라인을 그릴>endPoint는 라인 endPoint에서 시작하고에 의해 정의 된 점에 갈 필요 원래 줄로 시작하지만 90 도가됩니다. 처음 줄 끝에서 시작합니다.